<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<!--[if !mso]><style>v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
</style><![endif]--><style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
p.msonormal0, li.msonormal0, div.msonormal0
        {mso-style-name:msonormal;
        margin:0cm;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
span.EmailStyle20
        {mso-style-type:personal;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
span.EmailStyle21
        {mso-style-type:personal-compose;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:70.85pt 70.85pt 70.85pt 70.85pt;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-US" link="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoNormal">Hi,<o:p></o:p></p>
<p class="MsoNormal">Thank you for bringing this up and all the improvements Florian!<o:p></o:p></p>
<p class="MsoNormal">Golang seems to gain more popularity for quite a lot cloud native software, it makes sense to have this type of plugins integrated well. I’m sure there will be interest in contributing to those.<o:p></o:p></p>
<p class="MsoNormal">I like the idea you have described below with central community repository, with similar thoughts around.<o:p></o:p></p>
<p class="MsoNormal">Best regards,<o:p></o:p></p>
<p class="MsoNormal">KK<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<div style="border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0cm 0cm 0cm">
<p class="MsoNormal"><b>From:</b> collectd <collectd-bounces@verplant.org> <b>On Behalf Of
</b>Nick Babcock<br>
<b>Sent:</b> Saturday, April 25, 2020 10:23 PM<br>
<b>To:</b> collectd@verplant.org<br>
<b>Subject:</b> Re: [collectd] RFC: Should we maintain plugins written in Go?<o:p></o:p></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">I think it makes sense to support Go plugins. While I can't speak about Go directly, maintaining a Rust crate [0] for creating collectd plugins over the years has taught me that there are some benefits to out-of-band plugins compiled to
 shared objects:<o:p></o:p></p>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">- More rapid plugin releases (especially new plugins) that don't need to be tied to the main release<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">- Being able to have a plugin target collectd versions prior to its existent. For instance, the rust crate allows one to compile to a shared object that is compatible with either 5.4, 5.5, or 5.7+'s collectd plugin API. So in effect, new
 plugins can be backported to older collectd installations.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">I don't know if those are in accordance with your thoughts, but I feel like allowing Go plugins could also lower the barrier to entry for contributors.
<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">Thanks<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">-Nick.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">[0] <a href="https://crates.io/crates/collectd-plugin">https://crates.io/crates/collectd-plugin</a><o:p></o:p></p>
</div>
<div class="MsoNormal" align="center" style="text-align:center">
<hr size="2" width="98%" align="center">
</div>
<div id="divRplyFwdMsg">
<p class="MsoNormal"><b><span style="color:black">From:</span></b><span style="color:black"> collectd <<a href="mailto:collectd-bounces@verplant.org">collectd-bounces@verplant.org</a>> on behalf of Florian Forster <<a href="mailto:octo@collectd.org">octo@collectd.org</a>><br>
<b>Sent:</b> Thursday, April 23, 2020 1:29 AM<br>
<b>To:</b> <a href="mailto:collectd@verplant.org">collectd@verplant.org</a> <<a href="mailto:collectd@verplant.org">collectd@verplant.org</a>><br>
<b>Subject:</b> [collectd] RFC: Should we maintain plugins written in Go?</span> <o:p>
</o:p></p>
<div>
<p class="MsoNormal"> <o:p></o:p></p>
</div>
</div>
<div>
<div>
<p class="MsoNormal">Hi everybody,<br>
<br>
TL,DR: Should we create a new Git repository and maintain plugins <br>
written in the "Go" programming language?<br>
<br>
the last days, I spent some time improving the "collectd.org/plugin" <br>
package [0]. In a nutshell, it allows to implement a plugin in Go, <br>
compile it to a shared object and then load it like other "native" <br>
(implemented in C) plugins. The primary benefit over approaches such as <br>
the "collectd.org/exec" [1] and "collectd.org/rpc" [2] packages is, that <br>
it supports implementing "write" and "log" callbacks. "config" <br>
callbacks, allowing one to configure the plugin via the collectd config <br>
file, are work in progress.<br>
<br>
My question is: Should we attempt to maintain plugins written in Go? And <br>
if so, how?<br>
<br>
For Go-based plugins, i.e. plugins based on "collectd.org/plugin", I <br>
propose we create a separate repository, e.g. <br>
github.com/collectd/go-plugins, and maintain those there. This would <br>
make plugins easier to discover for users, allow easier changes to the <br>
API, and strive for consistency across the ecosystem.<br>
<br>
In the past, we have imported plugins in non-C languages into the main <br>
repository, in particular bindings/perl/ and bindings/java/. This model <br>
is not a good fit for Go, which makes much more assumptions about the <br>
directory structure of a repository. Also, for Perl and Java the "glue <br>
code" (code translating between Perl and Java, and C) is contained in <br>
the "main" reposiroty; that's not the case for Go.<br>
<br>
I'm also contemplating if we should try to support plugins using the <br>
"exec plugin" more, e.g. by creating a repository for them. There are a <br>
number of "collectd Docker" plugins and I feel like this duplication <br>
could have been avoided by better discoverability.<br>
<br>
Best regards,<br>
—octo<br>
<br>
[0] <a href="https://godoc.org/collectd.org/plugin">https://godoc.org/collectd.org/plugin</a><br>
[1] <a href="https://godoc.org/collectd.org/exec">https://godoc.org/collectd.org/exec</a><br>
[2] <a href="https://godoc.org/collectd.org/rpc">https://godoc.org/collectd.org/rpc</a><br>
-- <br>
collectd – The system statistics collection daemon<br>
Website: <a href="http://collectd.org">http://collectd.org</a><br>
GitHub:  <a href="https://github.com/collectd">https://github.com/collectd</a><br>
Twitter: <a href="http://twitter.com/collectd">http://twitter.com/collectd</a><br>
<br>
_______________________________________________<br>
collectd mailing list<br>
<a href="mailto:collectd@verplant.org">collectd@verplant.org</a><br>
<a href="https://mailman.verplant.org/listinfo/collectd">https://mailman.verplant.org/listinfo/collectd</a><o:p></o:p></p>
</div>
</div>
</div>
<p>---------------------------------------------------------------------<br>
<strong style="line-height: 11.25pt;"><span  style="font-size: 9pt; color:
#595959;"><span style="font-family: 'Arial Narrow', sans-serif;">Intel
Technology Poland sp. z o.o.<br></span></span></strong><span style="color:
#595959; font-family: 'Arial Narrow', sans-serif; font-size: 9pt; line-height:
11.25pt;">ul. S&#322owackiego 173 | 80-298 Gda&#324sk | S&#261d Rejonowy Gda&#324sk
P&#243&#322noc
| VII Wydzia&#322 Gospodarczy Krajowego Rejestru S&#261dowego - KRS 101882 | NIP
957-07-52-316 | Kapita&#322 zak&#322adowy 200.000 PLN.</span></p><p>

<span style="font-size:8.0pt;font-family:"Arial
Narrow","sans-serif";
mso-fareast-font-family:"Times New
Roman";mso-bidi-font-family:Arial;
color:#595959;mso-ansi-language:EN-US;mso-fareast-language:EN-US;mso-bidi-language:
AR-SA">Ta wiadomo&#347&#263 wraz z za&#322&#261cznikami jest przeznaczona dla okre&#347lonego
adresata i mo&#380e zawiera&#263 informacje poufne. W razie przypadkowego otrzymania
tej wiadomo&#347ci, prosimy o powiadomienie nadawcy oraz trwa&#322e jej usuni&#281cie;
jakiekolwiek przegl&#261danie lub rozpowszechnianie jest zabronione.<br>
This e-mail and any attachments may contain confidential material for the sole
use of the intended recipient(s). If you are not the intended recipient,
please
contact the sender and delete all copies; any review or distribution by others
is strictly prohibited.</span></p><p class="MsoNormal"><o:p></o:p></p>
</body>
</html>