Hi,

A new version of ruby-defaults will be uploaded to unstable very soon. This new
version will make Ruby 1.9 the default Ruby interpreter on Debian systems, i.e.
when users install the `ruby` package, they will actually get Ruby 1.9 instead
of Ruby 1.8. Also, when both Ruby 1.9 (ruby1.9.1) and Ruby 1.8 (ruby1.8) are
installed, Ruby 1.9 binaries will have a higher priority on the alternatives
system, so that the programs `ruby`, `gem`, `irb` etc will by default point to
their Ruby 1.9 versions.

# What it means for users

/usr/bin/ruby and associated binaries (/usr/bin/irb, /usr/bin/gem, etc) will by
default point to their 1.9 variants. You may have code that depends on the fact
the /usr/bin/ruby and related binaries point to their 1.8 variants, maybe
because of local Ruby applications that are not compatible with Ruby 1.9. There
are some options here:

* Change shebang lines to use /usr/bin/ruby1.8 instead of /usr/bin/ruby.
* Switch your system to use ruby1.8 as the system Ruby interpreter, by
  installing the `ruby-switch` package and running `ruby-switch --set ruby1.8`.
  This will change the Ruby-related alternatives entries (currently `ruby` and
  several slave entries, and `gem`) to use Ruby 1.8.

More information for Ruby users can be obtained at the [Debian
Wiki](http://wiki.debian.org/Ruby).

# What it means for package maintainers

If you maintain a program that is written in Ruby and it is not compatible with
Ruby 1.9, then you should change shebang lines to use `/usr/bin/ruby1.8`
instead of `/usr/bin/ruby`, and make your package depend explicitly on
`ruby1.8`.

Both programs and libraries should be
[updated](https://lists.debian.org/debian-ruby/2012/04/msg00066.html) to use
the new Ruby policy, which basically means that:

* Packages that work with any Ruby version must depend on `ruby |
  ruby-interpreter` instead of just `ruby`.
* Ruby library code must be installed under /usr/lib/ruby/vendor\_ruby instead
  of /usr/lib/ruby/{1.8,1.9.1}.
* Library packages must be named ruby-$foo instead of lib$foo-ruby{,1.8,1.9.1}.
  A library package called ruby-$foo must install code for all supported Ruby
  versions, and transitional packages for the old lib$foo-ruby{,1.8,1.9.1}
  packages must be provided. These transitional packages can be dropped on
  Wheezy+1.

The easiest way to support the new Ruby policy is to use
[gem2deb](http://packages.debian.org/gem2deb), our new Ruby packaging helper.
It is not mandatory, though, and as long as packages follow the new Debian
Ruby policy, everything is good.

# Current state of the transition

TBD

# Get in touch

If you have questions or need help adapting your package, feel free to get in
touch with debian-ruby@lists.debian.org.

For the Ruby team,