Because RubyGems provides support for version comparisons, we want to pick a policy that works well with the RubyGems comparisons and gives the end user what they expect. We call such a policy “rational”. Also, if we call non-working policies “irrational”, then we apply a little bit of social engineering to gently prod offenders to conform. By the way, Knuth’s versioning policy (mentioned above) is not only irrational, it is also transcendental.
Full article: http://docs.rubygems.org/read/chapter/7