Monday, September 10, 2007

Blog to Blog: Diversity

I was going to post a comment to Bjorn's blog entry about diversity, but I thought my response was food for thought enough (and controversial enough!) to merit its own blog entry. These thoughts have been simmering for a while.

I think diversity is good. A lot of projects need more diversity. However, I think that until the Platform has a non-IBM committer that is doing more than just contributing builds of SWT for a non-primary platform, then diversity at Eclipse is somewhat of a farce. The Platform, if anyone, should be a shining paragon of diversity and openness to the rest of the projects on Eclipse.org, but it's the number one project that people complain about with respect to diversity and openness.

It is very hard to get contributions in to the platform (often with good reason, we don't want crap in there obviously...), and as a result, it is hard to build up enough of a reputation to become a platform committer. While the platform team are good at posting plans and information, the processes that go into them are essentially closed. The day to day discussions about design and development issues do not seem to happen in an open forum. There are no public conference calls, and the mailing lists don't have significant traffic about the actual development going on in the platform. Instead they usually amount to status reports on builds and testing, peppered with the odd user question (which usually ought to have been posted to the newsgroups instead). And no folks, Bugzilla on its own does not count... not everyone has time to keep hitting refresh on Bugzilla to see what bugs are appearing and how they are going to be fixed. People at least need a heads up that "Hey, we're discussing $BIG_ISSUE over on Bugzilla #whatever, go there if you're interested in the discussion." Also, I would say that Bugzilla is not the greatest forum for discussing broader issues and project plans, etc.

In this sort of environment, it's hard to build a sense of camaraderie with the team. There is a definite "US and THEM" atmosphere. Not that the Platform people are adversarial, don't get me wrong. But, you definitely don't get the feeling they are actively trying to get newcomers into the fold. It's difficult to get enough information about what's going on in order to try to get up to speed to the point where you're on somewhat of an equal footing.

Now to be clear. I'm not trying to slag the Platform or the people that work on it. They have done a ton of awesome work over the years and we all owe a lot to them. Theirs is no easy job at the best of times. But, I do think there are things that they and other projects could be doing better, and so I'm trying to criticize constructively. Hopefully everyone takes it as such.

Now, let's contrast the status quo with the Platform project with my experience with becoming a committer on CDT. The company I was working for at the time was looking to move their IDE to the Eclipse/CDT platform. As I started coding up our integration, I started hanging on out the cdt-dev mailing list, reading and eventually participating in the in-depth requirements gathering and technical discussions that went on there. CDT conference calls were (and still are) open to the public, so I just started showing up. At first I didn't have a lot of useful things to say other than introducing myself and communicating that our company was starting to use CDT and was looking to contribute, but over time as I got ramped up, I had more meaningful things to say.

After fixing a few bugs on the 2.0 release, CDT 3.0 came along, and there were some features that I needed implemented that the commiters (of which I wasn't one yet) indicated that they didn't have time to work on. So what did I do? Well I hopped on the planning conference call and told them that I was committing to deliver patches for those features for the release. "Great!" they said, and put my items on the plan with my name next to them. I did what I promised and after the release went out I was rewarded with a nomination and subsequent election to commit rights.

The difference was the CDT gang went out of my way to make me feel like I was part of the team, even if strictly speaking I didn't have commit rights yet. Discussions and information were open enough that I could participate as nearly a first class citizen. Sure, I still had to submit patches for anything I wanted to change, and convince someone that those patches were worth committing, but that's much easier to do when you've already been collaborating as near-equals for a while. The open and collaborative nature of the project allowed me to build up an important thing: trust.

Anyway, back to the point.

I think really that the focus of the diversity rules and enforcement should not be to stop projects from starting that are not yet diverse, but instead should focus on opening up projects that already exist but are not diverse. I don't think diversity rules should get in the way of contributions. It's better to have a non-diverse project than no project at all, because it's better to have imperfect code that does something for someone, rather than have no code, which does nothing for everyone.

That being said, if a project exists and people can't contribute even when they want to, then that is a definite problem which we should be trying to fix.


Admittedly the devil is in the details, especially with a project as large and as widely consumed as the Platform, but without trying to sound heavy-handed, I think we should be looking at ways to open up it and other projects. Such changes would have to be practical. Maybe, for instance, you can't have a 100% open Platform Conference Call where anyone and everyone that dials in can say whatever they want, because you could get far too much signal to noise. But, maybe you can have a moderated call, where some people who are known and trusted (e.g. Eclipse committers) can speak freely, and others can flag questions for the moderators attention. This way information still flows, but hopefully supporting that flow is not onerous for the committers.

At any rate, I'm curious to see what's going to happen with this new diversity push. The Platform Debug team has been setting a good example as of late, and is actively trying to mentor in some new committers on the Debug sub-project. Kudos to them, and hopefully we will start seeing more things like this.

4 comments:

Doug Schaefer said...

Even if calls were targeted at smaller areas, like Debug, or SWT, or build. But it would be really nice to have the ability to hear from someone line Darrin without it being on a Device Debugging call.

Chris Aniszczyk (zx) said...

PDE loves BugDay. Other projects considering adding more diversity should consider looking at BugDay. Something like 25% of the patches in 3.4 M1 from PDE were from non-committers.

Karl Matthias said...

IMHO diversity IS important as it's what allows projects that everyone depends on to survive a single company's change in business strategy. The ecosystem is built upon the ability to consume substantial and reliably high-quality components, where members can focus on only the pieces they need to add to build their products. Just as projects are loath to accept pieces of code where there is no guarantee that the contributor will maintain them, without diversity I think the Eclipse community faces the challenge of convincing people that projects will be around long enough to form the basis of their commercial products. Without diversity I see that in jeopardy. As time goes on projects need to integrate more and more and the dependency builds.

John Arthorne said...

I agree the Eclipse project could do more to open things up, but I just wanted to dispel some inaccuracies in the original post. There are several active non-IBM committers on the Eclipse project (in all four sub-projects). A quick look at dash shows about 10% of commits coming from non-IBM sources [1]. This isn't fantastic, but there is some solid non-IBM contribution going on.

The only project-wide conference call is the weekly planning call attended by component leads (one of which is not from IBM). A call of that nature would be difficult to open up because it already drags on due to the large number of people involved. There is evidence that open calls can be successful on a targeted subject, as we have seen from the weekly public Equinox call for the new provisioning work [2]. Perhaps this model could be followed in other areas to help encourage contribution.

Also, I'm shocked that zx didn't take the chance to plug this, but there are quite a few platform committers who hang out on IRC, and this has been a successful forum for committers and contributors from many companies to conduct open discussions.

[1] - http://dash.eclipse.org/dash/commits/web-app/summary.cgi?company=y&month=x&top=eclipse&year=2007
[2] - http://wiki.eclipse.org/Equinox_Provisioning_Weekly_Discussion_Topics