source: trunk/doc/overview.txt @ 2

Revision 2, 5.5 KB checked in by dom, 5 years ago (diff)

Importing revision 150 of XP Dojo from BerliOS

Line 
1-*- mode: text; fill-column: 55 -*-
2
3The practice of Extreme Programming brings about new
4ways of programming, collaborating and
5communicating. There is relatively little support for
6these in traditional development tools, which instead
7provide many features not ever used for Extreme
8Programming.
9
10The principal aim of the XP Dojo project is to provide
11*a self-contained, simple tool which fullfills the
12needs of an Extreme Programming team*. In doing so, we
13also hope:
14
15- to explore some new ways of practising Extreme
16  Programming which require support from tools
17- to facilitate adoption of Extreme Programming by
18  automating or simplifying the satisfaction of
19  traditional needs (tracking, tracability,
20  reporting...)
21- to explore and enable distributed Extreme
22  Programming, in particular for open source projects
23  including XP Dojo itself.
24
25** Presentation
26
27XP Dojo is a common (virtual) location where all the
28participants in the project can assemble to further the
29project by practicing the art of Extreme Programming.
30
31It provides a central repository for all the code,
32tests and information related to a project. It provides
33for the specific kinds of collaborative work required
34by XP. The Dojo provides three interfaces:
35
36- A rich client, which provides the most features and
37  is an XP-dedicated IDE.
38- A simplified Web client, which provides universal
39  remote access but fewer features.
40- A fully scriptable, textual interface, which can be
41  used by the team to specialize XP Dojo, and also
42  allows some features to be used in conjunction with
43  external tools (your favourite IDE, or your current
44  source control tool, for example).
45
46Initially, XP Dojo will support programming in Erlang
47and C. We would like to extend it to other languages
48but have no definite plans.
49
50** Design philosophy
51
52The role of XP Dojo is not to make decisions for you or
53to enforce a process. It is to simplify rote tasks, and
54to perform complex computations that enable programmers
55to make better-informed decisions, to explore their
56consequences, or reverse them.
57
58It should be possible to use XP Dojo for ordinary,
59non-XP programming!  However, Dojo should make XP so
60easy, and its advantages so clear, that it is tempting
61to follow the XP process.
62
63** Most extreme features
64
65XP Dojo is designed around test-driven development. For
66example, the code browser automatically displays tests
67side-by-side with the corresponding code. Writing a
68test for a new function will automatically generate all
69the boilerplate code for the module and function. The
70tests are automatically and continuously run in the
71background.
72
73XP Dojo incorporates its own, revolutionary, revision
74control system, which is completely designed for
75Extreme Programming and can be completely transparent
76to users.
77
78Of course, XP Dojo enables pair programming, in ways
79that are useful whether you are in the same room or on
80the other side of the world.
81
82** Overview of main stories
83
84*** Pair programming
85
86Choose from a list of connected users to become
87someone's copilot.  Only the driver may modify the
88code, but the copilot can see exactly what the driver
89is doing (including the cursor position, the selection,
90mouse movement, button presses etc.)
91
92Either user may switch drivers.
93
94The copilot may also browse other parts of the code
95without affecting what the driver is doing.
96
97A special "challenge-response" mode switches drivers
98automatically every time the tests change status (from
99green to red).
100
101If you are not in the same room, activate voice
102transmission.
103
104Look at a graph representing how much or how recently
105you have paired with the other members of the project.
106
107*** Test driven development
108
109The current status of the unit tests (green = pass,
110yellow = not runnable, red = failures) is updated at
111every keystroke.
112
113The current status of the acceptance tests (n° of
114passes, n° of regressions, n° waiting to pass) is
115updated every time the unit tests are green.
116
117Test code and application code is automatically
118displayed side by side.
119
120Create or modify a module or function by adding a
121failing test. A stub is inferred from the test.
122
123In the background, XP Dojo continuously performs
124mutations on the code and warns the programmer if any
125mutation did not cause a test to fail.
126
127*** Refactoring
128
129XP Dojo provides support for automatic or
130computer-assisted refactoring.
131
132*** Continuous integration
133
134A development session is automatically created by any
135change to the code or tests which result in a failed
136unit test. As soon as all the unit tests pass again,
137the changes are automatically committed and the session
138is over.
139
140XP Dojo interprets all changes to code as a refactoring
141(i.e. a semantic, logical change, not a line-by-line
142change). Each time a development session is committed,
143its "semantic change list" can be automatically aplied
144to all other active sessions, which are thus
145automatically updated. Because the changes applied to
146them are semantic, the result is always correct code.
147
148XP Dojo extends continuous integration to continuous
149deployment. Release packages are built automatically,
150and acceptance tests are carried out using the latest
151release package. Each time an additional acceptance
152test passes, a release can be automatically deployed to
153subscribed users. For Erlang applications, this can
154result in automatic hot code update without
155interrupting the application.
156
157*** Collective code ownership
158
159XP Dojo stores code as an abstract syntax tree, not as
160source files, so code is automatically displayed
161according to a unique (project-wide configurable)
162style.
163
164Look at a graph representing how much or how recently
165you have worked in various parts of the code.
166
Note: See TracBrowser for help on using the repository browser.