From 3aecc6d0a8d757d6159dfa5083f1b254296c5b43 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 7 Apr 2024 16:27:58 +0200 Subject: Adding upstream version 2.23+dfsg. Signed-off-by: Daniel Baumann --- hacking.adoc | 80 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 hacking.adoc (limited to 'hacking.adoc') diff --git a/hacking.adoc b/hacking.adoc new file mode 100644 index 0000000..99ab7b6 --- /dev/null +++ b/hacking.adoc @@ -0,0 +1,80 @@ += 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) 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 added SSL/TLS support and did +significant refactoring work. + +Daniel Franke performed a security audit of irkerd. + +Georg Brandl contributed the Mercurial support in +irkerhook.py and explained how to make Control-C work right. + +Laurent Bachelier 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 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. + -- cgit v1.2.3