~launchpad-pqm/launchpad/devel

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>`_