Origins of G02.ME
The G02.ME project was started at a Google Hack-a-Thon in Seattle in August of 2008. I wanted to develop a project I could "implement in a day" - and at least have something basic working. Since I had just purchased the domain "g02.me" (yes, I have a domain acquisition habit), why not implement another TinyURL clone?[BTW, G02.ME is spelled "G-ZERO-TWO-DOT-ME" - though I pronounce it "GO TO ME"]
TinyURL and the History of URL Shortening Services
For those not familiar with TinyURL, it's a URL shortening service. For a variety of reasons, people often want to send URL's (web links) to friends, but the original is too long. Sites like TinyURL create an alias to the original URL that is much shorter, so they can be sent in email or IM messages much more easily.
The original TinyURL was created by Kevin "Gilby" Gilbertson in 2002. In this interview in 2006, he was asked about his plans for the site. ZDNet reporter, David Berlind, thought there could be a lot of business potential behind sites like his, but Gilby seemed reluctant to piss off his user base by selling out to commercial interests. Gilby had a long list of features he wanted to implement, but he doesn't seem to have progressed on that much over the last 2 years.
Today there are an explosion of TinyURL competitors, each with a different set of features (in a future blog post, I will try to provide a detailed feature comparison of the field). The most popular I've found are:
- TinyURL (Alexa 880)
- snipurl.com (Alexa 10,953)
- ShortURL (Alexa 13,904)
- Metamark (Alexa 23,617)
- bit.ly (Alexa 24,350)
- notlong Alexa 29,682)
- is.gd (Alexa 33,617)
Goals and Features of G02.ME
The primary purpose of G02.ME was to help me become more familiar with the Google App Engine platform, as well as be an experimental playground for me to explore some ideas I've had about building web services and user interfaces.
The features that differentiate G02.ME from TinyURL are:
- G02.ME directs users to a page that has an Info Panel above the main site page. The info panel allows you to get information about the page, and interact with other users that are visiting the G02.ME shortened link.
- G02.ME displays Analytics about the link, including the number of times it's been viewed, and how many times people have shared the link with others.
- G02.ME allows anyone to add comments in the Info Panel to encourage discussing and interaction around the link you're sharing. For the moment, these are all public comments, which can be contributed anonymously or credited to your chosen user name.
- G02.ME allows you to associate tags with a given link. You can then visit a tag summary page that displays all the links that have been associated with that tag.
- G02.ME calculates the current popularity of every link in real-time. By visiting the G02.ME home page you can see which links have been shared, viewed, and commented on the most. I'll describe the popularity algorithm in more detail in a future post.
- G02.ME has a rich JSON API. Virtually all the data and updates can be scripted via a REST/JSON API to the service.
Product Design Philosophy
The design elements I wanted to explore in the creation of G02.ME are:
- Keep the user interface spare and clean. Maximize the amount of information and functionality, but keep the use of extraneous visual elements to a minumum (this goal is partially driven by the fact that this is a one-man project, and I have limited design skills).
- I wanted to see how far I could go by using a text-entry centric design. G02.ME basically has a command line interface. Users have to learn a data entry format for comments that let them create a user name, and add free-form tags to their links. I have a fundamental belief that humans are very adaptable, and that they can be taught to learn any interface. Text-based interfaces are also quite efficient and fast to use. So, while it will appeal to a more geeky audience, G02.ME provides a lot of power within a single text input box.
- G02.ME is also an open source project. I'm developing G02.ME in real-time and exposing the source code as I develop it. Firstly, I like this form of incremental improvement - shipping features frequently, and (hopefully) getting feedback from users to drive further improvements. Secondly, I hope that other developers can learn from this as a sample project in seeing how I've tackled problems in the App Engine environment.
Future Goals and Features
G02.ME has been a bit of a distraction from a larger project I started last year (PageForest). But there are still a few features to add and bugs to fix before I set it aside and return my focus to PageForest. I hope to get feedback here on this blog or as posted issues on the open source project. I would even invite contributions from other developers if anyone is so inclined.
The following features are on my immediate task list:
- Site Security - Today, G02.ME has a completely open/anonymous user interface - there is no need to create a registered account. I'll be offering the option to register, and thereby provide some security for your personal data (now your comments can be deleted by other users). I also have more work to do to secure the JSON API from abuse.
- Tag Cloud - I'll be adding ranking to tags and displaying the most frequently used tags on the home page.
- More Analytics - I want to show more about where users are coming from when they click on a G02.ME link. I can also display some information about whether sites are trending up or down in popularity.