The Data Basket UI design shows shortened URLs (eg "RS.ly/MK3CD").
Such functionality was not discussed in the spec, but was accepted as a given during the UI design discussion.
Here we will put the design decisions about how we'll implement URL shortening.
URL Shortening Disadvantages
Shortened URLs have many disadvantages including unreadability, reduction of trust, instability, overhead traffic, and security risks.
- http://rield.com/faq/why-url-shorteners-are-bad : an excellent page discussing all aspects of shortened URLs.
- http://sebastians-pamphlets.com/category/s-url/ : an emotional article including numerous links to other pages criticizing this practice.
Includes phrases such as
- Twitter decided to break the Web by raping all of its URIs. Twitter’s sloppy URI gangbang became the Web’s biggest and most disgusting clusterfuck in no time.
- What if the great chief of Libya all of a sudden decides that gazillions of bit.ly-URIs redirecting punters to their desired smut aren’t exactly compatible to the Qur’an? All your bit.ly URIs will be defunct over night.
- Goo.gl (by Google)... promises stability, security, and speed. Well, at the day it launched, I broke it with recursive chains of redirects, and meanwhile creative folks ... wrote a guide on “hacking goo.gl for fun and profit”
The fact that you can surmise what the above pages are about is a simple example why shortened URLs should not be used
URL Shortening Software
- the penultimate section describes Free & Open-Source URL Shortening Software.
- the last section has Further Readings, including
Free URL Shortener Comparison Spread Sheet (spreadsheets.google.com)
URL Shorteners: Which Shortening Service Should You Use?
While doing evil, reluctantly: Size, er trust matters
How to cleverly integrate your own URI shortener
- speed and reliability comparison http://royal.pingdom.com/2010/10/29/is-goo-gl-really-the-fastest-url-shortener-chart/ http://gregable.com/2010/09/googl-url-shortenere.html
Stateful or Stateless
The key question is whether to:
- use a state-full service (i.e. save the redirects),
- or a functional service (i.e. use a 1:1 mapping based on a hash, with no need to store state).
Since we won't let the user select the short URL (a "vanity keyword"), it's better to use a 1:1 mapping
Internal or External
Should we deploy our own service, or use an external service?
I think internal, because:
- see the explanations about security risks and instability
- we'd need to access the external service somehow, and perhaps maintain the mappings
- such service is not very complicated
If external, which one should we select? I'd go with goo.gl
If we decide to go with internal software, then we need to get an actual domain, establish DNS record, and setup a redirector. This is required for short URLs to be resolvable (to work).
Examples of shortening domains include:
- tinyurl.com, snurl.com
- bit.ly, ow.ly
These are Top Level Domains (TLD), belonging to some country. Eg bit.ly is Lybia (silly!) and goo.gl is Greenland.
To get such domain, one should follow the specific procedures of the respective TLD authority.
The UI mockup uses domain "RS.ly" which is modeled after "bit.ly" but the abbreviation doesn't make much sense.
We could get a domain such as prj.rs (stands for "researchspace project"); rs is the Republic of Serbia TLD.
Could also use subdomains per project, eg rembrndt.prj.rs, bm.prj.rs, etc.
TODO Dominic: Decide about domain
TODO: trial and select some software, describe how we'd deploy it
Storing and Processing
- Need two properties for full and shortened URL.
- display the full URL in tooltip
- describe that RS URIs are not resolvable yet, so maybe we should use a fixed short form such as "uri.rs"