diff options
Diffstat (limited to 'hacking.adoc')
-rw-r--r-- | hacking.adoc | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/hacking.adoc b/hacking.adoc new file mode 100644 index 0000000..8e121d4 --- /dev/null +++ b/hacking.adoc @@ -0,0 +1,78 @@ += 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. Update the NEWS file + +6. git commit -a + +7. 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 thus 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. + |