Initial import to Tizen
[profile/ivi/python-twisted.git] / doc / historic / 2003 / pycon / releasing / releasing-twisted
1 #!/usr/bin/python2.2
2 # Moshe -- This seems like 30+ minutes to me!
3 from slides import NumSlide, Slide, Bullet, SubBullet, PRE, URL
4 from twslides import Lecture
5
6
7 lecture = Lecture(
8                 "Managing the Release of a Large Python Project",
9    Slide("About Twisted",
10          Bullet("Networking framework"),
11          Bullet("Other goodies"),
12          Bullet("60,000 lines of code"),
13          Bullet("Things can (and do) go wrong"),
14    ),
15    Slide("Python",
16          Bullet("Recap"),
17          Bullet("No compilation (except for native modules)"),
18          Bullet("Simple file-based modules (no registration)"),
19          Bullet("Distutils -- Does the common things"),
20    ),
21    Slide("Release Procedure -- Steps",
22          Bullet("Increment version in copyright file, README"),
23          Bullet("Tag release"),
24          Bullet("Export from CVS"),
25          Bullet("Rename toplevel directory"),
26          Bullet("Generate API and HOWTO documentation"),
27          Bullet("Create tarballs"),
28          Bullet("Move tarballs to target area"),
29          Bullet("Create Debian packages"),
30          Bullet("Put Debian packages in final place"),
31          Bullet("Upgrade production machine"),
32    ),
33    Slide("Release Procedure Overview - Documentation",
34           Bullet("Man pages -> Lore"),
35           Bullet("Lore documents -> HTML"),
36           Bullet("Lore documents -> PS/PDF"),
37           Bullet("API documentation -> HTML"),
38    ),
39    Slide("Release Procedure Overview - Testing",
40           Bullet("Run of the mill unit tests"),
41           Bullet("Acceptance tests of less portable things"),
42           Bullet("Prerelease tests for twistedmatrix.com-specific test"),
43           Bullet("twistedmatrix.com uses latest version  -- always!"),
44    ),
45    Slide("Release Procedure Overview - Debian",
46           Bullet("The Twisted machines use Debian packages"),
47           Bullet("The Twisted machines run latest version"),
48           Bullet("Debian packages are built as part of the release procedure"),
49    ),
50    Slide("Overview Summary",
51           Bullet("Many steps"),
52           Bullet("Each can fail", SubBullet(
53                  Bullet("Documentation can fail to build"),
54                  Bullet("Tests can fail"),
55                  Bullet("Debian packages can fail to build")),
56           ),
57           Bullet("Need robust automated setup"),
58    ),
59    Slide("Enter Release-Twisted",
60           Bullet("Python program to release Twisted"),
61           Bullet("Key word -- Robust"),
62           Bullet("Based on actions which can undo"),
63           Bullet("Flexible - able to recover a botched build from the middle"),
64           Bullet("Easy - has good defaults"),
65    ),
66    Slide("Testing - Recap",
67           Bullet("Testing is special - no effect"),
68           Bullet("The more, the better"),
69           Bullet("Harder to automate - machines can't tell right from wrong",
70                  SubBullet(Bullet("Except in Hollywood")),
71           ),
72    ),
73    Slide("Different Kinds of Tests - Unit Tests",
74          Bullet("Completely automated"),
75          Bullet("Completely machine-verifiable"),
76          Bullet("Portable"),
77          Bullet("Must always pass"),
78    ),
79    Slide("Different Kinds of Tests - Acceptance Tests",
80          Bullet("Interacts with user"),
81          Bullet("Probably works only on Linux"),
82          Bullet("Assumes many client side tools"),
83          Bullet("Exercises many parts of Twisted which are hard in unit tests"),
84    ),
85    Slide("Acceptance Tests Examples",
86          Bullet("Run Twisted web server, run user-defined web browser"),
87          Bullet("Run mail server, send mail and try to download with pop3"),
88          Bullet("Run IRC server, run user-defined IRC client"),
89    ),
90    Slide("Different Kinds of Tests - Prerelease Tests",
91          Bullet("TwistedMatrix.com dogfoods"),
92          Bullet("We want to test the dog food"),
93          Bullet("prerelease tests convince us that this version doesn't break "
94                 "completely"),
95          Bullet("Among other things, tests that distributed web works"),
96    ),
97    Slide("Epydoc",
98    ),
99    Slide("Epyrun",
100    ),
101    Slide("Distutils -- Datafiles",
102    ),
103    Slide("Distutils -- Conditional compilation",
104    ),
105    Slide("Distutils -- Conditional compilation woes",
106    ),
107    Slide("Distutils -- Other woes",
108          Bullet("Versions -- keywords were added later"),
109          Bullet("Icky to do platform dependent stuff"),
110    ),
111    Slide("release-twistd -- master script",
112    ),
113    Slide("Commit/rollback",
114    ),
115    Slide("CVS and tagging",
116    ),
117    Slide("Debian Packages -- Challenges",
118          Bullet("Versioning: We want 1.0.2alpha4 to precede 1.0.2"),
119          Bullet("Dependencies: Which versions of Python? 2.1? 2.2? 2.3?"),
120          Bullet("Dependencies: Which libc version?"),
121    ),
122    Slide("Debian Packages -- Solutions",
123          Bullet("Build two sets -- for Debian stable and for Debian unstable"),
124          Bullet("When building on stable, remove python2.3-dev from build"
125                 " dependencies", SubBullet(
126                 Bullet("This stops the Python 2.3 version from being built")),
127          ),
128          Bullet("If building a non-final version, name it 1.0.1+1.0.2alpha4"),
129          Bullet("Unstable build is done by sshing into an unstable chroot"),
130    ),
131    Slide("Windows Releases -- Challenges",
132    ),
133    Slide("Windows Releases -- Solutions",
134    ),
135    Slide("Why Not Dependency Management?",
136    ),
137    Slide("Conclusions",
138          Bullet("Distutils does not do enough"),
139          Bullet("Cross compiling is hard"),
140          Bullet("It would be nice if Python had integrated docstring tools"),
141          Bullet("Wheel reinvention is useful"),
142    ),
143    Slide("Future Directions",
144          Bullet("RPMs for Various Distributions"),
145          Bullet("More automation"),
146    ),
147    Slide("Questions?",
148    ),
149 )
150
151 lecture.renderHTML(".", "releasing-%d.html", css="main.css")