~justin-fathomdb/nova/justinsb-openstack-api-volumes

« back to all changes in this revision

Viewing changes to vendor/Twisted-10.0.0/doc/historic/2003/pycon/releasing/releasing-twisted

  • Committer: Jesse Andrews
  • Date: 2010-05-28 06:05:26 UTC
  • Revision ID: git-v1:bf6e6e718cdc7488e2da87b21e258ccc065fe499
initial commit

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
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")