Skip to end of metadata
Go to start of metadata


The Data Basket UI design shows shortened URLs (eg "").
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.


Shortened URLs have many disadvantages including unreadability, reduction of trust, instability, overhead traffic, and security risks.

The fact that you can surmise what the above pages are about is a simple example why shortened URLs should not be used


References :

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

Domain, Resolving

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:


These are Top Level Domains (TLD), belonging to some country. Eg is Lybia (silly!) and is Greenland.
To get such domain, one should follow the specific procedures of the respective TLD authority.


  • The UI mockup uses domain "" which is modeled after "" but the abbreviation doesn't make much sense.
    Also, I don't think it's a good idea to deal with Lybia
  • We could get a domain such as (stands for "researchspace project"); rs is the Republic of Serbia TLD.
    Could also use subdomains per project, eg,, etc.
  • If we select
    • is it ok if our URLs are random, i.e
    • maybe we could get and "reserve" a prefix, so our short URLs are or

TODO Dominic: Decide about domain


TODO Ceco:

  • research and trial some open source software (java!)
  • research and see how RS could use it (what is the API?).
    Is it possible to "reserve" a prefix?
  • describe how we'd deploy the sofware, or use

Possible solution that I found and tested:

  1. tinyURL  Service
  • easy for use and deploy
  • open-source


1.1. Download the javaQuery API

1.2. Import downloaded jar to the project build path

1.3. Invoke

tinyURL tU = new tinyURL();


1.4. Result

2. Service


2.1.  I found a simple class that changes the given String Object (the url) to a short and easy to remember URL.

To work we need to download  GSON library -

(gson - convert Java Objects into their JSON representation)

2.2. Add the main jar to the build path – the test was made on 08.14.2012, main jar was


2.3. Import in the project next java file that I upload ( 

2.4. Invoke


2.5.  Result

Note: From result  1.4 and 2.4, shortening url(SU) working but the prefix is based on SU service provider,  we can’t reserve ours;

The best solution is to create own url shortening service, that way we can reserve our  domain.

3. Creating custom algorithm for shortening urls

The idea:

Suppose we have a table with following columns:

  • unique auto increment id (long),
  • url (string),
  • base62 string (string)

The trick, convert unique id to base62 string not the url, and then the url is mapped to the unique id

Base 62 converter code uploaded !

Storing and Processing

TODO Vlado:

  • 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 ""
Enter labels to add to this page:
Please wait 
Looking for a label? Just start typing.