<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body>
    <p style="color: rgb(14, 16, 26); background: transparent;
      margin-top:0pt; margin-bottom:0pt;"><span style="color: rgb(14,
        16, 26); background: transparent; margin-top:0pt;
        margin-bottom:0pt;;" data-preserver-spaces="true">Dear
        community,</span></p>
    <p style="color: rgb(14, 16, 26); background: transparent;
      margin-top:0pt; margin-bottom:0pt;"><br>
    </p>
    <p style="color: rgb(14, 16, 26); background: transparent;
      margin-top:0pt; margin-bottom:0pt;"><span style="color: rgb(14,
        16, 26); background: transparent; margin-top:0pt;
        margin-bottom:0pt;;" data-preserver-spaces="true">tl;dr Your
        opinion on the programming interface matters! Please have a look
        and share your thoughts by the end of May, preferably before.
        Links below.</span></p>
    <p style="color: rgb(14, 16, 26); background: transparent;
      margin-top:0pt; margin-bottom:0pt;"><br>
    </p>
    <p style="color: rgb(14, 16, 26); background: transparent;
      margin-top:0pt; margin-bottom:0pt;"><span style="color: rgb(14,
        16, 26); background: transparent; margin-top:0pt;
        margin-bottom:0pt;;" data-preserver-spaces="true">Thank you for
        contributing to the discussion around this proposal so far.</span></p>
    <p style="color: rgb(14, 16, 26); background: transparent;
      margin-top:0pt; margin-bottom:0pt;"><br>
    </p>
    <p style="color: rgb(14, 16, 26); background: transparent;
      margin-top:0pt; margin-bottom:0pt;"><span style="color: rgb(14,
        16, 26); background: transparent; margin-top:0pt;
        margin-bottom:0pt;;" data-preserver-spaces="true">I want to take
        the liberty of summarising the previous discussion as follows:</span></p>
    <ul style="color: rgb(14, 16, 26); background: transparent;
      margin-top:0pt; margin-bottom:0pt;">
      <li style="color: rgb(14, 16, 26); background: transparent;
        margin-top:0pt; margin-bottom:0pt;; list-style-type:disc"><span
          style="color: rgb(14, 16, 26); background: transparent;
          margin-top:0pt; margin-bottom:0pt;;"
          data-preserver-spaces="true">the feature itself is welcome and
          not objected</span></li>
      <li style="color: rgb(14, 16, 26); background: transparent;
        margin-top:0pt; margin-bottom:0pt;; list-style-type:disc"><span
          style="color: rgb(14, 16, 26); background: transparent;
          margin-top:0pt; margin-bottom:0pt;;"
          data-preserver-spaces="true">the benefits are not clear to all</span></li>
      <li style="color: rgb(14, 16, 26); background: transparent;
        margin-top:0pt; margin-bottom:0pt;; list-style-type:disc"><span
          style="color: rgb(14, 16, 26); background: transparent;
          margin-top:0pt; margin-bottom:0pt;;"
          data-preserver-spaces="true">the existing programming
          interfaces (especially for bots) must not change</span></li>
    </ul>
    <p style="color: rgb(14, 16, 26); background: transparent;
      margin-top:0pt; margin-bottom:0pt;"><span style="color: rgb(14,
        16, 26); background: transparent; margin-top:0pt;
        margin-bottom:0pt;;" data-preserver-spaces="true">Whereas the
        focus of the former comments was on the nature of the proposal
        itself, we can dive deeper and discuss technical details, such
        as the programming interfaces, such as:</span></p>
    <ul style="color: rgb(14, 16, 26); background: transparent;
      margin-top:0pt; margin-bottom:0pt;">
      <li style="color: rgb(14, 16, 26); background: transparent;
        margin-top:0pt; margin-bottom:0pt;; list-style-type:disc"><span
          style="color: rgb(14, 16, 26); background: transparent;
          margin-top:0pt; margin-bottom:0pt;;"
          data-preserver-spaces="true">how to instantiate bots in
          "library mode" and to pass settings (parameters)</span></li>
      <li style="color: rgb(14, 16, 26); background: transparent;
        margin-top:0pt; margin-bottom:0pt;; list-style-type:disc"><span
          style="color: rgb(14, 16, 26); background: transparent;
          margin-top:0pt; margin-bottom:0pt;;"
          data-preserver-spaces="true">how to pass messages to the
          bot/source pipeline</span></li>
      <li style="color: rgb(14, 16, 26); background: transparent;
        margin-top:0pt; margin-bottom:0pt;; list-style-type:disc"><span
          style="color: rgb(14, 16, 26); background: transparent;
          margin-top:0pt; margin-bottom:0pt;;"
          data-preserver-spaces="true">how to receive resulting messages
          from the bot/destination pipeline</span></li>
    </ul>
    <p style="color: rgb(14, 16, 26); background: transparent;
      margin-top:0pt; margin-bottom:0pt;"><span style="color: rgb(14,
        16, 26); background: transparent; margin-top:0pt;
        margin-bottom:0pt;;" data-preserver-spaces="true">Below I added
        a few links with code examples.</span></p>
    <p style="color: rgb(14, 16, 26); background: transparent;
      margin-top:0pt; margin-bottom:0pt;"><br>
    </p>
    <p style="color: rgb(14, 16, 26); background: transparent;
      margin-top:0pt; margin-bottom:0pt;"><span style="color: rgb(14,
        16, 26); background: transparent; margin-top:0pt;
        margin-bottom:0pt;;" data-preserver-spaces="true">We'd welcome
        your thoughts, especially on these topics.</span></p>
    <p style="color: rgb(14, 16, 26); background: transparent;
      margin-top:0pt; margin-bottom:0pt;"><br>
    </p>
    <p style="color: rgb(14, 16, 26); background: transparent;
      margin-top:0pt; margin-bottom:0pt;"><span style="color: rgb(14,
        16, 26); background: transparent; margin-top:0pt;
        margin-bottom:0pt;;" data-preserver-spaces="true">In today's
        IntelMQ maintainer meeting, we planned to conclude this IEP,
        including its implementation, End of May with a new feature
        release of IntelMQ. So it would be great if we could collect all
        feedback before.</span></p>
    <p style="color: rgb(14, 16, 26); background: transparent;
      margin-top:0pt; margin-bottom:0pt;"><br>
    </p>
    <p style="color: rgb(14, 16, 26); background: transparent;
      margin-top:0pt; margin-bottom:0pt;"><span style="color: rgb(14,
        16, 26); background: transparent; margin-top:0pt;
        margin-bottom:0pt;;" data-preserver-spaces="true">Programming
        examples in the current draft of IEP007 itself:</span></p>
    <p style="color: rgb(14, 16, 26); background: transparent;
      margin-top:0pt; margin-bottom:0pt;"><span style="color: rgb(14,
        16, 26); background: transparent; margin-top:0pt;
        margin-bottom:0pt;;" data-preserver-spaces="true"><a class="moz-txt-link-freetext" href="https://github.com/certtools/ieps/tree/iep-007/007/#user-content-examples">https://github.com/certtools/ieps/tree/iep-007/007/#user-content-examples</a></span></p>
    <p style="color: rgb(14, 16, 26); background: transparent;
      margin-top:0pt; margin-bottom:0pt;"><span style="color: rgb(14,
        16, 26); background: transparent; margin-top:0pt;
        margin-bottom:0pt;;" data-preserver-spaces="true">and you can
        also look at the current PoC/draft implementation:</span></p>
    <p style="color: rgb(14, 16, 26); background: transparent;
      margin-top:0pt; margin-bottom:0pt;"><span style="color: rgb(14,
        16, 26); background: transparent; margin-top:0pt;
        margin-bottom:0pt;;" data-preserver-spaces="true"><a class="moz-txt-link-freetext" href="https://github.com/certtools/intelmq/pull/2358/files">https://github.com/certtools/intelmq/pull/2358/files</a></span></p>
    <p style="color: rgb(14, 16, 26); background: transparent;
      margin-top:0pt; margin-bottom:0pt;"><span style="color: rgb(14,
        16, 26); background: transparent; margin-top:0pt;
        margin-bottom:0pt;;" data-preserver-spaces="true">or an example
        use case:</span></p>
    <p style="color: rgb(14, 16, 26); background: transparent;
      margin-top:0pt; margin-bottom:0pt;"><span style="color: rgb(14,
        16, 26); background: transparent; margin-top:0pt;
        margin-bottom:0pt;;" data-preserver-spaces="true"><a class="moz-txt-link-freetext" href="https://github.com/Intevation/intelmq-webinput-csv/blob/f29c6922f3a41a1399b4dbb5f260d9519232831e/intelmq_webinput_csv/serve.py#L344">https://github.com/Intevation/intelmq-webinput-csv/blob/f29c6922f3a41a1399b4dbb5f260d9519232831e/intelmq_webinput_csv/serve.py#L344</a></span></p>
    <p style="color: rgb(14, 16, 26); background: transparent;
      margin-top:0pt; margin-bottom:0pt;"><br>
    </p>
    <p style="color: rgb(14, 16, 26); background: transparent;
      margin-top:0pt; margin-bottom:0pt;"><span style="color: rgb(14,
        16, 26); background: transparent; margin-top:0pt;
        margin-bottom:0pt;;" data-preserver-spaces="true">Best regards</span></p>
    <p style="color: rgb(14, 16, 26); background: transparent;
      margin-top:0pt; margin-bottom:0pt;"><span style="color: rgb(14,
        16, 26); background: transparent; margin-top:0pt;
        margin-bottom:0pt;;" data-preserver-spaces="true">Sebastian</span></p>
    <p style="color: rgb(14, 16, 26); background: transparent;
      margin-top:0pt; margin-bottom:0pt;"><br>
    </p>
    <p style="color: rgb(14, 16, 26); background: transparent;
      margin-top:0pt; margin-bottom:0pt;"><span style="color: rgb(14,
        16, 26); background: transparent; margin-top:0pt;
        margin-bottom:0pt;;" data-preserver-spaces="true">P.S.: A bugfix
        release is envisaged for the end of next week</span></p>
    <pre class="moz-signature" cols="72">Institute for Common Good Technology
