[development] Very concerned over Drupal's core development
Angela Byron
drupal-devel at webchick.net
Mon Apr 20 17:25:54 UTC 2009
On 20-Apr-09, at 11:35 AM, Nedjo Rogers wrote:
> <snip>
> c. The maintainers listed at
> http://cvs.drupal.org/viewvc.py/drupal/drupal/MAINTAINERS.txt?view=co
> are given permanent commit access to be used only in the areas they
> are
> responsible for.
Let's examine the consequences of this, since it's always a popular
option when it comes up. I'm going to choose the menu system as a
random example, but you can easily substitute 'menu system' as
$subsystem and 'chx and pwolanin' as $subsystem_maintainers in the
following narrative.
The menu system is a bit tweaky and its innards not easily understood
by the "common developer" in the Drupal community. As a result,
patches that improve the menu system tend to languish in the queue in
"code needs review" for weeks or months. When a review does happen,
it's normally on more minor things like coding style or similar; not
about the fundamental architecture of the menu system. This is
extremely frustrating to chx and pwolanin, the menu system
maintainers, since they want to keep going with their crazy
development ideas and are blocked.
So, to resolve the issue of menu system patches languishing in the
queue, chx and pwolanin are granted commit access to the menu system.
Suddenly, all of our problems with languishing patches magically
disappear! After a quick discussion in #drupal-dev, patch after patch
that improves the menu system is committed. The menu system has never
evolved so quickly in such a short period of time! And better still,
the committers for the field API, the database system, actions/
triggers, etc. are all empowered to do so as well, so Drupal evolves
at lightning speed! WIN!
Of course, without any kind of peer oversight, while these patches
that get committed make perfect sense to chx and pwolanin, they
completely mystify the "common developer." When Drupal 7 is released,
it becomes painfully obvious that we've developed extremely well-
engineered subsystems without ever exposing a "real" human developer
to having to work with them. And since these patches only needed to
make sense to two subsystem maintainers with intimate knowledge of the
underlying subsystem already, documentation is extremely sparse. It's
now way harder than ever before to jump in and get involved in core
development.
Worse, because all of these subsystems were rapidly evolving within
their own sphere, 20, 30, perhaps 50 patches committed per day, it's
become impossible for anyone to oversee all of them; at best you have
people inspecting one-off patches here and there. That means things
like coding standards compliance, performance benchmarking, algorithm
optimization, and the collective DX (not to mention UX) experience of
Drupal 7 plummets. Drupal 7 is usable by chx, pwolanin, DamZ, catch,
and about 20 other people, and everyone else switches to Django. ;)
We have this kind of decentralized development model, where one or two
people are solely responsible for code with basically zero peer
review. It's called contrib. And it's notoriously filled with sub-
standard, shoddily documented code that needs to be closely inspected
by individual site maintainers before being deployed on any serious
production sites.
The entire strength of Drupal core *is* that it is peer reviewed
(sometimes mercilessly so :)), it has oversight from others who are
*not* deeply immersed in APIs who can give sanity checks, and has
people who are bringing a very *diverse* range of experience levels,
specializations, and use cases. You remove that, you remove what I
would argue is the very heart and soul of Drupal.
"But webchick!" I hear you say. "Obviously, we wouldn't let these
subsystem maintainers work /completely/ bereft of peer review. We'd
surely have someone else check over their work." And I say, "Great!
Then *why aren't these mythical someones doing this right now*?" and
*then* you get at what I believe is the /actual/ root of the problem. ;)
*We need to grow the base of people who have understanding in these
subsystems.*
People who consider themselves subsystem maintainers should be
actively working to build teams around their subsystem of choice. They
should be documenting how their underlying APIs work so that someone
without familiarity could jump in and get oriented quickly. They
should be recruiting from contrib authors who are doing interesting/
innovative work in their areas. They should be maintaining a "patch
spotlight" page under http://drupal.org/community-initiatives/drupal-core
so that people who want to jump in and don't know where to start
have a direction. They should be guiding and mentoring "younger"
contributors on how to do patch reviews, and actively advocating for
others to do so as well.
If subsystem maintainers do this, the collective IQ of the Drupal
development community goes up, we grow the larger pool of
contributors, and no patch gets left as code needs review. Then you
can come back to me when the RTBC queue is 6 pages long (as opposed to
cleared down to zero about once every couple of months as it has been)
and say "webchick, we need subsystem maintainers to have commit
rights, because these patches have all been thoroughly peer reviewed
and are languishing at RTBC." and I will probably back you up 110%.
-Angie
More information about the development
mailing list