summaryrefslogtreecommitdiffstats
path: root/hacking.adoc
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-07 14:27:58 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-07 14:27:58 +0000
commit3aecc6d0a8d757d6159dfa5083f1b254296c5b43 (patch)
tree3a305eb312ed47a1ac8967170ea1d45bb3c208be /hacking.adoc
parentInitial commit. (diff)
downloadirker-3aecc6d0a8d757d6159dfa5083f1b254296c5b43.tar.xz
irker-3aecc6d0a8d757d6159dfa5083f1b254296c5b43.zip
Adding upstream version 2.23+dfsg.upstream/2.23+dfsgupstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'hacking.adoc')
-rw-r--r--hacking.adoc80
1 files changed, 80 insertions, 0 deletions
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) <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.
+