gemeinnütziger Kulturverein - nonprofit cultural society
<a class="moz-txt-link-freetext" href="https://sebix.at/">https://sebix.at/</a>
ZVR 1510673578</pre>
    <p></p>
    <div class="moz-cite-prefix">On 4/24/23 18:31, Sebix wrote:<br>
    </div>
    <blockquote type="cite"
      cite="mid:0a3d2ab9-b4c5-e985-1b05-77ca2259d753@sebix.at">
      <pre class="moz-quote-pre" wrap="">Dear community,

I invite you to discuss a new (IEP - IntelMQ Enhancement Proposal)

IEP007: Running IntelMQ as Python Library

Have you ever wondered if you can write a Python script, call a bot's
process method, pass it some data and get back the enriched/modified data?
(pseudo code)
bot_instance = Bot(parameters)
bot_instance.process_message(input message) -> output messages

Strictly speaking, it *is* actually possible with the current version,
but it requires some bizarre hacks like re-defining Bot's methods and
overwriting internal values.
Staying on the wishlist for quite a while, we intend to implement the
feature now. I started the IEP007 draft and need some input from you to
maximize the benefit for all the IntelMQ community (developers):
<a class="moz-txt-link-freetext" href="https://github.com/certtools/ieps/pull/7/files">https://github.com/certtools/ieps/pull/7/files</a>
Or in a readable display: <a class="moz-txt-link-freetext" href="https://github.com/certtools/ieps/tree/iep-007/007">https://github.com/certtools/ieps/tree/iep-007/007</a>

What features and interfacing options would you expect when starting the
bot as a library?

Do you think the `Bot.process` method should be rewritten entirely now,
removing the calls receive_message/send_message and converting the
method into a generator (an API-breaking change)? And if yes, should
this be done in one step, or separated from this bot-as-library feature,
reducing the complexity of development steps?

Looking forward for your ideas
Sebastian

</pre>
      <br>
      <fieldset class="moz-mime-attachment-header"></fieldset>
      <pre class="moz-quote-pre" wrap="">_______________________________________________
IntelMQ-dev mailing list
<a class="moz-txt-link-freetext" href="https://lists.cert.at/cgi-bin/mailman/listinfo/intelmq-dev">https://lists.cert.at/cgi-bin/mailman/listinfo/intelmq-dev</a>
<a class="moz-txt-link-freetext" href="https://intelmq.readthedocs.io/">https://intelmq.readthedocs.io/</a>
</pre>
    </blockquote>
  </body>
</html>