For the past several week, David Planella, Jono Bacon and I have been drafting a spec that proposes a radically different approach to getting desktop applications into the Ubuntu Software Center. Now, there’s nothing that annoys me more than somebody proposing radical changes for no reason, and without giving much thought as to how it would actually be done. So I wanted to write down, here, both the justification for this proposal, and the process that we went through in drafting it.
The current process splits submissions between closed-source and commercial apps, which get reviewed by a paid team of Canonical employees, and non-commercial open source apps which are reviewed by the Application Review Board (ARB). The ARB consists of 7 volunteers from the Ubuntu community, who will review the source code and packaging of each submission. Members of the ARB are very smart, very dedicated members of the community, but they also have paying jobs, or are pursuing higher education (or both), so their time is a limited resource. The ARB process was meant to provide an easier route for app developers than the more rigorous process that distro packages must follow to get into the Universe repository or Debian’s archives, and in that respect it has been a success. But even with eased requirements, there was a limit to how many apps they could manually review.
The recent App Developer Showdown competition, which resulted in more than 140 new apps being submitted through our MyApps portal, showed us the limits of our current process. We even drafted a number of new volunteers to help review the incoming apps, and Daniel Holbach provided both instructions and programs to help speed things up. It took us weeks to give an initial review to all of the apps. Almost two months later and we still haven’t been able to publish more than a quarter of them. Android has seen over 9,000 new apps in a month, and I can only assume that iOS has seen similar numbers. If we can’t even scale to handle 140, something has to change.
The spec didn’t get written down all at once from some grand design. It grew organically, from a short list of general goals to the massive text it is today. In fact, the spec we ended up with is quite a bit different than the one we initially set out to write. We took our list of goals and started asking the obvious questions: what work is involved, who will it impact, and what could (will) go wrong? We could have just throw these questions out to other people, but those people are busy and have their own things they are trying to do. Before we could ask anybody else to spend time on this, we had to put in some effort ourselves.
So we answered as many of these as we could between the three of us, and those answers changed our spec accordingly. That raised more questions, and we repeated the process, updating the spec and finding more questions that needed to be answered. In the process we gained both a clearer idea of what we wanted, and a better understanding of how to get there. By the time we had answered as many as we could on our own, our list of goals had transformed into a longer list of implementation items and who would most likely be doing them.
At that point, we had a more specific direction and a pretty good idea of how much work it would take. Having done as much of the leg-work as we could, we took the implementation items, and any unanswered questions we still had, and started talking to the people who would have to implement it. Unsurprisingly, these conversations had an even bigger impact on the spec, and it underwent some pretty drastic changes as we tried to nail down the details of the implementation. Just like the previous stage, we iterated over this one multiple times until we had as many details as we could collect, and answered all of the questions that we could. At the end, we had the massive spec we announced today.
But this is just the next stage, the spec isn’t final. The three of us have answered as much as we could, the teams who will implement it have answered as much as they could, now we’re introducing it the community to gather even more details and answer even more questions. The feedback we get in this stage will go back into the spec, and very likely generate new questions and feedback, and we’ll iterate through this stage too.
The final spec, whatever it ends up being, isn’t going to be perfect, and it’s not going to make everybody happy. But we can be confident that is will be a very well thought out spec, it will be a very detailed spec, and it will allow us to accomplish the goals we set out to accomplish at the beginning of it all. It will help make Ubuntu a much more attractive platform for application developers, it will make Software Center more useful to developers and users alike, and it will make Ubuntu a better OS for all of our users.
If you have any questions or comments on the spec itself, please send them to the ubuntu-devel mailing list, not the comments section here.