There was and is a number of discussions about Hadoop version
compatibility, feature porting, stability. I think that many problems of
Hadoop are the result of our flawed release processes and can be solved by
streamlining the releases.
It is a fact that current trunk turned into a junk-yard of partly
implemented ideas at different stages of the development. Saying this not
because trunk should not evolve, but mostly because there are no any plans
on the horizon to release anything from trunk and therefore nobody cares.
Thus now in order for A feature to make into A release the former should be
ported into an earlier branch. And that becomes a controversy because
a) most major features contain incompatible changes, and
b) they introduce massive changes, which break reliability
This destabilizes the release canceling former efforts to fix bugs and
provide working environment for the upstream projects. I mean stabilizing
and adding features are mutually exclusive activities. This is in part why
Hadoop 2 stabilization effort is perpetual.
The solution imho is to release instead of backporting. That is, produce a
new release for every or a few new major feature. Say, snapshots would be a
new release, Windows support another, InodeIDs or local reads optimization
would have been the next, etc. As the community we should release even if
that particular release is not planned to be stable, which we do anyway.
Stabilization requires meticulous work and rather stable code base. This
was done for Hadoop 1 and Hadoop 0.23 as the most recent examples.
In fact we cannot predict in advance which branch will become stable until
it is somewhere in production, which is beyond the scope of control of this
My practical suggestions are:
1. Produce a series of feature releases to catch up branch-2 with trunk.
We can prioritize features in general or let the release manager to
decide which feature to pick up from trunk.
Version numbering is also up for discussion. I would call them 2.x and
reserve the minor numbers for subsequent stabilization bug-fix-releases.
2. Build new features in dev-branches until they are done. We do it now,
but should enforce more.
3. After branch-2 is caught up with trunk release from trunk by merging a
few new dev-branches. Releasing with 2-3 new features should be the golden
I would call these releases 3.x
4. Disallow backporting features that have not been released from trunk.
This is VERY important for forward going release process.
5. I'd like to propose to move the latest stable version from 1.0.X to
I think that running a release in production for 9 months on 40K nodes
is consistent with the definition of stable.
Some ideas for discussion.
P.S. This is not to preempt discussion on stabilizing 2.0.5 started by
Roman. I am just not sure why we call it stabilization and 2.0.5 and betta,
if incompatible and new features has already been committed to the branch.
BTW as an illustration to my observations above.
Roman Shaposhnik 2013-04-25, 15:44
Konstantin Shvachko 2013-04-25, 22:41
Robert Evans 2013-04-25, 15:28
Roman Shaposhnik 2013-04-25, 15:48
Robert Evans 2013-04-25, 22:05
Konstantin Shvachko 2013-04-25, 22:06
Robert Evans 2013-04-29, 18:53
Roman Shaposhnik 2013-04-30, 04:34
Robert Evans 2013-04-30, 17:39
Konstantin Boudnik 2013-05-01, 05:40
Shv.hadoop 2013-05-01, 06:51