<div dir="ltr">Here is my wamp proof of concept, which is very old and clunky.<div><a href="https://github.com/buildbot/buildbot/pull/1526">https://github.com/buildbot/buildbot/pull/1526</a><br></div><div><br></div><div>It cannot really work now because it needs wamp routing capability of autobahn, which was available at that time, but not available anymore.</div><div>I did try to make it work over crossbar, but it does not make much sense, it was to unreliable to detect wether a worker was connected or not.</div><div><br></div><div>That poc does at least show what you have to implement to describe a new protocol backend.</div><div><br></div><div>The null protocol (made after that poc) is also a very good start to understand what api the upper layer are expecting to see.</div><div><a href="https://github.com/buildbot/buildbot/blob/master/master/buildbot/worker/protocols/null.py">https://github.com/buildbot/buildbot/blob/master/master/buildbot/worker/protocols/null.py</a><br></div><div><br></div><div>There are interop integration tests which are designed to be used for testing protocol implementation, and worker/master compatibility:</div><div><a href="https://github.com/buildbot/buildbot/tree/master/master/buildbot/test/integration/interop">https://github.com/buildbot/buildbot/tree/master/master/buildbot/test/integration/interop</a></div><div><br></div><div>Twisted amp looks like a good candidate to implement a new protocol. I think it would be a good idea to make it available over websocket, rather than using another port, this would allow to delegate authentication parts to the http stack, and the encryption part to an https frontend.</div><div>amp has implementation for c: <a href="https://amp-protocol.net/Implementations/">https://amp-protocol.net/Implementations/</a></div><div>Problem with amp is that it is not very much used.</div><div><br></div><div>Another good option for serialization and RPC would be protobuf, which is a bit more complex, but benefits from strong experience/support from Google. <a href="https://developers.google.com/protocol-buffers/">https://developers.google.com/protocol-buffers/</a></div><div><br></div><div>both amp and protobuf require separate specification of message, which is clearly a must have for a new protocol.</div><div><br></div><div>I'd second Dustin on the suggestion to use go for implementation. I think go has good options for cross compilation and static binaries.</div><div>Go has very good support for http/https client and protobuf code generation.</div><div>If you really want c, for sure that will work too, but probably a little bit more work to make it secure/reliable.</div><div><br></div><div><br></div></div><br><div class="gmail_quote"><div dir="ltr">On Wed, Jan 31, 2018 at 8:48 PM Michał Łyszczek <<a href="mailto:michal.lyszczek@bofc.pl">michal.lyszczek@bofc.pl</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">31 January 2018 19:56:40 CET Dustin J. Mitchell wrote:<br>
> I would not recommend it!  The current protocol is based on Perspective<br>
> Broker, which is pretty Python-related as it involves seralization of<br>
> Python objects.  However, Buildbot has an abstraction over its protocols,<br>
> and there is room to add a different, more language-agnostic protocol.  In<br>
> fact, there was a good bit of work to develop one based on AMP.<br>
><br>
> As for language, I'd recommend Rust or Golang over C for this sort of<br>
> thing.  Safety is going to be pretty important.<br>
<br>
I want to write in C for a reason. It's everywhere, it already has virtually<br>
all dependencies in all (posix) systems, it's very easy to deploy and it can<br>
run *everywhere*. And if python is not available, I'd say rust and goland<br>
won't be either.<br>
<br>
So as I understand, right now only one protocol is implemented - Perspective<br>
Broker which is only for python clients and AMP is work in progress. Is<br>
someone working on it? Is there some public branch with current work?<br>
<br>
--<br>
Best Regards<br>
Michal Lyszczek_______________________________________________<br>
devel mailing list<br>
<a href="mailto:devel@buildbot.net" target="_blank">devel@buildbot.net</a><br>
<a href="https://lists.buildbot.net/mailman/listinfo/devel" rel="noreferrer" target="_blank">https://lists.buildbot.net/mailman/listinfo/devel</a></blockquote></div>