posts: 080
authorLucian Mogosanu <lucian.mogosanu@gmail.com>
Thu, 31 Jan 2019 21:55:46 +0000 (23:55 +0200)
committerLucian Mogosanu <lucian.mogosanu@gmail.com>
Thu, 31 Jan 2019 21:56:48 +0000 (23:56 +0200)
posts/y05/080-botworks-regrind.markdown
uploads/2018/11/botworks-v-tree.svg [new file with mode: 0644]

index dffe1a6..7ef216d 100644 (file)
@@ -6,4 +6,169 @@ author: Lucian MogoČ™anu
 tags: tech, tmsr
 ---
 
-TODO: Merge downstream from tuvok
+This post is a regrind proposal for [Trinque][trinque]'s
+[botworks patchset][bot], including [ircbot][ircbot], [logbot][logbot]
+and [trilemabot][trilemabot], as a result of multiple discussion threads
+in the forum of the Most Serene Republic[^1].
+
+The new set of V patches is available in my [repository][botworks]. It
+can be pressed with e.g. [vk.pl][diana] as follows:
+
+~~~~ {.bash}
+$ mkdir botworks; cd botworks; mkdir .wot
+# Make sure to add spyked.asc key in .wot (via e.g. deedbot)
+$ vk.pl init http://lucian.mogosanu.ro/src/botworks/
+# Example: pressing to logbot-genesis
+$ vk.pl p v logbot-genesis logbot-genesis.vpatch
+~~~~
+
+Some notes, starting from the structure of the new V tree:
+
+<!-- ugh! -->
+<div style="text-align:center">
+<img class="thumb" src="/uploads/2018/11/botworks-v-tree.svg">
+</div>
+
+This particular organization of V patches was chosen in order to
+preserve both history and the "based on" relation between botworks
+components -- currently ircbot, logbot and trilemabot. Thus: a. both
+trilemabot and logbot are based on ircbot, and the Python command router
+is based on logbot; b. logbot-genesis flows directly from
+ircbot-genesis; c. trilemabot flows from
+ircbot-multiple-channels-corrected[^2]; and d. the
+{logbot,ircbot}-multiple-channels-corrected patches are also "merged"
+together in a new V patch[^3].
+
+A consequence of this organization is that trilemabot and logbot being
+on two separate sides of the tree, at the moment they cannot be pressed
+together[^4].
+
+Another consequence is that out of three tested V implementations, one
+([v.py][barksinthewind]) is not able to generate a correct press,
+requiring that only one side of the tree exist in the patches
+directory[^5]. The other two ([v.pl][diana] and [Esthlos V][esthlos])
+however work. For example:
+
+~~~~
+$ ls -1 patches .seals
+patches:
+ircbot-genesis.vpatch
+ircbot-logbot-multiple-channels-corrected.vpatch
+ircbot-multiple-channels-corrected.vpatch
+logbot_command_router_python_genesis.vpatch
+logbot-genesis.vpatch
+trilemabot-prefixed-cmd.vpatch
+trilemabot-voicer.vpatch
+
+.seals:
+ircbot-genesis.vpatch.spyked.sig
+ircbot-logbot-multiple-channels-corrected.vpatch.spyked.sig
+ircbot-multiple-channels-corrected.vpatch.spyked.sig
+logbot_command_router_python_genesis.vpatch.spyked.sig
+logbot-genesis.vpatch.spyked.sig
+trilemabot-prefixed-cmd.vpatch.spyked.sig
+trilemabot-voicer.vpatch.spyked.sig
+
+$ vk.pl pp logbot_command_router_python_genesis.vpatch
+ircbot-genesis.vpatch (spyked)
+logbot-genesis.vpatch (spyked)
+ircbot-logbot-multiple-channels-corrected.vpatch (spyked)
+logbot_command_router_python_genesis.vpatch (spyked)
+
+$ vk.pl pp trilemabot-prefixed-cmd.vpatch
+ircbot-genesis.vpatch (spyked)
+ircbot-multiple-channels-corrected.vpatch (spyked)
+trilemabot-voicer.vpatch (spyked)
+trilemabot-prefixed-cmd.vpatch (spyked)
+~~~~
+
+And yes, e.g. `vk.pl p v my-dir trilemabot-prefixed-cmd.vpatch` produces
+a correct press. Neat, huh? So go [grab the patches][botworks] and tell
+me what you think!
+
+[^1]: Long story short: a. the current Republican IRC bot components are
+    to be unified under a single V tree; and b. no new Vtronic work
+    shall be submitted using the heathen SHA hashes, which implies a
+    Keccak regrind before anything. A few references below:
+
+    * [Discussion][btcbase-1819005] on the organization of V trees and
+      the flow of V patches, and in particular those of ircbot, logbot
+      and similar.
+    * [I propose][btcbase-1832542] to do a regrind of the botworks tree.
+    * [I agree][btcbase-1832815] to do said regrind.
+    * [Discussion][btcbase-1820387] on the directory structure of V
+      presses, in particular that of botworks.
+    * Proposal for a [Keccak-based v.py][barksinthewind], a
+      [V in Common Lisp][esthlos], and a [Keccak-based v.pl][diana].
+    * All new Republican V patches
+      [must be based on Keccak][btcbase-1851879].
+
+    The last point solves my [earlier dilemma][trilemabot-ii] on what to
+    prioritize.
+
+[^2]: While trilemabot-voicer could in principle be a direct child of
+    ircbot-genesis, I, as a trilemabot user who keeps all his bots in
+    multiple channels, don't see any reason for keeping this
+    functionality out. If you feel strongly about this, you're free to
+    submit patches, test results and so on.
+
+[^3]: This is, as far as I can tell, the cleanest way to represent the
+    fact that the so-called "logbot-with-multiple-channels" depends on
+    both "logbot-genesis" and "ircbot-with-multiple-channels", while at
+    the same time adhering to the "V patch may have only one parent"
+    philosophy that arises from the use of [manifests][manifest].
+
+[^4]: Which suggests that this might be the wrong way to cut it (at
+    least for some). Let's take a deeper look at this problem, because
+    it informs other decisions, such as the
+    [eventual replacement][btcbase-1856367] of ASDF with V.
+
+    First off, we know from numerous discussions in the logs,
+    e.g. [1][btcbase-1862430], [2][btcbase-1862674] or
+    [3][btcbase-1873668], that manifests enforce a linear flow of V
+    patches, to sit well with the linear flow of history. Then a
+    divergence in the V chain, i.e. the existence of a branching point
+    in history, will denote changes that are (semantically) mutually
+    exclusive, such as the particularization of some functionality to a
+    specific hardware architecture.
+
+    This is all good, but I reground the trilemabot and logbot patches
+    -- that provide two disjunct but *not* mutually exclusive components
+    of the botworks set -- as two divergent branches for a different
+    reason: I for example want to exclude Postgres dependencies from the
+    trilemabot-based [spykedbot][spykedbot] (I might later want to add a
+    text or MySQL-based logging mechanism, or who knows), while on the
+    other hand [Lobbes][lobbes] [needs][btcbase-1862345] both logging
+    and voicing functionality into his own bot.
+
+    This problem could be solved for example by extending one of the
+    existing branches with the missing functionality -- but which one?
+    Since I'm not sure how to proceed here, I'm submitting this to the
+    forum for discussion. I'm eager to hear your comments!
+
+[^5]: See also [this discussion][btcbase-1833105].
+
+[trinque]: http://trinque.org/
+[bot]: http://btcbase.org/patches?patchset=bot
+[ircbot]: http://trinque.org/2016/08/10/ircbot-genesis/
+[logbot]: http://trinque.org/2016/08/11/logbot-genesis/
+[trilemabot]: /posts/y04/072-trilemabot-i.html
+[btcbase-1819005]: http://btcbase.org/log/2018-05-25#1819005
+[btcbase-1832542]: http://btcbase.org/log/2018-07-07#1832542
+[btcbase-1832815]: http://btcbase.org/log/2018-07-08#1832815
+[btcbase-1820387]: http://btcbase.org/log/2018-06-03#1820387
+[barksinthewind]: http://barksinthewind.com/2018/vpy-updated-for-vtools/
+[esthlos]: http://blog.esthlos.com/esthlos-v-release-with-working-keccak/
+[diana]: http://ossasepia.com/2018/11/13/v-with-vtools-keccak-hashes-and-its-own-tree/
+[btcbase-1851879]: http://btcbase.org/log/2018-09-19#1851879
+[trilemabot-ii]: /posts/y05/078-trilemabot-ii.html#selection-227.0-234.1
+[botworks]: http://lucian.mogosanu.ro/src/botworks/
+[manifest]: http://trinque.org/2018/06/02/v-manifest-specification/
+[btcbase-1856367]: http://btcbase.org/log/2018-10-01#1856367
+[btcbase-1862430]: http://btcbase.org/log/2018-10-14#1862430
+[btcbase-1862674]: http://btcbase.org/log/2018-10-15#1862674
+[btcbase-1873668]: http://btcbase.org/log/2018-11-19#1873668
+[spykedbot]: http://btcbase.org/log-search?q=from%3Aspykedbot
+[lobbes]: http://lobbesblog.com/
+[btcbase-1862345]: http://btcbase.org/log/2018-10-14#1862345
+[btcbase-1833105]: http://btcbase.org/log/2018-07-10#1833105
diff --git a/uploads/2018/11/botworks-v-tree.svg b/uploads/2018/11/botworks-v-tree.svg
new file mode 100644 (file)
index 0000000..af40808
--- /dev/null
@@ -0,0 +1,91 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
+ "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<!-- Generated by graphviz version 2.40.1 (20161225.0304)
+ -->
+<!-- Title: botworks Pages: 1 -->
+<svg width="424pt" height="260pt"
+ viewBox="0.00 0.00 423.50 260.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 256)">
+<title>botworks</title>
+<polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-256 419.5,-256 419.5,4 -4,4"/>
+<!-- ircbot&#45;genesis -->
+<g id="node1" class="node">
+<title>ircbot&#45;genesis</title>
+<polygon fill="none" stroke="#000000" points="232.5,-252 140.5,-252 140.5,-216 232.5,-216 232.5,-252"/>
+<text text-anchor="middle" x="186.5" y="-230.3" font-family="Times,serif" font-size="14.00" fill="#000000">ircbot&#45;genesis</text>
+</g>
+<!-- ircbot&#45;multiple&#45;channels&#45;corrected -->
+<g id="node2" class="node">
+<title>ircbot&#45;multiple&#45;channels&#45;corrected</title>
+<polygon fill="none" stroke="#000000" points="205,-180 0,-180 0,-144 205,-144 205,-180"/>
+<text text-anchor="middle" x="102.5" y="-158.3" font-family="Times,serif" font-size="14.00" fill="#000000">ircbot&#45;multiple&#45;channels&#45;corrected</text>
+</g>
+<!-- ircbot&#45;genesis&#45;&gt;ircbot&#45;multiple&#45;channels&#45;corrected -->
+<g id="edge1" class="edge">
+<title>ircbot&#45;genesis&#45;&gt;ircbot&#45;multiple&#45;channels&#45;corrected</title>
+<path fill="none" stroke="#000000" d="M165.3033,-215.8314C155.0566,-207.0485 142.5997,-196.3712 131.4903,-186.8489"/>
+<polygon fill="#000000" stroke="#000000" points="133.5603,-184.0134 123.69,-180.1628 129.0048,-189.3282 133.5603,-184.0134"/>
+</g>
+<!-- logbot&#45;genesis -->
+<g id="node5" class="node">
+<title>logbot&#45;genesis</title>
+<polygon fill="none" stroke="#000000" points="325,-180 230,-180 230,-144 325,-144 325,-180"/>
+<text text-anchor="middle" x="277.5" y="-158.3" font-family="Times,serif" font-size="14.00" fill="#000000">logbot&#45;genesis</text>
+</g>
+<!-- ircbot&#45;genesis&#45;&gt;logbot&#45;genesis -->
+<g id="edge4" class="edge">
+<title>ircbot&#45;genesis&#45;&gt;logbot&#45;genesis</title>
+<path fill="none" stroke="#000000" d="M209.4631,-215.8314C220.6715,-206.9632 234.3209,-196.1637 246.4439,-186.5718"/>
+<polygon fill="#000000" stroke="#000000" points="248.8737,-189.1125 254.5442,-180.1628 244.5303,-183.6229 248.8737,-189.1125"/>
+</g>
+<!-- trilemabot&#45;voicer -->
+<g id="node3" class="node">
+<title>trilemabot&#45;voicer</title>
+<polygon fill="none" stroke="#000000" points="144,-108 33,-108 33,-72 144,-72 144,-108"/>
+<text text-anchor="middle" x="88.5" y="-86.3" font-family="Times,serif" font-size="14.00" fill="#000000">trilemabot&#45;voicer</text>
+</g>
+<!-- ircbot&#45;multiple&#45;channels&#45;corrected&#45;&gt;trilemabot&#45;voicer -->
+<g id="edge2" class="edge">
+<title>ircbot&#45;multiple&#45;channels&#45;corrected&#45;&gt;trilemabot&#45;voicer</title>
+<path fill="none" stroke="#000000" d="M98.9672,-143.8314C97.4699,-136.131 95.6895,-126.9743 94.0255,-118.4166"/>
+<polygon fill="#000000" stroke="#000000" points="97.4248,-117.5614 92.0804,-108.4133 90.5535,-118.8975 97.4248,-117.5614"/>
+</g>
+<!-- trilemabot&#45;prefixed&#45;cmd -->
+<g id="node4" class="node">
+<title>trilemabot&#45;prefixed&#45;cmd</title>
+<polygon fill="none" stroke="#000000" points="155,-36 4,-36 4,0 155,0 155,-36"/>
+<text text-anchor="middle" x="79.5" y="-14.3" font-family="Times,serif" font-size="14.00" fill="#000000">trilemabot&#45;prefixed&#45;cmd</text>
+</g>
+<!-- trilemabot&#45;voicer&#45;&gt;trilemabot&#45;prefixed&#45;cmd -->
+<g id="edge3" class="edge">
+<title>trilemabot&#45;voicer&#45;&gt;trilemabot&#45;prefixed&#45;cmd</title>
+<path fill="none" stroke="#000000" d="M86.2289,-71.8314C85.2664,-64.131 84.1218,-54.9743 83.0521,-46.4166"/>
+<polygon fill="#000000" stroke="#000000" points="86.5151,-45.9019 81.8017,-36.4133 79.5691,-46.7702 86.5151,-45.9019"/>
+</g>
+<!-- ircbot&#45;logbot&#45;multiple&#45;channels&#45;corrected -->
+<g id="node6" class="node">
+<title>ircbot&#45;logbot&#45;multiple&#45;channels&#45;corrected</title>
+<polygon fill="none" stroke="#000000" points="411.5,-108 167.5,-108 167.5,-72 411.5,-72 411.5,-108"/>
+<text text-anchor="middle" x="289.5" y="-86.3" font-family="Times,serif" font-size="14.00" fill="#000000">ircbot&#45;logbot&#45;multiple&#45;channels&#45;corrected</text>
+</g>
+<!-- logbot&#45;genesis&#45;&gt;ircbot&#45;logbot&#45;multiple&#45;channels&#45;corrected -->
+<g id="edge5" class="edge">
+<title>logbot&#45;genesis&#45;&gt;ircbot&#45;logbot&#45;multiple&#45;channels&#45;corrected</title>
+<path fill="none" stroke="#000000" d="M280.5281,-143.8314C281.8115,-136.131 283.3376,-126.9743 284.7639,-118.4166"/>
+<polygon fill="#000000" stroke="#000000" points="288.2394,-118.8526 286.4311,-108.4133 281.3347,-117.7018 288.2394,-118.8526"/>
+</g>
+<!-- logbot_command_router_python_genesis -->
+<g id="node7" class="node">
+<title>logbot_command_router_python_genesis</title>
+<polygon fill="none" stroke="#000000" points="415.5,-36 173.5,-36 173.5,0 415.5,0 415.5,-36"/>
+<text text-anchor="middle" x="294.5" y="-14.3" font-family="Times,serif" font-size="14.00" fill="#000000">logbot_command_router_python_genesis</text>
+</g>
+<!-- ircbot&#45;logbot&#45;multiple&#45;channels&#45;corrected&#45;&gt;logbot_command_router_python_genesis -->
+<g id="edge6" class="edge">
+<title>ircbot&#45;logbot&#45;multiple&#45;channels&#45;corrected&#45;&gt;logbot_command_router_python_genesis</title>
+<path fill="none" stroke="#000000" d="M290.7617,-71.8314C291.2965,-64.131 291.9323,-54.9743 292.5266,-46.4166"/>
+<polygon fill="#000000" stroke="#000000" points="296.02,-46.6317 293.2213,-36.4133 289.0368,-46.1467 296.02,-46.6317"/>
+</g>
+</g>
+</svg>