Results of the App Installer meeting
The App Installer meeting is over since Friday, and I must say I've been very pleased with the results of this meeting. During three days (rather two days and a half), we managed to explore the topic, investigate some pre-existing technologies, define an architecture to handle the creation and the communication of the metadata, write a plan to move forward, etc. And we managed to all agree on this!
The first part of our plan is of course to communicate the results. And we've started right ahead by doing an informal presentation about our work at the SUSE offices. The good news is that it was recorded and you can see it online (thanks Christopher for this!). I guess I'm awful, but you'll all be able to watch Enrico and Richard save the day. Richard also drawed a nice diagram to summarize the overall architecture, so if you want to simply take a quick glance at what we produced, this is where you should go.
I've had positive feedback about the meeting, but it's important to keep in mind that it's only a beginning: we'll now work on implementing all the cool stuff. This means we have a long road ahead of us, and we need to be careful to not get too much distracted. With all the other tasks and responsabilities we all have, it is indeed very easy to put that at the back of our mind. That's partly why we defined a relatively aggressive schedule, targetting the end of the year to have something usable and shipped in distributions.
Thanks again to Novell for hosting the event, and to Canonical, Debian, Novell and Red Hat for enabling the attendees to participate in this meeting!
Some thoughts on cross-distro collaboration
While working on the organization at the end of last year, I've heard people saying that a cross-distro meeting on an important topic like this can hardly succeed -- if you manage to make it happen, that is. I've also heard very enthusiastic voices, like Stefano and several of the people who later attended the meeting. I got to think a lot about cross-distro collaboration.
The fact is that it's still much easier to work on things in a corner. The funny thing is that people are generally not opposed to work together, far from it. When discussing low-level bits related to packaging systems, many would expect dpkg/apt developers and rpm/zypp developers to have some heated discussion just because we always hear confrontational stories here and there. The truth is that those stories are generally from users, and developers are generally happy to accept differences.
For collaboration to really happen, gathering the right people from different distributions is an essential step. However finding the right people can be the hardest part, and I believe this is generally where we fail. I happen to know people from many distributions because of my work on GNOME, and while I obviously don't know who might be the appropriate people for a specific area for all distributions, I can at least ask some friends who should be contacted. While I love to think I'm unique and all that, I'm sure many contributors in distributions do know people from other distributions, so I wonder why there's no more communication going on. Maybe we're just all too busy.
Another point that is important for collaboration is to correctly define the scope and goals of the topic being discussed. Especially for a meeting: like for all meetings, this helps ensure everyone is aligned towards a common set of goals. And like for all meetings, it's important to keep everyone focused: it's extremely easy to start diverging away from the topic of a session, and to realize at the end that the original topic was not really covered. Defining how to measure the success of the collaboration keeps you on track. Yes, it sounds obvious, but we often forget that step.
In the specific case of this App Installer meeting, I believe there is another key point that helped us. We generally all had a similar vision of where we wanted to go, even before the event. So this meeting was used to iron out the big lines and to start defining the details: we didn't have people trying to push a solution over another one. This helped us move much faster, and that's why we were able to agree on so many different things in such a short timeframe, without any prior meeting. We were lucky here :-)
To be honest, since I started working on openSUSE, I've kept wondering why all distributions duplicate so much work. Sometimes, there is a good reason, like a radically different technical approach. But sometimes, it looks like we're going different ways just for the sake of doing something ourselves. We should fix this. Cross-distro collaboration is not the way we usually do things, and I believe we're wrong most of the time. Cross-distro collaboration is a cultural shift for us. But it's very well needed.