[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Report from the Ruby Sprint, January 2014

This is the report of the Ruby team sprint that was held at the IRILL
offices in Paris, France betwen January 15th and 17th, 2014. We thank
IRILL for hosting us, and the Debian sponsors for funding the expenses
required for the sprint.

# Attendees

* Antonio Terceiro
* Cédric Boutillier
* Christian Hofstaedtler
* Jonas Genannt
* Lucas Nussbaum (Jan 17th)

# Initial plans

The following topics were worked on:

- Work towards removal of Ruby 1.8
- Decide on supported interpreter versions for Jessie
- Get the Rails 3 package(s) in shape
- Get the Rails 4 packages(3) in shape
- Discussion of an initial list of key packages for the team
- Drop the standalone `rubygems` package
- Work on removal of old transitional packages remaining from the wheezy
  changes (~100)
- Support for autopkgtest in gem2deb
- Ruby policy and the ruby-policy package

We were able to work on all but the last two items. The results are
reported below. Raw notes (unreviewed) that were taken during the sprint
can be found at http://www.okfnpad.org/p/DebianRubySprintParis2014

In general, the sprint was very productive and fun, and we encourage other
teams that did not have one yet (as was the case of the Ruby team) to try it
out! Some things really are best discussed in a room with a whiteboard. In our
case, working out the plan forward with regard to obsolete and new Ruby
interpreters would probably have taken us weeks over email, but we were able to
settle on a good enough solution in one afternoon.

# Work towards removal of Ruby 1.8

Work in this area mainly involves either fixing packages to work with a
newer Ruby version, or giving up because the package is broken beyond
repair, in which case we file removal bugs for them. Pretty much all of
the packages in the second case have long-dead upstream and nobody
caring about them out there.

In this front, we did:

- ~24 uploads fixing packages
- ~9 patches sent to the BTS
- ~29 bugs filed and/or updated

#  Decision on interpreter versions

Taking the upstream support periods into account:

This discussion started by us collecting the expected EOL dates for the
currently Ruby series supported by upstream:

Version  Release Date  Upstream EOL
=======  ============= ============
1.8      irrelevant    Past EOL
1.9.3    irrelevant    Feb 2015¹
2.0.0    Feb 2013      Feb 2016 (best case)²
2.1      Dec 2013      Dec 2016 (best case)²
2.2      Dec 2015 (?)  Dec 2018 (best case)²

¹ http://www.ruby-lang.org/en/news/2014/01/10/ruby-1-9-3-will-end-on-2015/
² https://bugs.ruby-lang.org/issues/9215#change-43556

Assuming that Jessie will freeze early November of 2014, (optimistically one
could say) estimating its release for June 2015, and assuming 3 years of
support, the EOL for Jessie would be June 2018. With these dates in mind:

- It's impractical to keep Ruby 1.9 for Jessie
- Ruby 2.2 will be released too late to be considered for Jessie

It's clear to us that the default should be 2.1.

The remaining question would be whether it's worthwhile to also keep
2.0, and we thought "it's not".  The more recent Ruby versions have not
been introducing as much backwards incompability as it was the case for
Ruby 1.9 wrt to Ruby 1.8. So if any Ruby project works today with Ruby
1.9 (the oldest of the upstream-supported series), it will most likely
also work with either Ruby 2.0 and Ruby 2.1.

This led us to the realization that because of this, it does not make
much sense for us to keep supporting multiple Ruby versions

Having multiple interpreters is a burden:

- on the interpreter maintainer(s), who have to maintain multiple
  versions for multiple debian versions. A single security issue might
  need 6+ separate uploads (2+ ruby versions x 3 suites - unstable,
  stable, oldstable) that have to be built and tested.
- on the Ruby team, since whenever we want o drop a old and deprecated
  interpreter we have to hunt down every maintainer to have their
  packages updated so we can remove the old interpreter.
- because of the alternatives choice, upgrades might be a pain if users
  have explicitly selected an old interpreter as /usr/bin/ruby.

Moving forward, our plan is to have a single Ruby interpreter in the
archive. We will keep the infrastructure for multiple versions around so
that we can have multiple versions simultaneously on a temporary basis
when we want to introduce a new version with a smoother transition.

So the next months you can expect that:

- ruby1.8 will be removed
- ruby1.9.1 will be removed
- ruby2.0 will be made the default (pretty soon)
- ruby2.1 will be made the default (later)
- ruby2.0 will be removed
- switching /usr/bin/ruby with update-alternatives will be no longer

# Get the Rails 3 package(s) in shape

- finished and uploaded unified rails 3 source package (rails-3.2), to
  replace ~8 separate source packages. The new package includes an
  autopkgtest test suite that will alert us if any dependency breaks
  Rails. Currently waiting in NEW.
- fixed and uploaded rubygems-integration to make it work properly with

# Get the Rails 4 package(s) in shape

- Fixed ruby-sprockets, ruby-sprockets-rails to become installable again
- Uploaded ruby-thor git version, to fix bundler 1.5.1
- Upload bundler 1.5.2
- Relaxed Rails dependencies on tzinfo, builder so that Debian
  package relationships match Rubygems relationships
- Debugged bundler, resulting in a Debian-revert of the upstream commit
  in question https://github.com/bundler/bundler/issues/2818
- Reintroduce patch from Rails 3.2 into 4:
- Recorded required additional work on Rails 4:
  - Packages that need to be put into rails Recommends, at the very least:
    ruby-sqlite3, ruby-activerecord-deprecated-finders, ruby-builder,
  - Package sdoc (started, might be easier when Ruby 1.9 is gone)
  - Need a lot more gems packaged

# Discussion of an initial list of key packages for the team

We discussed whether it made sense to create a list of `key packages`
for the team, which the team collective will make sure are kept in a
good shape. We concluded that it didn't make much sense to create such
an explicit list, and let people take care of the package that they care
about, since the few packages we could think as being 'key' (rake,
bundler, rails, etc) already had people who take care of them.

# Drop the standalone `rubygems` package

Starting from Ruby 1.9, the Rubygems package manage is shipped together with
the interpreter. So we have to do some work to be able to remove the standalone
rubygems package. For this, 8 packages were uploaded dropping (unnecessary)
dependencies on `rubygems`.

Since the end of the sprint this work has been completed, an RM bug (#735576)
has been opened for rubygems, and it was removed from unstable on January 31st.

# Work on removal of old transitional packages remaining from the wheezy
# changes

52 bugs were filed to have source packages drop old lib*-ruby* binary
packages in favor of ruby-* ones:


Additionally, several of the team packages were uploaded making the
necessary changes

Antonio Terceiro <terceiro@debian.org>

Attachment: signature.asc
Description: Digital signature

Reply to: