~launchpad-pqm/launchpad/devel

12221.5.2 by Jonathan Lange
Import document from google docs
1
=============================
2
Launchpad: Strategy and scope
3
=============================
4
5
*We want to make Ubuntu the world’s best operating system. To do this, we need
6
to give Canonical an edge in productivity over and above other Linux vendors
7
and, just as importantly, help make the development of open source software
8
faster, more efficient and more innovative than its proprietary rivals.*
9
10
Launchpad does this by helping software developers share their work and
11
plans, not just within a project but also **between** projects.
11307.3.4 by Jonathan Lange
Some content for the vision document.
12
11307.3.18 by Jonathan Lange
Clean up a bit, remove gunk.
13
14
Introduction
15
============
16
12221.5.2 by Jonathan Lange
Import document from google docs
17
This document tries to answer two big questions:
18
19
1. *why* are we making Launchpad?
20
1. *what* is Launchpad supposed to be?
21
22
When you are finished reading this document, you should know what problems we
23
want to solve, what we hope to gain from solving these problems, how we decide
24
whether something is in scope or not and how we know if Launchpad is doing
25
well.
26
27
This is not our strategy for the year or our scope of Launchpad development
28
for the next six months.  Rather, it is our answer to the fundamental
29
questions: what is Launchpad and why is Canonical investing in it?.
30
31
32
Audience
33
--------
34
35
This document is for everyone who cares about improving Launchpad. Primarily,
36
we’ve written it for Launchpad’s stakeholders within Canonical and for the
37
developers of Launchpad, whether they are Canonical employees or not.
11307.3.16 by Jonathan Lange
Move a bunch of stuff out to values.txt
38
39
11307.3.18 by Jonathan Lange
Clean up a bit, remove gunk.
40
Strategy -- Why are we doing this?
41
==================================
11307.3.4 by Jonathan Lange
Some content for the vision document.
42
12221.5.2 by Jonathan Lange
Import document from google docs
43
The world we live in
44
--------------------
45
11307.3.5 by Jonathan Lange
Some changes from mrevell and some more stuff.
46
Open source software is bigger than you think.  It is much more than simply
12221.5.2 by Jonathan Lange
Import document from google docs
47
writing the code.  Code has to be packaged, integrated and delivered to users
48
who can then give feedback and file bugs.  Distributions made up of tens of
49
thousands of different software packages need to be released to meet a
50
deadline.  Translations must be made into hundreds of different languages and
51
accumulated from a variety of sources.  Everywhere bugs need to be tracked,
52
fixed and checked.  Plans must be made and kept.  Distributions have to be
53
made to work on a wide variety of hardware platforms with varying degrees of
54
openness.
55
56
Those who make open source software and wish to profit commercially also face
57
unique challenges.  Contributors are scattered across the world, making
58
coordination, communication and alignment just that little bit more difficult.
59
Many contributors are volunteers, and so decisions must often be made by
60
consensus, deadlines enforced without the leverage of an employment contract
61
and quality maintained without formal training.  Users of open source software
62
use a widely heterogeneous stack of software and hardware, thus increasing the
63
burden of compatibility work.  All of these things make open source software
64
development more difficult, thus increasing the need for tools to aid
65
collaboration.
11307.3.16 by Jonathan Lange
Move a bunch of stuff out to values.txt
66
67
The Ubuntu community, together with Canonical, are dedicated to making the
68
very best open source operating system possible, one that far excels any
12221.5.2 by Jonathan Lange
Import document from google docs
69
proprietary operating system.  To do this, we need to ensure that the process
70
of making Ubuntu is as effective as possible.  Moreover, we need to make the
71
process of making open source software as effective as possible, and then make
72
it easy, quick and desirable to get that software into Ubuntu.
73
74
Secondarily, Canonical's main business is the provision of premium services
75
built around Ubuntu.  Many of these services are based on proprietary
76
software, which Canonical must be able to make more quickly and at less cost
77
than any rival.
78
79
The word "effective" covers a multitude of concepts.  Here we mean doing the
80
*right* work with the highest possible *quality* as *quickly* and with as
81
little *waste* as possible.
82
83
84
Business goals
85
--------------
86
87
Launchpad exists to give Canonical a competitive advantage over other
88
operating system vendors and service providers, both proprietary and open
89
source.
90
91
To gain an advantage over *open source* operating system vendors, Canonical is
92
relying on Launchpad to:
93
94
* increase Canonical's effectiveness in making software
95
* grow and accelerate contributions to Ubuntu
96
97
To gain an advantage over proprietary operating system vendors, Canonical
98
needs Launchpad to do both of the above and:
99
100
* improve and accelerate open source software development in general beyond
101
  that of proprietary software so that the software in Ubuntu is better than
102
  the software in any rival proprietary operating system
103
104
The value flow of Launchpad can be summed up in this diagram:
105
12221.5.4 by Jonathan Lange
Correct links to images.
106
.. image:: images/value-flow.svg
12221.5.2 by Jonathan Lange
Import document from google docs
107
108
109
Who is Launchpad for?
110
=====================
111
112
Launchpad is aimed at many different groups of users.  They can be roughly
113
described as follows:
114
115
Software developers
116
  These are people who make or contribute to free and open source
117
  software. They are made up of both paid professionals and volunteers working
118
  in their spare time.  They vary widely in expertise and patience.  Any given
119
  software developer might be working on both open source software and
120
  proprietary software.
121
122
Expert users of software
123
  The sort of people who file bugs, try new releases, run the bleeding edge
124
  snapshot, are interested in following development plans, who help other
125
  people on mailing lists. Note that software developers are frequently but
126
  not always expert users of software.
127
128
End users of software
129
  People who download and install software and then use it.  These people have
130
  little understanding about what software actually is or how it is made.
131
  They use it, sometimes without noticing, sometimes enjoying it, sometimes
132
  hating it.
133
134
Translators
135
  A special class of software developer who is normally a native speaker of a
136
  language other than English.  They contribute to open source software
137
  projects not by submitting code, but by translating strings to new
138
  languages.
139
140
Managers
141
  These are managers in the broad sense of people who are responsible for the
142
  completion of a task and so need to know what many other people are doing
143
  towards that goal.  This includes release managers, project leads and
144
  traditional corporate project managers.  It does not necessarily mean people
145
  who are employed as managers.
146
147
148
User needs
149
----------
150
151
The people who use Launchpad, in whatever role, share one broad goal: “make
152
great software and get it to its users”.  To do this, they need:
153
154
* tools to facilitate collaboration on their proprietary and open source
155
  software projects
156
* a place to host and publish their open source software projects
157
* as little overhead as possible in maintaining these projects
158
* more contributors to their projects
159
* to be able to easily contribute to existing software projects
160
161
Some of our users have particular needs:
162
163
* managers need to be able to quickly get an overview of activity and
164
  progress for their teams and their projects
165
* expert users of software need to be able to give high quality feedback to
166
  the software developers
167
168
Further, we believe that providing tools for cross-project collaboration, we
169
can benefit our users by:
170
171
* giving them feedback from groups of their own users that they couldn’t reach
172
  before
173
* reducing the time and effort required to publish software to actual end
174
  users
175
* pointing them to knowledge and fixes from other projects in their network
176
* helping OS-driven improvements reach them code faster, and their
177
  improvements reach the OS faster
178
179
180
Conflicts between business goals & user needs
181
---------------------------------------------
182
183
Canonical is primarily interested in open source software that runs on Linux
184
or lives within the Linux ecosystem.  Thus, even though Launchpad could be an
185
excellent, general platform for Windows, OS X, iOS and Android based software,
186
our main area of focus is software that is aimed to run natively on Linux.
187
188
Canonical is much more interested in quality assurance and release management
189
than many open source and even proprietary projects.
11307.3.16 by Jonathan Lange
Move a bunch of stuff out to values.txt
190
191
11307.3.2 by Jonathan Lange
Mega rough vision document
192
What is Launchpad?
193
==================
194
11307.3.4 by Jonathan Lange
Some content for the vision document.
195
Launchpad is a complete system for gathering changes from different types of
196
sources and collaboratively organizing them into packaged software for the end
12221.5.2 by Jonathan Lange
Import document from google docs
197
user, delivered as part of an operating system that can be downloaded or that
198
comes already installed on purchased hardware.
199
200
If you start by thinking of Launchpad as a traditional software “forge” – a
201
web service that provides bug tracking, code hosting and other related
202
services – then you are not too far off understanding what Launchpad is.
203
However, Launchpad has many distinctive traits that combine to put it into an
204
entirely different category of software.
205
206
But at its core, it is best to think of Launchpad as a service that meshes
207
together two important networks:
208
209
1. Networks of people making software
210
2. The network of dependencies between software.
211
212
213
Distinctive traits
214
------------------
11307.3.2 by Jonathan Lange
Mega rough vision document
215
11307.3.4 by Jonathan Lange
Some content for the vision document.
216
Launchpad is different from other "forges" in a few important ways:
217
11307.3.16 by Jonathan Lange
Move a bunch of stuff out to values.txt
218
219
Cross-project collaboration
220
~~~~~~~~~~~~~~~~~~~~~~~~~~~
221
222
No project lives in isolation.  Each project is part of an ecosystem of
223
software.  Projects must be able to interact with each other, share bugs,
224
teams, goals and code with each other.
225
12221.5.4 by Jonathan Lange
Correct links to images.
226
.. image:: images/cross-project-collab.svg
12221.5.2 by Jonathan Lange
Import document from google docs
227
228
Launchpad takes every chance it gets to show the connections between projects
229
and to bring the opportunities created by those connections to light.
230
231
By encompassing the entire process, all the way to operating system delivery,
232
Launchpad can provide a unique service: enable each contributor to focus on
233
the work they care about, while giving them an ambient awareness of how their
234
work fits into a larger picture, and providing a path by which they can
235
participate in other parts of that picture when they feel the need.
236
11307.3.16 by Jonathan Lange
Move a bunch of stuff out to values.txt
237
238
Front-end to open source
11307.3.4 by Jonathan Lange
Some content for the vision document.
239
~~~~~~~~~~~~~~~~~~~~~~~~
240
11307.3.16 by Jonathan Lange
Move a bunch of stuff out to values.txt
241
Launchpad aims to be a front-end to open source.  Whether or not a project
242
chooses to host on Launchpad, opportunistic developers can use Launchpad to
243
navigate bugs, get code and send patches.  Likewise, we aim to present a
244
uniform interface to the projects we have.
245
246
12221.5.2 by Jonathan Lange
Import document from google docs
247
Centralized service
248
~~~~~~~~~~~~~~~~~~~
249
250
Because Launchpad emphasises cross-project collaboration, and because
251
Launchpad aims to be a front-end to all of open source, it necessarily has to
252
be a centralized service rather than a product that users deploy on their own
253
servers.
254
255
256
Networks of collaborators
257
~~~~~~~~~~~~~~~~~~~~~~~~~
258
259
Launchpad understands that much of the human interaction around open source is
260
not primarily social, but rather collaborative: many people working together
261
in different ways toward the same goals.
262
263
As such, Launchpad highlights actions and opportunities rather than
264
conversations and status. It answers questions like, “what can I do for you?”,
265
“who could help me do this?”, “who is waiting on me in order to get their
266
thing done?”, “can I rely on the advice offered by this person?” and so forth.
267
268
11307.3.16 by Jonathan Lange
Move a bunch of stuff out to values.txt
269
Distributions are projects too
270
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
271
272
Launchpad hosts Linux distributions in much the same way as it hosts projects,
273
allowing for developers to feel at home when interacting with distributions.
274
275
276
Gated development
277
~~~~~~~~~~~~~~~~~
278
279
Sometimes, secrets are necessary.  Launchpad understands that sometimes
280
development needs to be done privately, and the results only later shared with
281
the world.  Security fixes, OEM development for new hardware, proprietary
282
services with open source clients are all examples of these.
283
284
285
Hardware matters
286
~~~~~~~~~~~~~~~~
287
12221.5.2 by Jonathan Lange
Import document from google docs
288
Many software developers like to pretend that hardware does not really
289
exist. When people distribute software as part of an operating system, they
290
don't have the luxury of forgetting. Launchpad understands that developers
291
often need to acknowledge and work around differences thrown up by hardware.
11307.3.16 by Jonathan Lange
Move a bunch of stuff out to values.txt
292
293
294
We don't care if you use Launchpad, sort of
295
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
296
297
Many other forges exist to become more successful.  Although we love our users
12221.5.2 by Jonathan Lange
Import document from google docs
298
and welcome every new user, Launchpad does not judge its success by the number
299
of users.  If one project wishes to host its development on another platform,
300
Launchpad acts as a front-end to that platform.
11307.3.16 by Jonathan Lange
Move a bunch of stuff out to values.txt
301
302
303
One project, many communities
304
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
305
306
Any given project can have many distinct communities interested in it.  These
307
communities have different interests and different motivations, but all work
308
in the same project space so that they can easily benefit from each others'
309
efforts.
11307.3.14 by Jonathan Lange
Recent notes.
310
311
12221.5.2 by Jonathan Lange
Import document from google docs
312
Scope
313
=====
314
315
Launchpad has many major components. These can be broken up into four major
316
areas of functionality:
317
318
1. where work is done; developers interact with other developers
319
2. where plans are made and reviewed; expert users interact with expert users
320
   and developers
321
3. where projects engage with their communities; developers interact with end
322
   users and other developers, and vice-versa
323
4. major supporting features
324
12221.5.4 by Jonathan Lange
Correct links to images.
325
.. image:: images/scope.svg
12221.5.2 by Jonathan Lange
Import document from google docs
326
327
Work
328
----
329
330
At the core of every software project is the actual code that makes up that
331
project. Here “code” is a broad term that also includes the project’s
332
documentation, the translatable and translated strings that make up its user
333
interface, the packaging and integration scripts required to get the software
334
installed on end user’s systems and so forth.
335
336
Launchpad is built to be able to take contributions from anybody, regardless
337
of how involved they are in a project. For packages, translations and code
338
proper we provide mechanisms to allow people to review changes from others and
339
then merge them into the official parts of the project.
340
341
Launchpad pulls in changes that happen in the upstreams and downstreams of a
342
project, whether those changes are patches to code, new translations or
343
packaging updates. It makes contributors to a project aware of the work that’s
344
going on upstream and downstream and helps them take advantage of that work.
345
346
And, of course, all work is for nothing if it does not get to the people who
347
might want to actually use its results. As such, project maintainers can
348
publish released versions of their code, any contributor can publish Ubuntu
349
packages to unofficial archives or even set up Launchpad to automatically
350
build and publish packages of latest snapshots of code.
351
352
353
Plans
354
-----
355
356
People who are interested in doing something great will need to coordinate
357
their work, keep track of the defects in the things they have already done and
358
describe the things that they aren't doing yet but wish they could.
359
360
Every software product in the world has bugs. For some projects, the rate of
361
incoming bugs is fairly low, and each bug can expect to receive some attention
362
from a core developer.  For other projects, the rate of new bugs filed is so
363
high that the core development team can never hope to keep up with it.
364
Launchpad supports both kinds of projects.
365
366
If every software product has bugs, every software user has great ideas about
367
how a product can be improved. Project maintainers need to get at these ideas,
368
evaluate them, and develop them into workable concepts.
369
370
Often, a problem is so tricky that those concerned need to have a detailed,
371
managed discussion about what exactly the problem is.  At other times, the
372
problem is easy enough to define, but there are so many solutions with
373
difficult trade-offs or difficult implementations that it is better to talk
374
about them and plan them out before proceeding with any of them. Launchpad
375
acknowledges that this can happen on any project, and that becoming clear on a
376
problem or becoming clear on the “best” solution can be helped a great deal
377
using tools.
378
379
Crucially, all of these different types of “plans” – bugs, specifications,
380
blueprints, ideas – can span more than one code base and more than one
381
conceptual project. These plans need to be drafted, discussed, clarified and
382
reviewed before work starts, monitored, evaluated and changed as work
383
progresses, and then the results of that work need to be checked against the
384
plan when the work is finished.
385
386
387
Community
388
---------
389
390
Not everything that’s done on a project is work toward a particular outcome,
391
or plans for how to get there. Every project needs to have some things that
392
are more general and stable.
393
394
Projects need to be able to present themselves to the world, confident in
395
their identity and communicating exactly what they are about. Project
396
maintainers need to be able to announce important news, such as releases,
397
license changes or new practices. Contributors need to get a sense of who is
398
working on which parts of the project. Users need to be able to ask questions,
399
get support and give feedback.
400
401
Contributors also need to share documentation about the project and how the
402
project runs. They need to be able to discuss general topics about the
403
project.
404
405
Launchpad supports all of these things, and also makes it clear how any
406
project fits into the broader ecosystem of projects. It shows which projects
407
are upstreams or downstreams, which projects are affiliated with other
408
projects, which projects share contributors with other projects and so forth.
409
410
411
Supporting features
412
-------------------
413
414
Launchpad has many major areas of functionality that are best considered as
415
“supporting features”: APIs, migration services, privacy, the mail UI,
416
synchronizing with external systems.
417
11307.3.14 by Jonathan Lange
Recent notes.
418
11307.3.2 by Jonathan Lange
Mega rough vision document
419
New World
420
=========
421
12221.5.2 by Jonathan Lange
Import document from google docs
422
When Launchpad is really doing all of these things and doing them well, the
423
world of open source software will be significantly changed.
424
425
Patches will no longer lie decaying in someone else’s bug tracker, waiting to
426
be noticed. Instead, they will all be synced into a central code review system
427
and queued for review and approval.
428
429
Instead of a distribution tracking one set of bugs and upstream projects
430
tracking their own set of sometimes duplicated bugs, both upstream and
431
downstream developers can seamlessly accesses both sets of bugs.
432
433
434
The story of a bug
435
------------------
436
437
*Arnold* writes software for a living, and he runs Ubuntu on his desktop. He
438
wishes he could contribute to open source, but he doesn’t have much spare
439
time, and when he gets home from his job the last thing he wants to do is
440
program. However, the spirit of willingness is there.
441
442
One day, Arnold notices that Tomboy loses his formatting if he alt-tabs at the
443
wrong time. Arnold knows that a well-filed bug report is a thing of beauty to
444
most programmers, so he decides to spend a few moments to file a bug against
445
Tomboy.
446
447
Rather than search the net to find where Tomboy tracks its bugs, Arnold uses
448
Ubuntu’s built-in bug filing mechanism. It asks him a bunch of questions,
449
invites Arnold to write his bug report and then files the bug on Launchpad
450
against the Tomboy package in Ubuntu.
451
452
*Becca* has been dabbling in Ubuntu contribution for a while, mostly by
453
helping new users solve their problems or turn them into good bug reports. She
454
notices Arnold’s bug, sees that it’s well written and thinks that it would be
455
easy enough to test against trunk. She opens up the Tomboy source package in
456
Ubuntu and sees that there is a known-good daily build of Tomboy’s trunk
457
hosted in a trusted user archive. Becca installs Tomboy from this archive and
458
tests to see if the bug is still there in the latest version of the code. It
459
is. Becca sees this, opens up the original bug report and clicks a button to
460
forward the bug to the upstream bug tracker.
461
462
*Carlos* is one of the Tomboy developers. He sees the bug in the tracker, sees
463
that it has been tested against trunk, realizes that it’s an annoying bug
464
that’s easy to fix and decides to fix it. He does the fix, applies it to the
465
Tomboy trunk and marks the bug as fixed.
466
467
At this point, both Arnold and Becca are notified that the bug is fixed in
468
Tomboy trunk, and that they can try a version of Tomboy that has the fix by
469
using the known-good daily build archive for Tomboy. They are warned that this
470
is dangerous and may cause data loss, but they are also told how they can try
471
the bug fix for free using a cloud-based Ubuntu desktop. They both try the
472
bug, see that it’s fixed, and are happy, albeit a little impatient for the fix
473
to be actually released and part of stock Ubuntu.
474
475
Meanwhile, *Dalia* is an Ubuntu developer who takes a special interest in
476
desktop productivity applications like Tomboy. She checks on the Ubuntu source
477
package for Tomboy from time to time. The last time she checked, she saw that
478
quite a few bugs have been fixed in trunk but not yet released. Since she
479
knows the Tomboy release manager from long hours of IRC chat, she contacts him
480
and gently suggests that he do a release.
481
482
*Edmund*, the Tomboy release manager, takes Dalia’s hint well and realizes
483
that a release is way overdue. He makes a release of Tomboy following his
484
normal procedure.
485
486
Launchpad detects that Tomboy has a new, official release and alerts
487
interested distribution maintainers that the release has been made and now
488
would be a good time to package a new version. Dalia packages up a new
489
version, requests that an Ubuntu core developer sponsor the change and then
490
waits for the new version to be uploaded. Dalia also uploads the fixed version
491
to one of her personal archives so that others can easily get it without
492
waiting for the next release of Ubuntu.
493
494
*Fiona* the Ubuntu core developer sees Dalia’s patch in the sponsorship queue
495
on Launchpad, notes that it’s all good and then uploads the patch to the
496
official Ubuntu archive. (Fiona might also choose to upload the patch to
497
Debian).
498
499
Launchpad sees that this upload fixes a number of bugs, including the one
500
originally filed by Arnold, and automatically includes those bugs in the list
501
of bugs that will be fixed by the next release of Ubuntu.
502
503
Two months later, the next release of Ubuntu is actually released. Arnold
504
upgrades on release day, and tries out Tomboy to see if his bug was really,
505
actually fixed. It is, and all is right with the world.
506
507
508
Glossary
509
========
510
511
Upstream
512
  A software project itself, as opposed to the packaged version of a software
513
  project that is included in a distribution. Note, can also be used as a
514
  relative term, e.g. “Debian is upstream of Ubuntu”.
515
516
Downstream
517
  The opposite of an upstream. Can be used to refer either to a packaged
518
  version of a specific software project, or the entire distribution where
519
  that package occurs.
520
521
522
References
523
==========
524
525
* `Product values <values.txt>`_
526
* `Feature checklist <https://dev.launchpad.net/FeatureChecklist>`_