Rack, Change of Maintainer & Status

Hash: SHA1

Dearest Rack Community, Ruby Community, and passionate onlookers,

There is a time when transitions must be realized by a point of impact,
when a torch must go out, and it???s replacement brightens the darkness.
We???ve arrived at such a point in the history of Rack. To cut the
following story short, I (raggi) will be stepping down from any
???maintainer??? role in Rack. Aaron (tenderlove) will continue to
maintain point releases henceforth. Additionally, as it stands today,
the ???Rack Core Team??? are formally announcing that we do not expect
that this team will release Rack 2.0. The rest of this missive will
explain some history, and provide overdue gratitudes.

As many have seen, in the last year Rack has seen little to no
maintenance. This is both a good and a bad thing. It is good in that the
product is quite stable now, for what it is. It is bad in that the
product is, like all software, not yet bug free. More than bug related
challenges, Rack is now starting to fall behind the times at the
architecture level. The reasons for non-maintenance are largely personal
reasons, related to the lives of the core team. In most cases, a large
part of the reason is that the team has moved on, using alternative
technologies, if doing any software engineering at all. Some members
have kids, some have jobs too busy to make time for Rack.

After some discussion by partially-laden swallow and internet telepathy,
the original core team are in agreement that ???holding the torch??? -
Rack as the sole middle-tier specification for the Ruby community - is
at this point no longer appropriate. The world is changing, with
Websockets, Server-Sent Events, SPDY, HTTP2, quic, and many Ruby
implementations having usable multi-threading among many many other
things. The next generation of middleware specification for Ruby should
address these changes, and we wish to encourage the community to take
ownership and do this.

It is quite likely that some battles will ensue, but it is our
???dying??? hope that by announcing the completion of Rack, the
community will rally to the cries of its many members. Users will place
their fire and brimstone under cauldrons and once again cook up a
popular new abstraction that will spread even across foreign lands as
Rack once did.

When Rack was first introduced to the community, there were many
specifications for server and application interfaces. Chris did an
amazing job at providing an abstraction so simple that it would be hard
to argue it could be any simpler. In addition to providing a much needed
specification for the connection between servers and applications, Rack
also included many helpers to reduce common duplication - with great
success. Eventually even Rails joined the party, and once at critical
mass, Chris created the Rack Core Team. This was a fruitful period in
the history of Rack. A great deal of middleware was produced, and it was

Fast forward to a couple of years ago, and Rack was in a similar place
to where it is now. Many of the core team were busy with other
responsibilities, and Rack was behind in maintenance. I (raggi) saw this
and saw members of the community suffering as a result. I decided to put
in the effort to clear our backlog and roll some releases. Little did I
know at the time, but performing such an effort can inadvertently
transmute oneself into a maintainer. In the time that followed, I did my
best to ensure that critical security releases were timely, and that at
other times, as few regressions were released as possible. For some in
the community, this attention to detail was too much, they would prefer
more speed. Rack has a very large API surface, that stretches deep into
the servers, and deep into the applications. The API is very simple,
which also means that it???s subtleties are actually critical semantics
for many users. In light of this, there is some advice available in this
], that was once unfortunately made public before it???s time. I hope
that it provides some food for thought in future endeavours, but it is
in no way a map to fame and riches (or a recipe for brewing what the
next tier should be!).

A final note for those that may now be hearing the rattle of their
chainmail. Rack will still be maintained for some time. The community
needs it, and there are many that depend on it. There are many people
who can still look after it, and additionally I will still assist those
that kindly request it. No one is leaving you unsupported, this
announcement is for your benefit, and it is best to see it as a chapter
for the community, not an epitaph. Aaron will provide more details in
due time.

Thank you everyone for your contributions, code, comments, support,
discussions and even arguments. Without your input, Rack would not have
been so successful. Never underestimate your value, we love you all, and
we wish you the best of times!

Happy hacking,

  • raggi, in association with rack-core.

[1] rack retrospective · GitHub

Version: GnuPG v1


James, Chris: thank you for all the leadership and work over the years!
Rack has inspired a lot of my work over the years (including servers
outside of Ruby).

To Aaron and new maintainers:
For the old-fashioned Rack apps, my services remain always available
via old-fashioned email. Consider me obsolete when it comes to features
requiring new-fangled GUI browsers, though. curl is my co-pilot :slight_smile:

Thx for all your efforts, I hope fresh blood are coming soon.

I’m trying to get the ball rolling a potential Rack replacement. I need
input from as many interested parties as possible so we can establish a
solid specification that we can build the support framework and
libraries on top of.

I’ve just setup a GitHub project which I’m hoping will serve as a decent
platform for collaboration: GitHub - Wardrop/Rack-Next: For discussion and planning of the next ruby web interface.

Thanks for all the hard work!