12708.3.1
by Jonathan Lange
Split the "What is Launchpad?" part of the vision document into a separate document. |
1 |
================== |
2 |
What is Launchpad? |
|
3 |
================== |
|
4 |
||
5 |
Launchpad is a complete system for gathering changes from different types of |
|
6 |
sources and collaboratively organizing them into packaged software for the end |
|
7 |
user, delivered as part of an operating system that can be downloaded or that |
|
8 |
comes already installed on purchased hardware. |
|
9 |
||
10 |
If you start by thinking of Launchpad as a traditional software “forge” – a |
|
11 |
web service that provides bug tracking, code hosting and other related |
|
12 |
services – then you are not too far off understanding what Launchpad is. |
|
13 |
However, Launchpad has many distinctive traits that combine to put it into an |
|
14 |
entirely different category of software. |
|
15 |
||
16 |
But at its core, it is best to think of Launchpad as a service that meshes |
|
17 |
together two important networks: |
|
18 |
||
19 |
1. Networks of people making software |
|
20 |
2. The network of dependencies between software |
|
21 |
||
22 |
But first, a story. |
|
23 |
||
24 |
||
25 |
The Story of a Bug |
|
26 |
================== |
|
27 |
||
28 |
*Arnold* writes software for a living, and he runs Ubuntu on his desktop. He |
|
29 |
wishes he could contribute to open source, but he doesn’t have much spare |
|
30 |
time, and when he gets home from his job the last thing he wants to do is |
|
31 |
program. However, the spirit of willingness is there. |
|
32 |
||
33 |
One day, Arnold notices that Tomboy loses his formatting if he alt-tabs at the |
|
34 |
wrong time. Arnold knows that a well-filed bug report is a thing of beauty to |
|
35 |
most programmers, so he decides to spend a few moments to file a bug against |
|
36 |
Tomboy. |
|
37 |
||
38 |
Rather than search the net to find where Tomboy tracks its bugs, Arnold uses |
|
39 |
Ubuntu’s built-in bug filing mechanism. It asks him a bunch of questions, |
|
40 |
invites Arnold to write his bug report and then files the bug on Launchpad |
|
41 |
against the Tomboy package in Ubuntu. |
|
42 |
||
43 |
*Becca* has been dabbling in Ubuntu contribution for a while, mostly by |
|
44 |
helping new users solve their problems or turn them into good bug reports. She |
|
45 |
notices Arnold’s bug, sees that it’s well written and thinks that it would be |
|
46 |
easy enough to test against trunk. She opens up the Tomboy source package in |
|
47 |
Ubuntu and sees that there is a known-good daily build of Tomboy’s trunk |
|
48 |
hosted in a trusted user archive. Becca installs Tomboy from this archive and |
|
49 |
tests to see if the bug is still there in the latest version of the code. It |
|
50 |
is. Becca sees this, opens up the original bug report and clicks a button to |
|
51 |
forward the bug to the upstream bug tracker. |
|
52 |
||
53 |
*Carlos* is one of the Tomboy developers. He sees the bug in the tracker, sees |
|
54 |
that it has been tested against trunk, realizes that it’s an annoying bug |
|
55 |
that’s easy to fix and decides to fix it. He does the fix, applies it to the |
|
56 |
Tomboy trunk and marks the bug as fixed. |
|
57 |
||
58 |
At this point, both Arnold and Becca are notified that the bug is fixed in |
|
59 |
Tomboy trunk, and that they can try a version of Tomboy that has the fix by |
|
60 |
using the known-good daily build archive for Tomboy. They are warned that this |
|
61 |
is dangerous and may cause data loss, but they are also told how they can try |
|
62 |
the bug fix for free using a cloud-based Ubuntu desktop. They both try the |
|
63 |
bug, see that it’s fixed, and are happy, albeit a little impatient for the fix |
|
64 |
to be actually released and part of stock Ubuntu. |
|
65 |
||
66 |
Meanwhile, *Dalia* is an Ubuntu developer who takes a special interest in |
|
67 |
desktop productivity applications like Tomboy. She checks on the Ubuntu source |
|
68 |
package for Tomboy from time to time. The last time she checked, she saw that |
|
69 |
quite a few bugs have been fixed in trunk but not yet released. Since she |
|
70 |
knows the Tomboy release manager from long hours of IRC chat, she contacts him |
|
71 |
and gently suggests that he do a release. |
|
72 |
||
73 |
*Edmund*, the Tomboy release manager, takes Dalia’s hint well and realizes |
|
74 |
that a release is way overdue. He makes a release of Tomboy following his |
|
75 |
normal procedure. |
|
76 |
||
77 |
Launchpad detects that Tomboy has a new, official release and alerts |
|
78 |
interested distribution maintainers that the release has been made and now |
|
79 |
would be a good time to package a new version. Dalia packages up a new |
|
80 |
version, requests that an Ubuntu core developer sponsor the change and then |
|
81 |
waits for the new version to be uploaded. Dalia also uploads the fixed version |
|
82 |
to one of her personal archives so that others can easily get it without |
|
83 |
waiting for the next release of Ubuntu. |
|
84 |
||
85 |
*Fiona* the Ubuntu core developer sees Dalia’s patch in the sponsorship queue |
|
86 |
on Launchpad, notes that it’s all good and then uploads the patch to the |
|
87 |
official Ubuntu archive. (Fiona might also choose to upload the patch to |
|
88 |
Debian). |
|
89 |
||
90 |
Launchpad sees that this upload fixes a number of bugs, including the one |
|
91 |
originally filed by Arnold, and automatically includes those bugs in the list |
|
92 |
of bugs that will be fixed by the next release of Ubuntu. |
|
93 |
||
94 |
Two months later, the next release of Ubuntu is actually released. Arnold |
|
95 |
upgrades on release day, and tries out Tomboy to see if his bug was really, |
|
96 |
actually fixed. It is, and all is right with the world. |
|
97 |
||
98 |
||
99 |
||
100 |
||
101 |
Distinctive traits |
|
102 |
================== |
|
103 |
||
104 |
Launchpad is different from other "forges" in a few important ways: |
|
105 |
||
106 |
||
107 |
Cross-project collaboration |
|
108 |
--------------------------- |
|
109 |
||
110 |
No project lives in isolation. Each project is part of an ecosystem of |
|
111 |
software. Projects must be able to interact with each other, share bugs, |
|
112 |
teams, goals and code with each other. |
|
113 |
||
114 |
.. image:: images/cross-project-collab.svg |
|
115 |
||
116 |
Launchpad takes every chance it gets to show the connections between projects |
|
117 |
and to bring the opportunities created by those connections to light. |
|
118 |
||
119 |
By encompassing the entire process, all the way to operating system delivery, |
|
120 |
Launchpad can provide a unique service: enable each contributor to focus on |
|
121 |
the work they care about, while giving them an ambient awareness of how their |
|
122 |
work fits into a larger picture, and providing a path by which they can |
|
123 |
participate in other parts of that picture when they feel the need. |
|
124 |
||
125 |
||
126 |
Front-end to open source |
|
127 |
------------------------ |
|
128 |
||
129 |
Launchpad aims to be a front-end to open source. Whether or not a project |
|
130 |
chooses to host on Launchpad, opportunistic developers can use Launchpad to |
|
131 |
navigate bugs, get code and send patches. Likewise, we aim to present a |
|
132 |
uniform interface to the projects we have. |
|
133 |
||
134 |
||
135 |
Centralized service |
|
136 |
------------------- |
|
137 |
||
138 |
Because Launchpad emphasises cross-project collaboration, and because |
|
139 |
Launchpad aims to be a front-end to all of open source, it necessarily has to |
|
140 |
be a centralized service rather than a product that users deploy on their own |
|
141 |
servers. |
|
142 |
||
143 |
||
144 |
Networks of collaborators |
|
145 |
------------------------- |
|
146 |
||
147 |
Launchpad understands that much of the human interaction around open source is |
|
148 |
not primarily social, but rather collaborative: many people working together |
|
149 |
in different ways toward the same goals. |
|
150 |
||
151 |
As such, Launchpad highlights actions and opportunities rather than |
|
152 |
conversations and status. It answers questions like, “what can I do for you?”, |
|
153 |
“who could help me do this?”, “who is waiting on me in order to get their |
|
154 |
thing done?”, “can I rely on the advice offered by this person?” and so forth. |
|
155 |
||
156 |
||
157 |
Distributions are projects too |
|
158 |
------------------------------ |
|
159 |
||
160 |
Launchpad hosts Linux distributions in much the same way as it hosts projects, |
|
161 |
allowing for developers to feel at home when interacting with distributions. |
|
162 |
||
163 |
||
164 |
Gated development |
|
165 |
----------------- |
|
166 |
||
167 |
Sometimes, secrets are necessary. Launchpad understands that sometimes |
|
168 |
development needs to be done privately, and the results only later shared with |
|
169 |
the world. Security fixes, OEM development for new hardware, proprietary |
|
170 |
services with open source clients are all examples of these. |
|
171 |
||
172 |
||
173 |
Hardware matters |
|
174 |
---------------- |
|
175 |
||
176 |
Many software developers like to pretend that hardware does not really |
|
177 |
exist. When people distribute software as part of an operating system, they |
|
178 |
don't have the luxury of forgetting. Launchpad understands that developers |
|
179 |
often need to acknowledge and work around differences thrown up by hardware. |
|
180 |
||
181 |
||
182 |
We don't care if you use Launchpad, sort of |
|
183 |
------------------------------------------- |
|
184 |
||
12708.3.4
by Jonathan Lange
Rephrase. |
185 |
Many other forges define their success by how many users they have. Although |
186 |
we love our users and welcome every new user, Launchpad does not judge its |
|
187 |
success by the number of users. If one project wishes to host its development |
|
188 |
on another platform, Launchpad acts as a front-end to that platform. |
|
12708.3.1
by Jonathan Lange
Split the "What is Launchpad?" part of the vision document into a separate document. |
189 |
|
190 |
||
191 |
One project, many communities |
|
192 |
----------------------------- |
|
193 |
||
194 |
Any given project can have many distinct communities interested in it. These |
|
195 |
communities have different interests and different motivations, but all work |
|
196 |
in the same project space so that they can easily benefit from each others' |
|
197 |
efforts. |
|
198 |
||
199 |
||
200 |
Scope |
|
201 |
===== |
|
202 |
||
203 |
Launchpad has many major components. These can be broken up into four major |
|
204 |
areas of functionality: |
|
205 |
||
206 |
1. where work is done; developers interact with other developers |
|
207 |
2. where plans are made and reviewed; expert users interact with expert users |
|
208 |
and developers |
|
209 |
3. where projects engage with their communities; developers interact with end |
|
210 |
users and other developers, and vice-versa |
|
211 |
4. major supporting features |
|
212 |
||
213 |
.. image:: images/scope.svg |
|
214 |
||
215 |
Work |
|
216 |
---- |
|
217 |
||
218 |
At the core of every software project is the actual code that makes up that |
|
219 |
project. Here “code” is a broad term that also includes the project’s |
|
220 |
documentation, the translatable and translated strings that make up its user |
|
221 |
interface, the packaging and integration scripts required to get the software |
|
222 |
installed on end user’s systems and so forth. |
|
223 |
||
224 |
Launchpad is built to be able to take contributions from anybody, regardless |
|
225 |
of how involved they are in a project. For packages, translations and code |
|
226 |
proper we provide mechanisms to allow people to review changes from others and |
|
227 |
then merge them into the official parts of the project. |
|
228 |
||
229 |
Launchpad pulls in changes that happen in the upstreams and downstreams of a |
|
230 |
project, whether those changes are patches to code, new translations or |
|
231 |
packaging updates. It makes contributors to a project aware of the work that’s |
|
232 |
going on upstream and downstream and helps them take advantage of that work. |
|
233 |
||
234 |
And, of course, all work is for nothing if it does not get to the people who |
|
235 |
might want to actually use its results. As such, project maintainers can |
|
236 |
publish released versions of their code, any contributor can publish Ubuntu |
|
237 |
packages to unofficial archives or even set up Launchpad to automatically |
|
238 |
build and publish packages of latest snapshots of code. |
|
239 |
||
240 |
||
241 |
Plans |
|
242 |
----- |
|
243 |
||
244 |
People who are interested in doing something great will need to coordinate |
|
245 |
their work, keep track of the defects in the things they have already done and |
|
246 |
describe the things that they aren't doing yet but wish they could. |
|
247 |
||
248 |
Every software product in the world has bugs. For some projects, the rate of |
|
249 |
incoming bugs is fairly low, and each bug can expect to receive some attention |
|
250 |
from a core developer. For other projects, the rate of new bugs filed is so |
|
251 |
high that the core development team can never hope to keep up with it. |
|
252 |
Launchpad supports both kinds of projects. |
|
253 |
||
254 |
If every software product has bugs, every software user has great ideas about |
|
255 |
how a product can be improved. Project maintainers need to get at these ideas, |
|
256 |
evaluate them, and develop them into workable concepts. |
|
257 |
||
258 |
Often, a problem is so tricky that those concerned need to have a detailed, |
|
259 |
managed discussion about what exactly the problem is. At other times, the |
|
260 |
problem is easy enough to define, but there are so many solutions with |
|
261 |
difficult trade-offs or difficult implementations that it is better to talk |
|
262 |
about them and plan them out before proceeding with any of them. Launchpad |
|
263 |
acknowledges that this can happen on any project, and that becoming clear on a |
|
264 |
problem or becoming clear on the “best” solution can be helped a great deal |
|
265 |
using tools. |
|
266 |
||
267 |
Crucially, all of these different types of “plans” – bugs, specifications, |
|
268 |
blueprints, ideas – can span more than one code base and more than one |
|
269 |
conceptual project. These plans need to be drafted, discussed, clarified and |
|
270 |
reviewed before work starts, monitored, evaluated and changed as work |
|
271 |
progresses, and then the results of that work need to be checked against the |
|
272 |
plan when the work is finished. |
|
273 |
||
274 |
||
275 |
Community |
|
276 |
--------- |
|
277 |
||
278 |
Not everything that’s done on a project is work toward a particular outcome, |
|
279 |
or plans for how to get there. Every project needs to have some things that |
|
280 |
are more general and stable. |
|
281 |
||
282 |
Projects need to be able to present themselves to the world, confident in |
|
283 |
their identity and communicating exactly what they are about. Project |
|
284 |
maintainers need to be able to announce important news, such as releases, |
|
285 |
license changes or new practices. Contributors need to get a sense of who is |
|
286 |
working on which parts of the project. Users need to be able to ask questions, |
|
287 |
get support and give feedback. |
|
288 |
||
289 |
Contributors also need to share documentation about the project and how the |
|
290 |
project runs. They need to be able to discuss general topics about the |
|
291 |
project. |
|
292 |
||
293 |
Launchpad supports all of these things, and also makes it clear how any |
|
294 |
project fits into the broader ecosystem of projects. It shows which projects |
|
295 |
are upstreams or downstreams, which projects are affiliated with other |
|
296 |
projects, which projects share contributors with other projects and so forth. |
|
297 |
||
298 |
||
299 |
Supporting features |
|
300 |
------------------- |
|
301 |
||
302 |
Launchpad has many major areas of functionality that are best considered as |
|
303 |
“supporting features”: APIs, migration services, privacy, the mail UI, |
|
304 |
synchronizing with external systems. |
|
305 |
||
306 |
||
307 |
New World |
|
308 |
========= |
|
309 |
||
310 |
When Launchpad is really doing all of these things and doing them well, the |
|
311 |
world of open source software will be significantly changed. |
|
312 |
||
313 |
Patches will no longer lie decaying in someone else’s bug tracker, waiting to |
|
314 |
be noticed. Instead, they will all be synced into a central code review system |
|
315 |
and queued for review and approval. |
|
316 |
||
317 |
Instead of a distribution tracking one set of bugs and upstream projects |
|
318 |
tracking their own set of sometimes duplicated bugs, both upstream and |
|
319 |
downstream developers can seamlessly accesses both sets of bugs. |
|
320 |
||
321 |
||
322 |
Glossary |
|
323 |
======== |
|
324 |
||
325 |
Upstream |
|
326 |
A software project itself, as opposed to the packaged version of a software |
|
327 |
project that is included in a distribution. Note, can also be used as a |
|
328 |
relative term, e.g. “Debian is upstream of Ubuntu”. |
|
329 |
||
330 |
Downstream |
|
331 |
The opposite of an upstream. Can be used to refer either to a packaged |
|
332 |
version of a specific software project, or the entire distribution where |
|
333 |
that package occurs. |
|
334 |
||
335 |
||
336 |
References |
|
337 |
========== |
|
338 |
||
12708.3.3
by Jonathan Lange
Rename 'vision' to 'strategy' |
339 |
* :doc:`strategy` |
12708.3.1
by Jonathan Lange
Split the "What is Launchpad?" part of the vision document into a separate document. |
340 |
* :doc:`values` |
341 |
* `Feature checklist <https://dev.launchpad.net/FeatureChecklist>`_ |