80 lines
2.6 KiB
Text
80 lines
2.6 KiB
Text
= Hacker's Guide to irker =
|
|
|
|
== Design philosopy ==
|
|
|
|
Points to you if some of this seems familiar from GPSD...
|
|
|
|
=== Keep mechanism and policy separate ===
|
|
|
|
Mechanism goes in irkerd. Policy goes in irkerhook.py
|
|
|
|
irkerd is intended to be super-simple and completely indifferent to
|
|
what content passes through it. It doesn't know, in any sense, that
|
|
the use-case it was designed for is broadcasting notifications from
|
|
version control systems. irkerhook.py is the part that knows about how
|
|
to mine data from repositories and sets the format of notifications.
|
|
|
|
=== If you think the mechanism needs an option, think again ===
|
|
|
|
Because irkerhook.py does policy, it takes policy options. Because
|
|
irkerd is pure mechanism, it shouldn't need any. If you think it
|
|
does, you have almost certainly got a bug in your thinking. Fix
|
|
that before you modify code.
|
|
|
|
=== Never configure what you can autoconfigure ===
|
|
|
|
Human attention is more expensive than machine time. Humans are
|
|
careless and failure-prone. Therefore, whenever you make a user tell
|
|
your code something the code can deduce for itself, you are
|
|
introducing unnecessary inefficiency and unnecessary failure modes.
|
|
|
|
This, in particular, is why irkerhook.py doesn't have a repository
|
|
type switch. It can deduce the repo type by looking, so it should.
|
|
|
|
== Release procedure ==
|
|
|
|
1. Check for merge requests at the repository.
|
|
|
|
2. Do 'make pylint' to audit the code.
|
|
|
|
3. Run irk with a sample message; look at #irker on freenode to verify.
|
|
|
|
4. Bump the version numbers in irkerd and irkerhook.py
|
|
|
|
5. Run irkerhook.py -n and verify that the output looks sane.
|
|
|
|
6. Update the NEWS file
|
|
|
|
7. git commit -a
|
|
|
|
8. make release
|
|
|
|
== Thanks where due ==
|
|
|
|
Alexander van Gessel (AI0867) <ai0867@gmail.com> contributed the
|
|
Subversion support in irkerhook.py. Since the 1.0 release he has
|
|
kept as close an eye on the code as the author and has fixed at least
|
|
as many bugs.
|
|
|
|
//W. here causes asciidoc to see this as a list entry.
|
|
W Trevor King <wking@tremily.us> added SSL/TLS support and did
|
|
significant refactoring work.
|
|
|
|
Daniel Franke <dfoxfranke@gmail.com> performed a security audit of irkerd.
|
|
|
|
Georg Brandl <georg@python.org> contributed the Mercurial support in
|
|
irkerhook.py and explained how to make Control-C work right.
|
|
|
|
Laurent Bachelier <laurent@bachelier.name> fixed the Makefile so it
|
|
wouldn't break stuff and wrote the first version of the external
|
|
filtering option.
|
|
|
|
dak180 (name withheld by request) wrote the OS X launchd plist.
|
|
|
|
Wulf C. Krueger <philantrop@exherbo.org> wrote the systemd
|
|
installation support.
|
|
|
|
Other people on the freenode #irker channel (Kingpin, fpcfan,
|
|
shadowm, Rick) smoked out bugs in irkerd before they could seriously
|
|
bug anybody.
|
|
|