Rise and Fall and Rise of CDT

Embed Size (px)

Citation preview

The Rise and Fall and Rise of the CDT ProjectLessons on Building Communities

Welcome, I'm Doug Schaefer, the CDT Project Lead. I've been with the CDT project for almost seven years now.

The Rise and Fall and Rise and Fall and Rise and Fall and Something... of the CDT ProjectThe Never Ending Exercise on BuildingCommunities

It's been and up and down ride with huge highs and low lows. I've learned a lot of things along the way and have often been asked to share them. I do a bit on my blog and this is a great opportunity to do it live. And as such, this talk is going to be more like a long blog entry. So we'll see how it goes.

The Epic History of the CDT

The Epic History of the CDTin 15 minutes...

In the beginning...

The Eclipse Tools PMC is pleased to announce some exciting developments to the CDT project hosted on eclipse.org. First, QNX will becontributing some C/C++ core technology from their recently announced product to eclipse.org.

In the beginning, QNX had many customer requests for an IDE. But they're an RTOS company, not an IDE company. Saw what was coming with Eclipse and jumped on it. Learned a lot from what was in the JDT and made a C/C++ development environment, the CDT. And it was good.

But there already was a CDT built by IBM mainframe guys for their customers. It sucked. Battle ensued and with the help of Rational, the new CDT wins!

The First CDT Summit June 2002

But, it was just a start. If the CDT was to grow, it needed a community. The bigger the community, the more people would come and help build it. The first CDT summit was held in June 2002 and a community was born.

Representatives from QNX, Rational, Red Hat, and Montavista participated. In the end, it was a great summit relative to others, half the vendors ended up being contributors...

Doug gets involved and makes a mess:The CDT Indexer

For Rational, we needed a code model just like CDT to help with our UML modeling tools. And I always wanted to build a C++ parser. Here was my chance. And what a journey it was.

We ended up with a pretty complete parser that fed the index for searching, and an AST for content assists. But we always fought two battles: performance on large code bases, and parsing with the lack of build information for includes and defines.

It's not until CDT 6.0, where I'm finally happy with this system. And there was a lot of bleeding along the way.

The CDT 2.0 SummitThanks for coming. Can you commit to helping?Anyone? Anyone?

The next CDT summit was hosted by Rational. We had a huge attendance. By that time, Intel had started working with us and planning contributions to the build system. But despite all the vendors participating in the meeting, we got no new contributors. I'll never forget Sebastien reviewing the list of features and then asking the people there who can commit to contributing.

That's when I learned that doing that gives you nothing, but not only that it makes the people there feel bad. It's not up to them, it's up to their bosses. What you need to do is give them the tools to help them convince their bosses.

The first EclipseCon CDT BOF:OMG, people are standing in the hall,and what's with all these build systems...

Despite the Micky Mouse music, the first EclipseCon was a wildly surreal weak. It was our first hint that the CDT community was much, much larger than we had thought. We were given a OK room that sat around 40 people and we had about a dozen standing and a few more standing out the door in the hall. We were floored.

But we also got our first sign that vendors were taking the CDT and not contributing back. The funny thing was that these vendors were proud and were showing off their custom build solutions. Yet at the same time we were trying to create a build system that everyone could use. Why are they rolling their own instead of helping?

For the good of the project I'll put in my +1.Unfortunately, however, we are going to startlosing developers that are working full time on the CDT starting August 1.

Absolutely a low point in my career. By now, my heart and soul is in the CDT. Rational was providing half the development resources on the CDT at that point. And we still had this mess of an indexer in place. The job wasn't finished.

And that's when I agreed with Sebastien to move over to QNX to continue that work. I rewrote the index to use more heuristics to vastly improve performance. And I became the CDT project lead. We're not dead yet.

CDT Summit III
You know all those things you care about?well, no one is working on them...

By then we only had four people working regularly on the CDT. No where near enough. Our next CDT summit at QNX headquarters, we had great attendance again. We had a lot of people complaining about issues and we started to put together a plan. I looked up and almost everyone by then was reading e-mail and not participating in planning. I asked ok, who in this room is actually planning on working on CDT. I had 4 people raise their hands out of 40.

If your product depends on open source software and you aren't actively contributing to it, you have no control. It's a very risky strategy.

It works, the CDT contributor community grows.

Intel, Nokia, Freescale, Texas Instruments,Symbian, Google, Ericsson, Broadcom,QNX, IBM, Wind River

The number of CDT committers is now around 20.

Doug's Words of Wisdom

Prepare to be frustrated

Wear two hats

If you think the users that get their CDT for free don't matter, you're missing the point. Grassroots is critical to the growth of your project. These guys are your future customers.

The CDT has a life of it's own. If the free CDT sucks, your product bears that badge too, justified or not. And if your CDT is better than the free CDT, then you're missing the other point. Interoperability of tools and skills.

Vendors tend to focus heavily on their own requirements and not on community. The good news is that CDT users are starting to become contributors, especially the big ones like Google and Ericsson. That helps, but nurture it.

Be vendor neutral,Leverage co-opetition

Asking for contributions isn't enoughCreate the need

Meet face to face,build relationships

None of your committers will be full time

Code like you won't be there tomorrow

First it was IBM with the indexer and parsers. Then it was Intel with the new project model/build system. Both of these were huge complex contributions that few outside the original developers understood. And now they're gone leaving you holding the bag. Be afraid of that. Protect yourself.

And if you're the one doing it, think about the future implications of your work. Make it easy for others to understand. You don't want to know what we'd be saying about you after you're gone.

Which is all good software engineering practice anyway.

Be needy, but not too needy

This is something we've struggled with. Being as open as possible to contributions. And even lax on meritocracy rules to build the committer community. But you need to be careful too. Be nice, but also be firm on architectural needs and ensure the contributions are good.

Forks are bad,But they can be good

If you don't listen to contributors needs, they'll fork on you. We have that with Zylin's Embedded CDT. That just confuses the community when they have to choose.

But if you have a vendor that needs to stage their contributions due to off-stream delivery or whatever. Then forks can be good.

This is where distributed version control can really help. Open forks can be great resources and make it easier for the forks to be merged into mainline and for mainline changes to be merged into the forks.

Can Eclipse Survive without IBM?

I got huge heat on that blog entry. But the point is, we've gotten too reliant on IBM providing the platform. A lot of their top developers are now working on Jazz (including the great Erich Gamma).

So the rule is the same. If you depend heavily on an open source technology, contribute. It's the only way to control.

And if you are reducing your investment, let others in.

Don't ship a product on x.x.0, wait for x.x.1

Communicate, Communicate, Communicateand be honest, build trust

And, BTW, a little dumb ass luck goes a long way

Thank you!