<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>gtucker.io</title>
    <link>https://gtucker.io/</link>
    <description>Recent content on gtucker.io</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en-us</language>
    <copyright>2021-2026 Guillaume Tucker</copyright>
    <lastBuildDate>Mon, 02 Feb 2026 00:00:00 +0000</lastBuildDate>
    
        <atom:link href="https://gtucker.io/index.xml" rel="self" type="application/rss+xml" />
    
    
    
        <item>
        <title>VIXI – kernel bisection with Renelick</title>
        <link>https://gtucker.io/posts/2026-02-02-vixi-and-renelick/</link>
        <pubDate>Mon, 02 Feb 2026 00:00:00 +0000</pubDate>
        
        <guid>https://gtucker.io/posts/2026-02-02-vixi-and-renelick/</guid>
        <description>gtucker.io https://gtucker.io/posts/2026-02-02-vixi-and-renelick/ -&lt;p&gt;First of all, let&amp;rsquo;s go though some brief introductions.
&lt;a href=&#34;https://gitlab.com/gtucker.io/vixi&#34;&gt;VIXI&lt;/a&gt; stands for Virtual Kernel Continuous
Integration and is the main topic of this post.
&lt;a href=&#34;https://renelick-gtucker-7b1c5d7d50ce51f57b4ff6327302e38a0a8f8c72d652a5.gitlab.io/&#34;&gt;Renelick&lt;/a&gt;
started as a fork of the new &lt;a href=&#34;https://kernelci.org/&#34;&gt;KernelCI&lt;/a&gt; stack in early
2024 and has kept evolving ever since into a general purpose data-driven
automation framework.  VIXI is essentially an application powered by Renelick
to continuously test the upstream Linux kernel in virtual environments.  It is
now reaching the end of its proof-of-concept phase and as such deserves a
highlight.  A secondary goal is to validate the Renelick API with a
comprehensive use case before making a v1.0 release candidate, which is due
very soon.  I&amp;rsquo;ll cover that in another post once it has crossed the finish
line.  For now, let&amp;rsquo;s focus on the VIXI results.&lt;/p&gt;
&lt;h2 id=&#34;context&#34;&gt;Context&lt;/h2&gt;
&lt;p&gt;Building upon all the lessons learnt from working on KernelCI for several
years, VIXI brings together a more advanced solution aiming to go above and
beyond what classic automated testing typically provides.  The scope is the
upstream Linux kernel, which is very different from vertically-integrated
products.  Rather than being just one component among many others in a
monolithic stack, the kernel is a moving part within a virtually endless
spectrum of configurations.  Another critical difference with regular product
development is the way changes get merged upstream, with hundreds of patches
sent every day via mailing lists and through a hierarchy of maintainers.  The
concept of CI/CD doesn&amp;rsquo;t really apply in the usual sense, it would only work if
there were a small number of officially supported platforms with a designated
user-space stack and compiler toolchain – which would tend to go against the
spirit of a neutral, common mainline kernel.&lt;/p&gt;
&lt;h2 id=&#34;dynamic-orchestration&#34;&gt;Dynamic orchestration&lt;/h2&gt;
&lt;p&gt;Extraordinary workflows require extraordinary solutions.  With such an
open-ended system under test, the key is to rely on dynamic orchestration to
activate particular coverage according to the circumstances: area of the code
being changed, previous results, available resources etc.  Starting with a fast
path to get initial results from lightweight tests, the orchestrator can then
dynamically schedule additional runs depending on their outcome.  Say, if a
warning was detected at boot time in a particular device driver, a selection of
especially relevant tests can be run with debugging and instrumentation options
enabled.  Conversely, long-running tests may be scheduled only if the system
booted fine in the first place within the allocated resource budget – no need
to start a full range of test suites on a system that won&amp;rsquo;t even boot.  While
the logic isn&amp;rsquo;t currently quite there yet, VIXI is being designed with this
vision in mind.&lt;/p&gt;
&lt;p&gt;One primitive for dealing with such scenario is implemented by VIXI as the
&amp;ldquo;replay&amp;rdquo; feature which enables any test to be run again while changing one or
more parameters.  Every time some results come in, the current proof-of-concept
will run a post-processing &lt;code&gt;delta&lt;/code&gt; task which will compare them against some
reference revision to detect new failures.  This could be expanded in the
future by running the replay with a different compiler version, CPU
architecture, hardware platform etc.&lt;/p&gt;
&lt;p&gt;When testing a maintainer branch, the base revision in mainline should be
tested too in order to determine whether a failure was already there.  Then
extra checks need to be run to reduce false positives: is the &amp;ldquo;bad&amp;rdquo; revision
really bad and the &amp;ldquo;good&amp;rdquo; one really good?  If so, this will provide a reliable
range for running an automated bisection and try to identify the individual
commit that caused the test to fail.  This logic is already implemented in the
current VIXI PoC as detailed in the demo section below.&lt;/p&gt;
&lt;p&gt;Bisection works well for high-volume branches and in particular linux-next as
it integrates new commits from all the subsystems on a daily basis.  Another
dimension to the problem is testing patches from mailing lists before they get
pushed on a Git branch.  In this case, a better approach for short series is to
test each patch individually but the same concept of comparing results applies.
Although the proof-of-concept doesn&amp;rsquo;t do that yet, some initial trials have
been run with an IMAP inbox and it will be enabled in incremental steps.&lt;/p&gt;
&lt;h2 id=&#34;demo-time&#34;&gt;Demo time&lt;/h2&gt;
&lt;p&gt;Early experiments have given way to a few demos which show the progress made so
far:&lt;/p&gt;
&lt;h3 id=&#34;from-git-to-kunithttpsgitlabcomgtuckeriovixi-blobmaindocsdemo-1-git-to-kunitmd&#34;&gt;&lt;a href=&#34;https://gitlab.com/gtucker.io/vixi/-/blob/main/docs/demo-1-git-to-kunit.md&#34;&gt;From Git to KUnit&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;The first demo is to lay down the foundation: Git checkout using mirrors within
a Kubernetes deployment, a kernel build followed by a KVM boot test using
KubeVirt as well as KUnit runs with results parsed into a tree of Renelick
database nodes.&lt;/p&gt;
&lt;h3 id=&#34;delta-and-git-bisecthttpsgitlabcomgtuckeriovixi-blobmaindocsdemo-2-delta-and-git-bisectmd&#34;&gt;&lt;a href=&#34;https://gitlab.com/gtucker.io/vixi/-/blob/main/docs/demo-2-delta-and-git-bisect.md&#34;&gt;Delta and Git bisect&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Building upon this, the second demo showcases the &lt;code&gt;delta&lt;/code&gt; and &lt;code&gt;bisect&lt;/code&gt; tasks.
They can automatically compare results and run Git bisections when KUnit test
regressions are detected.  This only worked for KUnit as it showed the
challenge of being able to automatically reproduce arbitrary test results with
a different kernel revision.&lt;/p&gt;
&lt;h3 id=&#34;automated-replayhttpsgitlabcomgtuckeriovixi-blobmaindocsdemo-3-automated-replaymd&#34;&gt;&lt;a href=&#34;https://gitlab.com/gtucker.io/vixi/-/blob/main/docs/demo-3-automated-replay.md&#34;&gt;Automated replay&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Then the third demo introduced the &amp;ldquo;replay&amp;rdquo; feature which enabled &lt;code&gt;delta&lt;/code&gt; and
&lt;code&gt;bisect&lt;/code&gt; to deal with any kind of workload, not just KUnit.  The data nodes now
include the information needed to recreate the whole series of tasks which were
run to produce them, with can be done while changing some parameters such as
the Git revision.&lt;/p&gt;
&lt;h3 id=&#34;all-things-combined&#34;&gt;All things combined&lt;/h3&gt;
&lt;p&gt;The outcome is a first orchestrator which listens for a simple trigger event
pointing at a Git kernel revision.  Here&amp;rsquo;s how all the various tasks unfold
from there:&lt;/p&gt;
&lt;div style=&#34;text-align: center;&#34;&gt;
&lt;p&gt;&lt;img src=&#34;vixi-tasks.png&#34; alt=&#34;VIXI tasks&#34;&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;trigger&lt;/code&gt;&lt;/strong&gt;: event sent manually with the Git tree name and revision to test&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;kbuild&lt;/code&gt;&lt;/strong&gt;: kernel build run as a &lt;a href=&#34;https://tekton.dev&#34;&gt;Tekton&lt;/a&gt; pipeline&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;kboot&lt;/code&gt;&lt;/strong&gt;: kernel boot with the artifacts produced by &lt;code&gt;kbuild&lt;/code&gt; using
&lt;a href=&#34;https://kubevirt.io/&#34;&gt;KubeVirt&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;kunit&lt;/code&gt;&lt;/strong&gt; and &lt;strong&gt;&lt;code&gt;parser&lt;/code&gt;&lt;/strong&gt;: KUnit run in Tekton followed by a task to parse
the JSON results in a plain Kubernetes pod&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The &lt;code&gt;kbuild&lt;/code&gt;, &lt;code&gt;kboot&lt;/code&gt; and &lt;code&gt;kunit&lt;/code&gt; + &lt;code&gt;parser&lt;/code&gt; tasks eventually produce some
database nodes with test results which can be consumed by the &lt;code&gt;delta&lt;/code&gt; task.
The orchestrator will therefore schedule a &lt;code&gt;delta&lt;/code&gt; for each incoming set of
results following the rule set in its &lt;a href=&#34;https://gitlab.com/gtucker.io/vixi/-/blob/main/vixi/oconfig.yaml?ref_type=heads&#34;&gt;configuration
file&lt;/a&gt;:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;# compute delta between test results
- task: delta
  channel: node
  match:
    kind: vixi.group
    op: populate
  scheduler: inline-vixi
&lt;/code&gt;&lt;/pre&gt;&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;: The &lt;code&gt;inline-vixi&lt;/code&gt; scheduler is for running lightweight tasks
directly in Python.  For more details, see the &lt;a href=&#34;https://renelick-gtucker-7b1c5d7d50ce51f57b4ff6327302e38a0a8f8c72d652a5.gitlab.io/tasks/&#34;&gt;Renelick
documentation&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Each &lt;code&gt;delta&lt;/code&gt; task will look for results from the base revision between the
branch being tested and mainline.  If it can&amp;rsquo;t find any, it will get the tests
replayed there first in order to be able to detect regressions such as in the
example above with KUnit.  Once the base revision results are in, it will
create a
&lt;a href=&#34;https://gitlab.com/gtucker.io/vixi/-/blob/main/docs/demo-3-delta-node.json&#34;&gt;node&lt;/a&gt;
for each new test failure detected.  The orchestrator will then start a
&lt;code&gt;bisect&lt;/code&gt; task for each of them as per this other rule:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;# run a Git bisection based on found delta
- task: bisect
  channel: node
  match:
    kind: vixi.delta
    op: populate
  scheduler: inline-vixi
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;This logic works independently of the underlying tasks and can reproduce any
test results automatically: &lt;code&gt;kbuild&lt;/code&gt;, &lt;code&gt;kunit&lt;/code&gt; or &lt;code&gt;kboot&lt;/code&gt;.  The data included
within the result nodes contains the parameters required for replaying each
task that produced them.  As such, the sequence will differ depending on the
type of test:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;kbuild&lt;/code&gt; is a single task which directly produces some pass/fail results&lt;/li&gt;
&lt;li&gt;&lt;code&gt;kboot&lt;/code&gt; is run following &lt;code&gt;kbuild&lt;/code&gt; results as it needs its artifacts as inputs&lt;/li&gt;
&lt;li&gt;&lt;code&gt;kunit&lt;/code&gt; is followed by the &lt;code&gt;kunit-parser&lt;/code&gt; task to produce results&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The example in the diagram above shows the &lt;code&gt;kunit + parser&lt;/code&gt; case although
&lt;code&gt;kbuild&lt;/code&gt; and &lt;code&gt;kbuild + kboot&lt;/code&gt; have also been verified as part of the demos.  In
fact, any number of tasks can be chained this way using the &lt;code&gt;input-nodes&lt;/code&gt; task
attribute to describe how to feed the results of a previous task into the next
one.  For example, with &lt;code&gt;kboot&lt;/code&gt; which takes its inputs from &lt;code&gt;kbuild&lt;/code&gt;:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;&amp;#34;input-nodes&amp;#34;: {
  &amp;#34;kbuild&amp;#34;: {
    &amp;#34;id&amp;#34;: &amp;#34;69734c80a855520ff4115a9c&amp;#34;,
    &amp;#34;kind&amp;#34;: &amp;#34;vixi.group&amp;#34;,
    &amp;#34;name&amp;#34;: &amp;#34;kbuild&amp;#34;
  },
  &amp;#34;image&amp;#34;: {
    &amp;#34;id&amp;#34;: &amp;#34;69734c67a855520ff4115a96&amp;#34;,
    &amp;#34;kind&amp;#34;: &amp;#34;artifact-v1&amp;#34;,
    &amp;#34;name&amp;#34;: &amp;#34;bzImage&amp;#34;
  },
  &amp;#34;modules&amp;#34;: {
    &amp;#34;id&amp;#34;: &amp;#34;69734c78a855520ff4115a9a&amp;#34;,
    &amp;#34;kind&amp;#34;: &amp;#34;artifact-v1&amp;#34;,
    &amp;#34;name&amp;#34;: &amp;#34;modules.tar.gz&amp;#34;
  }
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&#34;bisection-results&#34;&gt;Bisection results&lt;/h3&gt;
&lt;p&gt;At the end of this long string of events a successful &lt;code&gt;bisect&lt;/code&gt; task will
eventually find the commit that caused a test to fail and create its own
&lt;a href=&#34;https://gitlab.com/gtucker.io/vixi/-/blob/main/docs/demo-3-bisect-node.json&#34;&gt;node&lt;/a&gt;
too.  Here&amp;rsquo;s the Git history from the branch that was being bisected in &lt;a href=&#34;https://gitlab.com/gtucker.io/vixi/-/blob/main/docs/demo-3-automated-replay.md?ref_type=heads&#34;&gt;demo
3&lt;/a&gt;,
with an artificial KUnit test failure in the middle:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;b1d2fdbfdf5f HACK BISECT 4.noop
9e1c130d734e HACK BISECT 3.noop
76819e0f306e HACK fail KUnit overflow.shift_sane_test
71746a491c0f HACK BISECT 1.noop
f8f9c1f4d0c7 Linux 6.19-rc3
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The head of the branch &lt;code&gt;b1d2fdbfdf5f&lt;/code&gt; was tested first, then the base revision
&lt;code&gt;v6.19-rc3&lt;/code&gt; followed by the actual bisection which landed on the expected
commit.&lt;/p&gt;
&lt;p&gt;What&amp;rsquo;s especially interesting to mention here is the continuous data path which
goes all the way from the Git checkout to the final bisection result.  It can
be seen in the last node that was created, earlier ones will have a shorter
path of course:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;&amp;#34;path&amp;#34;: [
  &amp;#34;gtucker:v6.19-rc3-4-gb1d2fdbfdf5f:checkout&amp;#34;,
  &amp;#34;gtucker:v6.19-rc3-4-gb1d2fdbfdf5f:build&amp;#34;,
  &amp;#34;gtucker:v6.19-rc3-4-gb1d2fdbfdf5f:exec&amp;#34;,
  &amp;#34;kunit&amp;#34;,
  &amp;#34;overflow&amp;#34;,
  &amp;#34;shift_sane_test&amp;#34;,
  &amp;#34;shift_sane_test:break&amp;#34;,
  &amp;#34;bisect:76819e0f306e1d1682ffcdeba5cd408c0eeb85c5&amp;#34;
],
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;This list contains the names of the nodes following their parent relationships
in the tree.  The checkout is the root node with no parent.  Then the build and
KUnit execution are added as child nodes, followed by the parsed results under
&lt;code&gt;kunit&lt;/code&gt;.  There are actually over 800 nodes with individual test cases in a
single tree of this kind, here we just see the ones that led to a failure.  The
&lt;code&gt;shift_sane_test:break&lt;/code&gt; node was created by the &lt;code&gt;delta&lt;/code&gt; task with the
regression data.  Finally, its child node comes from the &lt;code&gt;bisect&lt;/code&gt; task with the
SHA1 of the Git commit that was found.&lt;/p&gt;
&lt;p&gt;I won&amp;rsquo;t go into all the intricate details of how this came to be as that is
covered more in depth by the demos themselves.  To get a peek under the hood,
you can take a look at the Renelick pub/sub event &lt;a href=&#34;https://gitlab.com/gtucker.io/vixi/-/blob/main/docs/demo-3-monitor-log.txt&#34;&gt;monitor
log&lt;/a&gt;.
Here&amp;rsquo;s an excerpt with just a few hand-picked lines from it:&lt;/p&gt;
&lt;div style=&#34;font-size: 0.62em; line-height: 1.2em;&#34;&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;I  2026-01-12T17:18:39.505717+00:00 VIXI   trigger       gtucker                               git                 linux-6.19-rc3-kunit-fail
I  2026-01-12T17:18:39.874351+00:00 TASK   add           0365a602-7c45-40ad-880a-c04795ee53db  tekton              kunit
I  2026-01-12T17:19:05.451992+00:00 NODE   add           69652d0967ff704f772f8ce2              vixi.kunit.step     gtucker:v6.19-rc3-4-gb1d2fdbfdf5f:checkout
I  2026-01-12T17:22:05.844831+00:00 NODE   add           69652dbd67ff704f772f8cfe              vixi.kunit.step     gtucker:v6.19-rc3-4-gb1d2fdbfdf5f:exec
I  2026-01-12T17:22:06.531947+00:00 NODE   add           69652dbe67ff704f772f8d00              artifact-v1         kunit.json
I  2026-01-12T17:22:15.510677+00:00 TASK   add           9ba6a2d9-72a1-49e4-bcfc-aca0325874b7  inline-vixi         kunit-parser
I  2026-01-12T17:22:18.566051+00:00 NODE   populate      69652dc867ff704f772f8d02              batch:1             kunit
I  2026-01-12T17:22:18.942489+00:00 TASK   add           72e89f23-7f09-4cca-835f-11bb96ee3f68  inline-vixi         delta
I  2026-01-12T17:22:21.821146+00:00 NODE   populate      69652dcd67ff704f772f9080              batch:1             shift_sane_test:break
I  2026-01-12T17:22:22.251833+00:00 TASK   add           0c8ab94d-290f-48be-8090-683c0da56c5d  inline-vixi         bisect
I  2026-01-12T17:22:23.532738+00:00 VIXI   bisect        v6.19-rc3-4-gb1d2fdbfdf5f             check:bad           b1d2fdbfdf5f9d869bea4714c3e00c5cb3faea38
I  2026-01-12T17:23:49.670967+00:00 VIXI   bisect        v6.19-rc3-4-gb1d2fdbfdf5f             check:good          f8f9c1f4d0c7a64600e2ca312dec824a0bc2f1da
I  2026-01-12T17:25:18.153491+00:00 VIXI   bisect        v6.19-rc3-4-gb1d2fdbfdf5f             iter  1/2           76819e0f306e1d1682ffcdeba5cd408c0eeb85c5
I  2026-01-12T17:26:43.290082+00:00 VIXI   bisect        v6.19-rc3-4-gb1d2fdbfdf5f             iter  2/2           71746a491c0f6557d43047dc9eca5f0a5613f37c
I  2026-01-12T17:28:09.578434+00:00 VIXI   bisect        v6.19-rc3-4-gb1d2fdbfdf5f             found               76819e0f306e1d1682ffcdeba5cd408c0eeb85c5
I  2026-01-12T17:28:09.907141+00:00 NODE   add           69652f2967ff704f772f9115              vixi.bisect         bisect:76819e0f306e1d1682ffcdeba5cd408c0eeb85c5
I  2026-01-12T17:28:10.478395+00:00 NODE   add           69652f2a67ff704f772f9116              artifact-v1         bisect.txt
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h2 id=&#34;next-steps&#34;&gt;Next steps&lt;/h2&gt;
&lt;p&gt;The VIXI experiments have proven to be rather conclusive so far.  The replay
feature is implemented entirely at the application level using the standard
Renelick API primitive operations.  This is good news as it shows the API can
remain simple while enabling a variety of complex use cases.&lt;/p&gt;
&lt;p&gt;It&amp;rsquo;s also encouraging to see that demo 3 which ran a Kunit bisection lasted
only about 10 minutes, with an extra kernel build running in parallel on the
same worker followed by a boot test on a separate bare-metal machine with KVM
enabled.  The Renelick API instance, the orchestrator and the workers are all
running on different machines with remote connections so this is a fairly
realistic topology for an actual deployment – at least in terms of latencies.&lt;/p&gt;
&lt;p&gt;One current limitation is that the &lt;code&gt;delta&lt;/code&gt; task only compares results with the
base revision in mainline, not previous runs on the same branch.  So this will
be the next improvement there.  A more ambitious goal is to use
&lt;a href=&#34;https://gitlab.com/gtucker/scalpel&#34;&gt;Scalpel&lt;/a&gt; and make bisection an integral
part of the dynamic orchestration logic using statistics.&lt;/p&gt;
&lt;p&gt;Another issue is that while KubeVirt is great for scaling large workloads in
the Cloud, the overhead of starting VMs and the general design isn&amp;rsquo;t too
appopriate for short-lived tests such as booting kernels.  Some more low-level
Runtime implementations using QEMU and Cloud APIs directly would help there.&lt;/p&gt;
&lt;p&gt;Overall, this sets the stage for the upcoming roadmap.  Once Renelick v1.0-rc1
is released and hosted on a public instance, VIXI can be enabled as a
continuous service: monitoring linux-next once a day, mainline every hour,
patches from a couple of mailing lists e.g. KUnit and Rust-for-Linux to start
with, sending email reports, showing results clearly on the frontend etc.
There is also the open topic of sharing some of the bisection logic with
KernelCI via a common Python package, which would be closing a very long loop.&lt;/p&gt;
&lt;p&gt;Last but not least, the builds and KUnit tests in VIXI are all using kernel.org
compiler toolchains as generic &lt;a href=&#34;https://gitlab.com/gtucker/korg-containers&#34;&gt;container
images&lt;/a&gt;.  This fits into the bigger
picture of having them maintained upstream as per the &lt;a href=&#34;https://lore.kernel.org/all/cc737636-2a43-4a97-975e-4725733f7ee4@gtucker.io/&#34;&gt;mailing list
discussion&lt;/a&gt;
and the
&lt;a href=&#34;https://www.kernel.org/doc/html/next/dev-tools/container.html&#34;&gt;&lt;code&gt;scripts/container&lt;/code&gt;&lt;/a&gt;
tool that just landed in linux-next.&lt;/p&gt;
- https://gtucker.io/posts/2026-02-02-vixi-and-renelick/ - 2021-2026 Guillaume Tucker</description>
        </item>
    
    
    
        <item>
        <title>Digital Substation Pt.3 – Deployment</title>
        <link>https://gtucker.io/posts/2025-12-01-digisub-pt3/</link>
        <pubDate>Mon, 01 Dec 2025 00:00:00 +0000</pubDate>
        
        <guid>https://gtucker.io/posts/2025-12-01-digisub-pt3/</guid>
        <description>gtucker.io https://gtucker.io/posts/2025-12-01-digisub-pt3/ -&lt;p&gt;The time has come to wrap up this blog series about Digital Substations.  More
than a conclusion, it totally feels like a new beginning.  The past few months
have been a rich adventure, meeting and learning from many people via many
projects and at many events as I was still going through my paces.  I can
definitely confirm that there is a huge potential for open-source developers
from all horizons who wish to join the Energy sector and entire communities are
being formed under our very eyes.  I&amp;rsquo;m very much looking forward to the next
steps in my journey.  But first, let&amp;rsquo;s see where this has taken me so far.&lt;/p&gt;
&lt;h2 id=&#34;ospologylive-at-rte&#34;&gt;OSPOlogyLive at RTE&lt;/h2&gt;
&lt;p&gt;The last event I attended was
&lt;a href=&#34;https://community.linuxfoundation.org/events/details/lfhq-ospology-european-chapter-presents-ospologylive-lyon/&#34;&gt;OSPologyLive&lt;/a&gt;
at the &lt;a href=&#34;https://www.rte-france.com/en/discover-rte/about-rte&#34;&gt;RTE&lt;/a&gt; Campus in
Lyon.  I must begin with some very special thanks to all the organisers and to
Maxime and Boris in particular for your warm welcome, the guided tour and for
being such inspirational figures.&lt;/p&gt;
&lt;p&gt;It was a double-headed event:
&lt;a href=&#34;https://github.com/todogroup/ospodefinition.org/blob/main/README.md&#34;&gt;OSPO&lt;/a&gt; in
general and &lt;a href=&#34;https://lfenergy.org/&#34;&gt;LF Energy&lt;/a&gt; in particular.  As I&amp;rsquo;ve always
been a staunch open source activist, I felt at home in OSPO land and it also
helped me position myself as an independent contributor.  The presentations and
discussions were all of very high quality with many interactive sessions.
While I can only recommend and praise this yearly meetup, let&amp;rsquo;s now return to
the hot topic of Energy.&lt;/p&gt;
&lt;h2 id=&#34;no-electrical-hazard&#34;&gt;No electrical hazard&lt;/h2&gt;
&lt;p&gt;This is fine.&lt;/p&gt;
&lt;p&gt;Electricity being transported at 400kV is not to be taken lightly, but what can
possibly go wrong with running virtual machines on a plain development laptop?
The tour around the RTE Transfo Campus included the miniature laser-cut
electrical grid shown at the top of this article and the training ground for
electrical line engineering work among many other things.  It has helped me put
things in perspective with my software hat on.&lt;/p&gt;
&lt;div style=&#34;float: left; padding: 6px 18px 0 0&#34;&gt;
&lt;p&gt;&lt;img src=&#34;rte-grid-training-ground.jpeg&#34; alt=&#34;training ground&#34;&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;A key takeaway is that this isn&amp;rsquo;t just about electrical grid equipment
manufacturers dealing with voltages that require a wide safety perimeter.  The
open-source software deployed in electrical substations can be run by anyone
and virtually anywhere.  Hobbyists can take part and uncover new professional
avenues.  Researchers and students can advance cutting-edge technology with
small-scale labs.  The long history and lessons learnt that have shaped the
&lt;a href=&#34;https://en.wikipedia.org/wiki/Free_and_open-source_software&#34;&gt;FOSS&lt;/a&gt; culture
also apply here: while not everyone in the Energy sector is running Linux on
their laptop yet, people know about licenses, best practices and the value of
building a shared platform in the open.&lt;/p&gt;
&lt;h2 id=&#34;seapath&#34;&gt;SEAPATH&lt;/h2&gt;
&lt;div style=&#34;float: right; padding: 6px 0 0 18px&#34;&gt;
&lt;p&gt;&lt;img src=&#34;seapath-rack.jpeg&#34; alt=&#34;rack&#34;&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;Pursuing our RTE tour, we then stopped by this rack of servers running
&lt;a href=&#34;https://lf-energy.atlassian.net/wiki/spaces/SEAP/overview&#34;&gt;SEAPATH&lt;/a&gt; for
evaluation purposes.  It&amp;rsquo;s designed to continuously monitor the electrical
lines connected to a substation and &amp;ldquo;pull the plug&amp;rdquo; if a fault condition is
met.  I&amp;rsquo;m over-simplifying, this is much more complex than just a peak detector
with a fixed threshold.  Every millisecond counts in the event of something
going wrong: waveform distortion, voltage surges etc. can damage large amounts
of infrastructure, cause fires and explosions.  But software-wise, it&amp;rsquo;s just
regular streams of data flowing in and out - under tight real-time constraints.
And of course, this can be emulated with artificial sensor data and circuit
breaker models.  Some substations already feature early deployments of SEAPATH
while the most critical safety functions are still handled in dedicated
hardware for now.  Other
&lt;a href=&#34;https://en.wikipedia.org/wiki/Transmission_system_operator&#34;&gt;TSOs&lt;/a&gt; in various
countries are doing the same, largely with their own and often proprietary
solutions.  With a lifetime of at least 25 years, the pace and magnitude of
this kind of entreprise is titanic.  In comparison, writing code is &lt;em&gt;fast&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;The community around this project still needs to take off although it is
continuously gathering momentum.  More and more contributors are coming
together, chiefly under the wing of RTE via LF Energy: &lt;a href=&#34;https://blog.savoirfairelinux.com/en-ca/2023/unveiling-of-an-open-source-commercial-support-offer-for-seapath/&#34;&gt;Savoir-Faire
Linux&lt;/a&gt;
has been involved for many years and &lt;a href=&#34;https://developers.redhat.com/articles/2025/11/18/exploring-lf-energy-seapath-architecture-rhel&#34;&gt;Red
Hat&lt;/a&gt;
just joined the party.  This is the second key takeaway from the event: while
each player is being assigned a particular role, where should I stand?&lt;/p&gt;
&lt;h2 id=&#34;personal-roadmap&#34;&gt;Personal roadmap&lt;/h2&gt;
&lt;div style=&#34;float: left; padding: 6px 18px 0 0&#34; align=&#34;center&#34;&gt;
&lt;p&gt;&lt;img src=&#34;zeltron-gtucker-comic.jpeg&#34; alt=&#34;zeltron&#34;&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;As an independent developer and long-time advocate of open source and free
software best practices, I can see many ways to foster a wider engagement and
extend the project beyond the corporate boundaries drawn by the big actors.
This naturally boils down to the various business models involved.  I don&amp;rsquo;t
provide complete enterprise solutions or manage data centres and Cloud
services.  There&amp;rsquo;s only so much a single individual can do.  However, I have
extensive freedom of action and benefit from a privileged, neutral position to
be an active catalyst in the community.&lt;/p&gt;
&lt;p&gt;My previous experience in Linux kernel development and automated testing also
brings a valuable element to the picture.  Maintaining production deployments
for 25 years is &lt;em&gt;hard&lt;/em&gt;.  We live in a connected world and security fixes in
particular need to be constantly back-ported to keep a system safe.  I
witnessed this first-hand when &lt;a href=&#34;https://chromeos.google/&#34;&gt;ChromeOS&lt;/a&gt; extended
its kernel support lifetime via &lt;a href=&#34;https://kernelci.org&#34;&gt;KernelCI&lt;/a&gt;.  Upstream
long-term stable &lt;a href=&#34;https://www.kernel.org/category/releases.html&#34;&gt;kernel
releases&lt;/a&gt; last at most 5 years
and &lt;a href=&#34;https://cip-project.org/&#34;&gt;CIP&lt;/a&gt; maintains specific use-cases for up to 10
years so production kernels always require a significant amount of effort.&lt;/p&gt;
&lt;p&gt;Putting all this together, this is what my current personal Energy roadmap
looks like:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Open Stack&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;My area of interest has now narrowed down to the Digital Substation software
stack.  As such, I would like to provide a development setup with ideally all
components available as open-source.  This would start with a SEAPATH setup
that can be run on a development laptop rather than dedicated servers - I have
a nested KVM PoC coming soon for this 🚀&lt;/p&gt;
&lt;p&gt;Then as mentioned in my &lt;a href=&#34;https://gtucker.io/posts/2025-09-29-digisub-pt2.1/#iec-61850-libraries&#34;&gt;previous
post&lt;/a&gt;, the IEC 61850
standard is lacking in open-source library implementation.  So I&amp;rsquo;m looking
forward to contributing to the &lt;a href=&#34;https://github.com/OpenEnergyTools&#34;&gt;Open Energy
Tools&lt;/a&gt; project and include this in the
development stack via a base image with some demo application containers and
VMs.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Community Catalyst&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;By not being tied to the particular interests and decision process of any
established organisation, I am literally walking in the community developer&amp;rsquo;s
shoes.  As such, I have the agency to connect the dots in the bigger picture.
In practice, this can mean writing more blog posts like this one and speaking
at events but also help managing communication channels (Discord, IRC, mailing
list etc.) in a neutral way.  I also don&amp;rsquo;t have the burden of proprietary
license and confidential information that could taint software development.
Put another way, my only bias is towards FOSS indeed.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Kernel Support&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Going a bit further on the technical side, I can also put my deep expertise to
good use with long-term Linux kernel testing and support for production
deployments.  As I&amp;rsquo;m currently working on
&lt;a href=&#34;https://gitlab.com/gtucker/vixi&#34;&gt;VIXI&lt;/a&gt;, an R&amp;amp;D project for automated kernel
testing in virtual environments, a particular use case would be to run the
SEAPATH development stack mentioned earlier with
&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/rt/linux-stable-rt.git&#34;&gt;&lt;code&gt;rt-stable&lt;/code&gt;&lt;/a&gt;
and any other relevant upstream branches.  This could catch a large amount of
issues before doing full-blown testing on real hardware targets.  Keeping the
same kernel base version for more than a few years isn&amp;rsquo;t really practical, the
real answer is to be able to upgrade in the field.  Doing this requires a high
standard of quality to avoid regressions and minimise the hours of engineering
time spent porting downstream patches.&lt;/p&gt;
&lt;h2 id=&#34;see-you-at-fosdem&#34;&gt;See you at FOSDEM&lt;/h2&gt;
&lt;p&gt;The journey continues while I&amp;rsquo;m going back to where it all
&lt;a href=&#34;https://gtucker.io/posts/2024-02-05-fosdem/&#34;&gt;started&lt;/a&gt;.  The Energy devroom has been announced
for the forth time at &lt;a href=&#34;https://fosdem.org/2026/schedule/track/energy/&#34;&gt;FOSDEM
2026&lt;/a&gt; (schedule to be finalised
mid-December) so it&amp;rsquo;ll be good to see you there if you can attend.  And as
usual, please feel free to send any queries you may have via
&lt;a href=&#34;mailto:gtucker@gtucker.io&#34;&gt;email&lt;/a&gt;.  In the meantime, keep energised ⚡&lt;/p&gt;
&lt;div style=&#34;font-size:0.8em; line-height: 1.0em; margin-top: 25px; float: right; text-align: right&#34;&gt;
&lt;p&gt;Pictures © 2025 Guillaume Tucker with permission from RTE, licensed under
&lt;a href=&#34;https://creativecommons.org/licenses/by-sa/4.0/&#34;&gt;CC-BY-SA-4.0&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;
&lt;/div&gt;
- https://gtucker.io/posts/2025-12-01-digisub-pt3/ - 2021-2026 Guillaume Tucker</description>
        </item>
    
    
    
        <item>
        <title>Digital Substation Pt.2.1 – LFE Summit</title>
        <link>https://gtucker.io/posts/2025-09-29-digisub-pt2.1/</link>
        <pubDate>Mon, 29 Sep 2025 00:00:00 +0000</pubDate>
        
        <guid>https://gtucker.io/posts/2025-09-29-digisub-pt2.1/</guid>
        <description>gtucker.io https://gtucker.io/posts/2025-09-29-digisub-pt2.1/ -&lt;p&gt;Attending &lt;a href=&#34;https://events.linuxfoundation.org/lfenergysummit-europe/&#34;&gt;LF Energy Summit
Europe&lt;/a&gt; was a really
inspiring experience.  The event is
&lt;a href=&#34;https://lfenergy.org/record-breaking-attendance-at-lf-energy-summit-europe-drives-open-source-collaboration-for-the-energy-transition/&#34;&gt;growing&lt;/a&gt;
very quickly every year which shows how much interest there is in the industry
for open-source solutions.  It was my second Summit and I&amp;rsquo;m now able to
navigate my way through the various projects, companies and individuals – none
of them were known to me just 18 months ago.  Writing my previous
&lt;a href=&#34;https://gtucker.io/posts/2025-09-09-digisub-pt2/&#34;&gt;post&lt;/a&gt; really helped me getting prepared for
the event and I arrived with many questions in mind.  I&amp;rsquo;m glad I&amp;rsquo;ve found some
answers and met numerous people to discuss all these topics and beyond.  For
now, let&amp;rsquo;s focus on the ones I raised last time and what I&amp;rsquo;ve learnt since
then.&lt;/p&gt;
&lt;h2 id=&#34;reference-stack&#34;&gt;Reference Stack&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;💡 What would be needed to create a complete open-source reference solution?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Having a fully open-source reference stack is definitely something many people
are aiming for.  It reminds me of the story of the early days of GNU, starting
with just a C library before adding a kernel (Linux), a compiler (GCC),
applications (glib, GTK) etc.  The
&lt;a href=&#34;https://lfenergysummiteu2025.sched.com/event/27vvZ/demo-lf-energy-seapath-eloi-bail-mathieu-dupre-savoir-faire-linux&#34;&gt;demo&lt;/a&gt;
as seen in the main picture with the &lt;a href=&#34;https://blog.savoirfairelinux.com/en-ca/2023/unveiling-of-an-open-source-commercial-support-offer-for-seapath/&#34;&gt;Savoir-Faire
Linux&lt;/a&gt;
team was a great way to showcase where things currently stand and how
&lt;a href=&#34;https://lfenergy.org/projects/seapath/&#34;&gt;SEAPATH&lt;/a&gt; provides a very promising
basis for an open-source reference stack.  In a nutshell, it&amp;rsquo;s a hypervisor
which addresses all the real-time and quality of service requirements for
running applications in a digital substation.  I&amp;rsquo;ll definitely be spending more
time on this in the coming weeks.&lt;/p&gt;
&lt;p&gt;However, the upper layers of the stack are still missing.  As I anticipated,
application VMs are all proprietary.  Having some reference ones would be very
useful, even if they aren&amp;rsquo;t suitable as-is for production deployments.  They
would first of all facilitate development and validation of the lower layers,
then potentially provide building blocks for the real world.  As community
efforts are growing, I believe it should eventually materialise so I&amp;rsquo;ll be
keeping an eye on that too.&lt;/p&gt;
&lt;p&gt;As a bonus, there is also a path to having an open hardware reference design
for at least some components with initiatives such as
&lt;a href=&#34;https://www.owntech.org/en/home-en/&#34;&gt;OwnTech&lt;/a&gt;.  So the stack can grow both
ways around SEAPATH, all the way from the hardware to application VMs.&lt;/p&gt;
&lt;h2 id=&#34;iec-61850-libraries&#34;&gt;IEC 61850 Libraries&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;💡 How about creating a non-official, open standard for IEC 61850?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;One key building block of digital substation services is an implementation of
the &lt;a href=&#34;https://iec.ch&#34;&gt;IEC&lt;/a&gt; 61850 communication protocols.  This is a somewhat
thorny topic as it&amp;rsquo;s a proprietary international standard surrounded by many
legal grey areas.  In my previous post, I suggested writing a new Rust crate
under the MIT license.  While in Aachen, I was delighted to meet &lt;a href=&#34;https://www.linkedin.com/in/jakob-vogelsang-235a15181/&#34;&gt;Jakob
Vogelsang&lt;/a&gt; who happens
to be working on the &lt;a href=&#34;https://github.com/OpenEnergyTools&#34;&gt;OpenEnergyTools&lt;/a&gt;
project which does just that!&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;m looking forward to start contributing very soon even though I don&amp;rsquo;t
currently have access to the standard itself.  This may in fact be all for the
better if it can avoid a few legal issues.  The details of how it&amp;rsquo;s all going
to unfold still need to be worked out.  At least we&amp;rsquo;ve been able to confirm
that having an open-source implementation of the standard is permitted.  It
seems a bit simpler than some reverse-engineered GPU driver projects I&amp;rsquo;ve seen
such as &lt;a href=&#34;https://docs.mesa3d.org/drivers/panfrost.html&#34;&gt;Panfrost&lt;/a&gt; which ended
up being a huge success in spite of the countless pitfalls that paved the way
there.  Now, electrical equipment destined to be used in actual substations
still has to meet safety regulations as per IEC standards too but that&amp;rsquo;s an
orthogonal issue.  Developers aren&amp;rsquo;t responsible for deploying the grid.&lt;/p&gt;
&lt;h2 id=&#34;real-time-requirements&#34;&gt;Real-Time Requirements&lt;/h2&gt;
&lt;p&gt;The topic of punching a hole through the ISO networking layers to get data
packets delivered directly and in real time doesn&amp;rsquo;t transpire as an obvious
source of concern.  This doesn&amp;rsquo;t mean it will never be, a recurring theme at
the Summit was that security is paramount but there is currently little clarity
over how to achieve it or how secure the current systems are.  So it might be
an oversight, time will tell.  There must have been some form of security
audits in the past, maybe the results just haven&amp;rsquo;t been shared publicly.  The
industry tends to focus on safety first as with traditional substations and it
takes a while to address the additional risks that the digital world brings to
the table.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;💡 How can one create a virtual digital substation for development?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Still, using the networking hardware rather than a dedicated digital CAN-like
bus for GOOSE and sample values (SV) seems like a practical approach for
keeping things simple.  As long as these packets don&amp;rsquo;t disrupt the regular
services running on TCP and the whole approach doesn&amp;rsquo;t pose serious security
risks then I suppose it&amp;rsquo;s fine.  At least it makes it easier to implement the
rest of the stack so it definitively helps with development.  Again, this is
where I&amp;rsquo;m expecting SEAPATH to shine.&lt;/p&gt;
&lt;p&gt;Also I&amp;rsquo;ve heard that the standards tend to be rather heavy-weight, so it may be
justified to have more streamlined, optimised communication within some
well-defined areas of substations and rely on the established protocols
primarily for the sake of interoperability – food for thought.&lt;/p&gt;
&lt;h2 id=&#34;last-leg&#34;&gt;Last Leg&lt;/h2&gt;
&lt;p&gt;I now have all the elements lined up for the third and last part of this blog
series, except maybe that I haven&amp;rsquo;t been exposed to the hard reality of
electrical grids yet.  So I&amp;rsquo;ll continue down the same avenue with more hands-on
experiments, maybe running SEAPATH with some basic hardware.  What are the
challenges faced when deploying and maintaining a digital substation in the
field?  How does regular grids compare with railway networks or other
specialised use-cases?  Let&amp;rsquo;s see where this takes us.&lt;/p&gt;
- https://gtucker.io/posts/2025-09-29-digisub-pt2.1/ - 2021-2026 Guillaume Tucker</description>
        </item>
    
    
    
        <item>
        <title>Digital Substation Pt.2 - Insights</title>
        <link>https://gtucker.io/posts/2025-09-09-digisub-pt2/</link>
        <pubDate>Tue, 09 Sep 2025 00:00:00 +0000</pubDate>
        
        <guid>https://gtucker.io/posts/2025-09-09-digisub-pt2/</guid>
        <description>gtucker.io https://gtucker.io/posts/2025-09-09-digisub-pt2/ -&lt;p&gt;The energy world is overwhelmingly large.  This blog series draws a line around
digital electrical substations which are themselves a very rich topic with many
avenues to explore.  The &lt;a href=&#34;https://gtucker.io/posts/2025-07-07-digisub-pt1/&#34;&gt;first part&lt;/a&gt; covered
some basic concepts along with my first impressions as an open-source software
developer.  It&amp;rsquo;s now time to step in a bit further and focus on two specific
areas: the open-source part of the energy ecosystem and how the concept of
software-defined networking (SDN) applies to substations.&lt;/p&gt;
&lt;p&gt;As I&amp;rsquo;m still only at the beginning of this long journey, there are many
questions that remain to be answered in this blog post.  I&amp;rsquo;ve highlighted them
with lightbulbs 💡 and they are like &amp;ldquo;breakpoints&amp;rdquo; where further debugging is
needed.&lt;/p&gt;
&lt;h2 id=&#34;ecosystem&#34;&gt;Ecosystem&lt;/h2&gt;
&lt;p&gt;The edges of any ecosystem are always fuzzy so let&amp;rsquo;s start from the core.
While I&amp;rsquo;ve been actively looking for hidden gems, it turns out that the key
player by far in this area is the &lt;a href=&#34;https://lfenergy.org/&#34;&gt;Linux Foundation
Energy&lt;/a&gt; initiative.  It acts as an umbrella to drive a
variety of industry members towards open collaboration.  Like I wrote before,
the open-source communities in the energy sector at large and around
substations in particular still seem to have a long way to go to catch up with
other industries such as data centres and consumer electronics - which makes
such collaborative efforts all the more valuable.&lt;/p&gt;
&lt;p&gt;LF Energy is currently made up of roughly &lt;a href=&#34;https://lfenergy.org/about/members/&#34;&gt;50
members&lt;/a&gt; and &lt;a href=&#34;https://landscape.lfenergy.org/&#34;&gt;50
projects&lt;/a&gt; which all deserve some attention.
I&amp;rsquo;ve arbitrarily cherry-picked a handful that appear to be the most relevant
ones for this blog post.  And let&amp;rsquo;s not forget to keep an eye open for other
entities outside this circle.&lt;/p&gt;
&lt;h3 id=&#34;standards&#34;&gt;Standards&lt;/h3&gt;
&lt;div style=&#34;float: right; padding: 0&#34;&gt;
&lt;p&gt;&lt;a href=&#34;https://iec.ch&#34;&gt;&lt;img src=&#34;iec.png&#34; alt=&#34;IEC logo&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;Before we dive into a sea of lines of code, an important aspect to keep in mind
is international standards.  While they might seem rather daunting at first,
they are also the backbone of the industry as they help ensure
interoperability.  Many open-source projects provide concrete implementations
of them.  It all essentially revolves around the now-famous IEC 61850.  If
you&amp;rsquo;ve never heard of it, the written
&lt;a href=&#34;https://www.iec.ch/blog/iec-61850-core-standards-smart-grid&#34;&gt;interview&lt;/a&gt; from
the technical committee lead provides a quick intro.&lt;/p&gt;
&lt;p&gt;The most relatable parts of the standards for software engineers are messaging
protocols (MMS, GOOSE, SV) as well as the substation configuration language
(SCL).  Here&amp;rsquo;s a small cheat sheet:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;MMS&lt;/strong&gt;: general-purpose messages with a topology of abstract objects inherited
from the manufacturing world (&lt;a href=&#34;https://www.iso.org/standard/37079.html&#34;&gt;ISO
9506&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;GOOSE&lt;/strong&gt;: low-latency publisher / subscriber events operating at the MAC
address level (&lt;a href=&#34;https://www.iso.org/standard/20269.html&#34;&gt;OSI&lt;/a&gt;
level 2) in substation LANs&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;SV&lt;/strong&gt;: sampled values, they are the digital equivalent of analogue signals&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;SCL&lt;/strong&gt;: machine-readable XML dialect to describe a substation topology&lt;/p&gt;
&lt;p&gt;The IEC standards are all proprietary.  Copies of the PDF documents can be
purchased from the &lt;a href=&#34;https://iec.ch&#34;&gt;International Electrotechnical Comission&lt;/a&gt;
website.  While this has been common practice for many decades, it also shows
an obvious gap to fill when it comes to open source.  I couldn&amp;rsquo;t even find
canonical links with definitions to the acronyms mentioned earlier other than
some lightweight &lt;a href=&#34;https://en.wikipedia.org/wiki/IEC_61850&#34;&gt;Wikipedia&lt;/a&gt; entries
or independent articles such as this one.  The non-profit &lt;a href=&#34;https://61850ug.org/&#34;&gt;UCA user
group&lt;/a&gt; goes in this direction but isn&amp;rsquo;t quite a true
open-source community effort either.&lt;/p&gt;
&lt;p&gt;To clarify what I have in mind, let&amp;rsquo;s take the example of how the graphics
industry has adopted a now well-known and successful open standard approach
(OpenGL, Vulkan) via the &lt;a href=&#34;https://www.khronos.org/&#34;&gt;Khronos&lt;/a&gt; group.  These
standards are entirely open and available free of charge, including the
certification test suites so anyone can run them on their GPU drivers.  Only
the final, authoritative certification is not free and is typically needed only
by hardware vendors in the supply chain for end-user products.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;💡 How about creating a non-official, open standard for IEC 61850?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;As a side note, it&amp;rsquo;s also worth mentioning that earlier communication protocols
such as Modbus are still around and they keep coming up in the literature.
Electrical grid infrastructure naturally has a huge inertia due to the costs
and amount of effort involved with replacing any part of it, and they&amp;rsquo;re built
to last.  A good example is this 2019 slide deck from
&lt;a href=&#34;https://assets.new.siemens.com/siemens/assets/api/uuid:6d8d8d9b-d5db-4540-9b5f-6fd6e9ecefac/di-pa-ci-digital-substation-ipdf-en.pdf&#34;&gt;Siemens&lt;/a&gt;.
But let&amp;rsquo;s stay focused on the more modern solutions here.&lt;/p&gt;
&lt;h3 id=&#34;projects&#34;&gt;Projects&lt;/h3&gt;
&lt;p&gt;How well do these international standards translate into currently available
open-source tools?  First, let&amp;rsquo;s enumerate a few.  Starting with the LF Energy
projects, here are the ones I picked:&lt;/p&gt;
&lt;div style=&#34;float: right; padding: 0&#34;&gt;
&lt;p&gt;&lt;a href=&#34;https://powsybl.readthedocs.io/projects/powsybl-diagram/latest/&#34;&gt;&lt;img src=&#34;powsybl-network.png&#34; alt=&#34;PowSyBl network&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&#34;https://lfenergy.org/projects/seapath/&#34;&gt;SEAPATH&lt;/a&gt;&lt;/strong&gt;: hypervisor for digital
substations
&lt;ul&gt;
&lt;li&gt;Resources: &lt;a href=&#34;https://github.com/seapath/&#34;&gt;GitHub&lt;/a&gt;,
&lt;a href=&#34;https://lf-energy.atlassian.net/wiki/spaces/SEAP/overview&#34;&gt;wiki&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Runs on Yocto and Debian with Ansible to deploy new VMs on top&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&#34;https://lfenergy.org/projects/power-grid-model/&#34;&gt;Power Grid Model&lt;/a&gt;&lt;/strong&gt;: grid
modeling and profiling
&lt;ul&gt;
&lt;li&gt;Resources: &lt;a href=&#34;https://github.com/PowerGridModel/power-grid-model&#34;&gt;GitHub&lt;/a&gt;,
&lt;a href=&#34;https://pypi.org/project/power-grid-model/&#34;&gt;PyPI&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Comes with some nice
&lt;a href=&#34;https://github.com/PowerGridModel/power-grid-model-workshop/blob/main/examples/Power%20Flow%20Example.ipynb&#34;&gt;examples&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&#34;https://lfenergy.org/projects/powsybl/&#34;&gt;PowSyBl&lt;/a&gt;&lt;/strong&gt;: Power System Blocks
&lt;ul&gt;
&lt;li&gt;Resources: &lt;a href=&#34;https://github.com/powsybl/&#34;&gt;GitHub&lt;/a&gt;,
&lt;a href=&#34;https://powsybl.readthedocs.io/&#34;&gt;documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;All done in Java code, it would seem useful to have some data file format&lt;/li&gt;
&lt;li&gt;Here&amp;rsquo;s a nice
&lt;a href=&#34;https://powsybl.readthedocs.io/projects/powsybl-tutorials/en/latest/loadflow.html&#34;&gt;tutorial&lt;/a&gt;
among a few others&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&#34;https://lfenergy.org/projects/compas/&#34;&gt;CoMPAS&lt;/a&gt;&lt;/strong&gt;: Configuration Modules
&lt;ul&gt;
&lt;li&gt;Resources: &lt;a href=&#34;https://github.com/com-pas/&#34;&gt;GitHub&lt;/a&gt;,
&lt;a href=&#34;https://lf-energy.atlassian.net/wiki/spaces/SHP/overview&#34;&gt;wiki&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;A &lt;a href=&#34;https://github.com/com-pas/compas-deployment&#34;&gt;docker compose&lt;/a&gt; setup is
available&lt;/li&gt;
&lt;li&gt;Some &lt;a href=&#34;https://www.youtube.com/playlist?list=PLKyFf1J9XkptzXdmaAZeV1WX8ONML3XwC&#34;&gt;tutorial
videos&lt;/a&gt;
are available too&lt;/li&gt;
&lt;li&gt;Looks great, finding my way around the project wasn&amp;rsquo;t very easy at first&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Then here are a few independent ones which I found to be equally interesting:&lt;/p&gt;
&lt;div style=&#34;float: right; padding: 0 0 0 12px&#34;&gt;
&lt;p&gt;&lt;a href=&#34;https://veragrid.readthedocs.io/en/latest/&#34;&gt;&lt;img src=&#34;gridcal-cropped.png&#34; alt=&#34;VeraGrid&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&#34;https://github.com/mz-automation/libiec61850&#34;&gt;libiec61850&lt;/a&gt;&lt;/strong&gt;: IEC 61850
library written in C
&lt;ul&gt;
&lt;li&gt;Resources: &lt;a href=&#34;https://github.com/mz-automation/libiec61850.git&#34;&gt;GitHub&lt;/a&gt;,
&lt;a href=&#34;https://support.mz-automation.de/doc/libiec61850/c/latest/&#34;&gt;documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Under the GPL v3, appears to be the only open-source one available&lt;/li&gt;
&lt;li&gt;Part of &lt;a href=&#34;https://www.mz-automation.de/products/#iec61850&#34;&gt;MZ Automation&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&#34;https://openscd.org/&#34;&gt;OpenSCD&lt;/a&gt;&lt;/strong&gt;: Open Substation Communication Designer
&lt;ul&gt;
&lt;li&gt;Resources: &lt;a href=&#34;https://github.com/openscd/open-scd&#34;&gt;GitHub&lt;/a&gt;,
&lt;a href=&#34;https://github.com/openscd/open-scd/wiki&#34;&gt;wiki&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Editor for SCL files, see the &lt;a href=&#34;https://openscd.github.io/&#34;&gt;demo&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Has a downstream &lt;a href=&#34;https://github.com/com-pas/compas-open-scd&#34;&gt;fork for
CoMPAS&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&#34;https://veragrid.readthedocs.io/&#34;&gt;VeraGrid&lt;/a&gt;&lt;/strong&gt; (formally GridCal):
electrical grid simulation
&lt;ul&gt;
&lt;li&gt;Resources: &lt;a href=&#34;https://github.com/SanPen/GridCal&#34;&gt;GitHub&lt;/a&gt;,
&lt;a href=&#34;https://pypi.org/project/VeraGridEngine/&#34;&gt;PyPI&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;While this is potentially highly relevant here, substation modeling still
remains &lt;a href=&#34;https://veragrid.readthedocs.io/en/latest/md_source/modelling.html#substations-modelling&#34;&gt;to be
done&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&#34;https://github.com/OpenEnergyTools&#34;&gt;OpenEnergyTools&lt;/a&gt;&lt;/strong&gt;: toolbox related to
digital substations and grids
&lt;ul&gt;
&lt;li&gt;Provides Typescript tools to handle SCL data&lt;/li&gt;
&lt;li&gt;Nice community initiative, still early days&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Each project mentioned above as well as many others would require at least a
dedicated blog post and several hours of playing around to do them justice.  So
as a &lt;a href=&#34;https://www.merriam-webster.com/dictionary/TL%3BDR&#34;&gt;tl;dr&lt;/a&gt; summary, I
found &lt;code&gt;libiec61850&lt;/code&gt; to be pretty neat and a great way to get started with the
standard from a hands-on point of view.  Reading the code already sheds some
light on what it&amp;rsquo;s all about.  Then I found VeraGrid to be of very high
quality, but that&amp;rsquo;s slightly outside the physical substation realm.  Other
simulation and modeling tools can be used locally too, more or less easily.
The biggest issue I have with those that relate directly to substations is how
to use them in practice without having a real electrical grid at hand.  I&amp;rsquo;m
sure there must be ways to set up lightweight development environments but it
didn&amp;rsquo;t seem too obvious.  For example, I haven&amp;rsquo;t found sample Ansible
deployment files for SEAPATH with typical VM instances other than in the
&lt;a href=&#34;https://lf-energy.atlassian.net/wiki/spaces/SEAP/pages/31821931/Maintainers&#34;&gt;release
procedure&lt;/a&gt;.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;💡 How can one create a virtual digital substation for development?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id=&#34;stacking-things-up&#34;&gt;Stacking things up&lt;/h3&gt;
&lt;p&gt;Also I&amp;rsquo;m struggling to understand how things fit together.  In particular, I
find it hard to see how these projects can be composed to form a functional
stack.  Say, where does VeraGrid sit compared to Power Grid Model and PowSyBl,
or OpenSCD compared to CoMPAS-SCT?  The mapping between electricity
transportation and distribution networks on one hand and software projects on
the other seems rather fuzzy too, but that may just be because I&amp;rsquo;m missing some
information and expertise there.  Then I don&amp;rsquo;t know to which extent
&lt;code&gt;libiec61850&lt;/code&gt; is used in real-world substations, I would expect such use-cases
to be somewhat publicly visible due to the GPL license.&lt;/p&gt;
&lt;p&gt;For the sake of the exercise, let&amp;rsquo;s try and put together all the pieces I&amp;rsquo;ve
gathered so far.  A digital substation has a set of software services running
on top of a dedicated local network (LAN) infrastructure.  This is done via a
hypervisor such as SEAPATH and isolated virtual machines which provide the
different functions.  The substation topology for the underlying electrical
equipment such as circuit breakers etc.  is described using the SCL language
which OpenSCD or CoMPAS SCT can help manage.  Critical communication within the
substation&amp;rsquo;s LAN is done via GOOSE, mostly to protect the equipment against
faults or surges.  Sensors send data as samples values (SV) which are used by
monitoring systems and the control logic to trigger actions.  Routable-GOOSE
(R-GOOSE) is used to open remote connections via the regular IP layer but
without real-time guarantees.  All the rest of the communication is handled via
industry-standard MMS messages.  Aside from grid modeling and simulation, this
is all I can think of right now that applies to digital substations.&lt;/p&gt;
&lt;p&gt;What stands out is that some areas seem to have competing projects while there
are large gaps in other areas.  What are the actual applications running in
substations and implementing the control logic?  Probably this is driven mostly
by industry members with a rather narrow set of requirements.  So I would
expect all the missing parts to have proprietary implementations, a bit like
consumer electronics or web technologies have open-source low-level building
bricks to provide a platform for deploying proprietary applications.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;💡 What would be needed to create a complete open-source reference solution?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id=&#34;my-2&#34;&gt;My 2¢&lt;/h3&gt;
&lt;p&gt;While I have spent quite a bit of time looking into each of them, I&amp;rsquo;m still
mostly commenting here on the &amp;ldquo;out-of-box&amp;rdquo; experience as a newcomer.  So I may
be missing some obvious things, but I suspect others like me might have to jump
over the same hurdles.  My general feeling is that there is a very strong
momentum behind all these projects although the community around it is still in
its infancy.  I may be projecting too much, but what seems to be needed now is
to expand the spectrum of people involved.  New contributors with some relevant
experience from different backgrounds and enough time available would help
bring things to maturity.  It reminds me of where embedded electronics was
before Android took off around 2012 and Linux became the main OS in the
industry.  It&amp;rsquo;s true that while virtually anyone can get a computer and run
plain software on it, the hardware involved with electrical grids means it&amp;rsquo;s
bound to be destined to a much reduced user base.  Still, smart homes and
domestic generators such as solar panels are becoming increasingly common.  As
such, there is a potential for consumer-level nanogrids at the household scale.
Having homes connected to the grid from a data point of view is increasingly
common and raises awareness about energy usage.  The main incentives for
consumers may be keeping an eye on bills, where the electricity is coming from
as well as its associated carbon footprint while preserving privacy.&lt;/p&gt;
&lt;p&gt;I realise this has raised more questions than answers, which again probably
shows where I lack some knowledge but also where the potential for growing the
community side of the ecosystem might lie.  Let&amp;rsquo;s now take a look at the second
topic of this blog post and jump to a different starting point which does have
a well-established software ecosystem.&lt;/p&gt;
&lt;h2 id=&#34;software-defined&#34;&gt;Software Defined&lt;/h2&gt;
&lt;div style=&#34;float: right; padding: 0 0 12px 0&#34;&gt;
&lt;p&gt;&lt;img src=&#34;sdn-architecture.png&#34; alt=&#34;SDN architecture&#34;&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;Data centres route information through their networks with elaborate and
dynamic rules.  Similarly, substations route electricity.  However, drawing an
accurate parallel between these two kinds of routing is far from trivial.
Network data packets are abstract entities that can be held in memory and carry
their own headers, which are used to build sophisticated rules.  An electrical
energy flow has a very real physical dimension.  A broken TCP connection
doesn&amp;rsquo;t sound as dangerous as an electrical arc flash explosion.  I suppose
some concepts still apply, such as &lt;em&gt;load balancing&lt;/em&gt; for data traffic and &lt;em&gt;load
shedding&lt;/em&gt; with power generators.  We may also see an equivalent of the &lt;em&gt;data
plane&lt;/em&gt; in the electrical concept I&amp;rsquo;d like to call &lt;em&gt;power plane&lt;/em&gt;.  Generally
speaking, even if the analogy with data routing only goes so far, the idea of
describing both kinds of rules and deploying them dynamically via software is
equally valid.  So the first takeaway is that software-defined substations need
their own dedicated frameworks and can&amp;rsquo;t just reuse networking ones for routing
energy.  Rather, we may want to take a closer look at &lt;a href=&#34;https://www.cs.princeton.edu/courses/archive/fall13/cos597E/papers/sdnhistory.pdf&#34;&gt;&lt;em&gt;how&lt;/em&gt; modern-day SDN
came to
be&lt;/a&gt;
over the past twenty years or so.  There are probably many lessons to be learnt
from it and ideas to guide progress in software-defined substations (and
material for more blog posts&amp;hellip;).&lt;/p&gt;
&lt;h3 id=&#34;substation-networking&#34;&gt;Substation networking&lt;/h3&gt;
&lt;p&gt;The second aspect is that substations are built on top of computer networks.
As such, SDN can totally be used to define their topologies.  It&amp;rsquo;s not directly
about how to route electricity any more but how to set up the control systems
that do.  In this respect, it is clearly related to data centres.  One might
even argue that a digital substation contains a small, quirky, dedicated data
centre.  Above all, network security is the most important aspect as digital
substations become exposed to the Internet.  Control logic gets run in isolated
VMs on top of specialised hypervisors and standard security rules can be
enforced when exposing them to the Internet: firewalls, encryption,
authentication etc.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;💡 Should networking, energy flows or both be software defined?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id=&#34;duck-the-goose&#34;&gt;Duck the GOOSE&lt;/h3&gt;
&lt;p&gt;Still, some specific features are only found in digital substations.  The main
one that comes to my mind is the concept of low-latency events with the IEC
61850 GOOSE specification.  To guarantee delivery time, it bypasses the TCP,
UDP and IP parts of the network stack (i.e. OSI layers 3 and 4) to directly
talk at the link level (layer 2) using MAC addresses.  While this of course
gives fine-grained access to the infrastructure, it comes at a high cost: no IP
routing tables, specific security considerations and non-standard raw
communication software sockets as per the &lt;a href=&#34;https://github.com/mz-automation/libiec61850/blob/v1.6/hal/ethernet/linux/ethernet_linux.c#L170&#34;&gt;libiec61850
implementation&lt;/a&gt;.
Note that security might be simplified and even strengthened by skipping the IP
layer, but I fear it&amp;rsquo;s not that simple when it comes to preventing escalation
once an intrusion has occurred.&lt;/p&gt;
&lt;p&gt;At any rate, I was quite surprised to learn about this and I&amp;rsquo;m sure it would
also make other software engineers raise an eyebrow.  For example, to the best
of my knowledge, this doesn&amp;rsquo;t happen in the automotive industry which has
similar challenges.  Instead, a dedicated CAN bus is used to transfer sensor
and actuator messages which translate easily to UDP for high-level applications
such as car dashboards.  A real-time operating system or RTOS such as QNX
(proprietary) is typically used for handling the logic of critical functions.
Why not use something similar in digital substations?  Say, a CAN-like bus over
fiber optics?  Maybe it&amp;rsquo;s just down to practical considerations.  Still there
seems to be a disconnect with the wider standard &lt;a href=&#34;https://webstore.iec.ch/en/publication/5515&#34;&gt;IEC
61508&lt;/a&gt; about the safety of
electrical systems, but again I&amp;rsquo;m not an expert in that field.  Then I found
out about the IEC 61850-90-5 extension which basically does GOOSE on top of UDP
or TCP, known as R-GOOSE as it&amp;rsquo;s routable to other IP networks, without the
same time-critical considerations which puts it back in SDN land.&lt;/p&gt;
&lt;h2 id=&#34;fun-times-ahead&#34;&gt;Fun times ahead&lt;/h2&gt;
&lt;p&gt;These are all insights into the hard problems of digital substations and I&amp;rsquo;m
only scratching the surface.  There&amp;rsquo;s no doubt that every technical design
decision was rooted in sound expertise.  I&amp;rsquo;ve tried to highlight the parts that
I found to be the hardest to grasp and more generally speaking, how a more
open-source culture could be fostered.  We&amp;rsquo;ve seen how the Linux kernel really
became probably the most successful open-source project, by allowing anyone to
take part.  How an unknown contributor ended up writing the basis for IPv6
support or how reverse-engineering enthusiasts have shifted entire business
models.  Acting on the same plane as major corporations, universities and
everything in between is really what the free software philosophy is all
about - beyond the plain distribution terms outlined in the license.&lt;/p&gt;
&lt;div style=&#34;float: left; padding: 6px 18px 0 0&#34;&gt;
&lt;p&gt;&lt;a href=&#34;https://lfenergy.org/event/lf-energy-summit-europe-2025/&#34;&gt;&lt;img src=&#34;lfe-summit.png&#34; alt=&#34;LF Energy Summit Europe 2025&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;This week I&amp;rsquo;m attending my second &lt;a href=&#34;https://lfenergy.org/event/lf-energy-summit-europe-2025/&#34;&gt;LF Energy Summit
Europe&lt;/a&gt;.  It&amp;rsquo;s a fun,
welcoming event and a great way to get introduced to the ecosystem.  I might
find some answers to my questions and probably will come up with many more.
That will give me yet again plenty of things to cover for the third and last
post of this series.  Wrapping this one up now on my way to Aachen, traveling
entirely by train, is a great way of immersing myself into the Energy world.&lt;/p&gt;
&lt;div style=&#34;font-size:0.8em; line-height: 1.0em; margin-top: 25px; float: right; text-align: right&#34;&gt;
&lt;p&gt;Photo credits: &lt;a href=&#34;https://www.flickr.com/photos/15131913@N00/500387984&#34;&gt;carbon filament lightbulb&lt;/a&gt;
© 2007 by &lt;a href=&#34;https://www.flickr.com/photos/pong/&#34;&gt;Rob Pongsajapan&lt;/a&gt;
is licensed under &lt;a href=&#34;https://creativecommons.org/licenses/by/2.0/&#34;&gt;CC-BY-2.0&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://www.researchgate.net/figure/SDN-Architecture_fig1_333169462&#34;&gt;SDN architecture&lt;/a&gt;
© 2019 by the authors of &lt;a href=&#34;https://doi.org/10.3934/mbe.2019217&#34;&gt;DOI:10.3934/mbe.2019217&lt;/a&gt;
is licensed under &lt;a href=&#34;https://creativecommons.org/licenses/by/4.0/&#34;&gt;CC-BY-4.0&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://powsybl.readthedocs.io/projects/powsybl-diagram/latest/&#34;&gt;PowSyBl diagram&lt;/a&gt;
© 2018-2025 by the authors of the &lt;a href=&#34;https://github.com/powsybl/powsybl-diagram/&#34;&gt;PowSyBl documentation&lt;/a&gt;
is licensed under &lt;a href=&#34;https://creativecommons.org/licenses/by/4.0/&#34;&gt;CC-BY-4.0&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;
&lt;/div&gt;
- https://gtucker.io/posts/2025-09-09-digisub-pt2/ - 2021-2026 Guillaume Tucker</description>
        </item>
    
    
    
        <item>
        <title>Digital Substation Pt.1 - Groundwork</title>
        <link>https://gtucker.io/posts/2025-07-07-digisub-pt1/</link>
        <pubDate>Mon, 07 Jul 2025 00:00:00 +0000</pubDate>
        
        <guid>https://gtucker.io/posts/2025-07-07-digisub-pt1/</guid>
        <description>gtucker.io https://gtucker.io/posts/2025-07-07-digisub-pt1/ -&lt;p&gt;Electricity has been a well-known commodity for over a century.  When I was a
student learning electronics and power applications in the early 2000s,
renewable energy sources were very scarce.  Generators could be found in
off-grid locations and while some research was underway, not enough funding was
being allocated to enable large-scale deployments.  My main motivation when I
entered university was to help reshape how energy is being produced in a more
sustainable way, but it really was an uphill battle.  So I focused more on my
second passion which is open-source software.&lt;/p&gt;
&lt;p&gt;Fast-forward twenty years or so: the temperature is still rising and the world
is changing fast.  In the meantime, I have acquired experience in embedded
electronics, software in general and open source in particular.  One of the
reasons for choosing to work as &lt;a href=&#34;https://gtucker.io/posts/2025-02-27-first-year/&#34;&gt;freelance&lt;/a&gt; was
to dedicate some time and effort to learning more about renewable energy as the
electricity industry is now undergoing a major transformation.  It was a
pleasure to attend &lt;a href=&#34;https://gtucker.io/posts/2024-02-05-fosdem&#34;&gt;FOSDEM 2024&lt;/a&gt; and spend a day at
the Energy Devroom to discover so many high-profile initiatives.  As this is a
large open-source software conference, it&amp;rsquo;s no surprise that many in the room
were also new to the energy topic which is rooted in hardware and power
electronics.&lt;/p&gt;
&lt;h2 id=&#34;first-post-of-three&#34;&gt;First post of three&lt;/h2&gt;
&lt;p&gt;While discussing things with others at FOSDEM and then later at the &lt;a href=&#34;https://events.linuxfoundation.org/archive/2024/lfenergysummit/&#34;&gt;LF Energy
Summit&lt;/a&gt;, I
accepted the challenge when
&lt;a href=&#34;https://www.linkedin.com/in/boris-dolley-rte/&#34;&gt;Boris&lt;/a&gt; suggested to me that I
write a blog post about Digital Substations and all the software that goes with
it - here we are today, and thank you so much for reviewing it!  In particular,
it&amp;rsquo;s really important to spread the word about this emerging sector which
hasn&amp;rsquo;t yet fully matured its open-source culture.  And it&amp;rsquo;s a fascinating
journey for me to join the dots between my academic knowledge in electronics
and my experience in software.  I&amp;rsquo;m sure many others will enjoy taking part in
shaping the future of energy too, the open-source way.&lt;/p&gt;
&lt;p&gt;Then I realised it wouldn&amp;rsquo;t fit in a single blog post, so I decided to break it
down into a series of three.  This first one is to set the stage.  The next one
is going to be about how to contribute and get on board as a software
developer.  The last one is to go back to real-world deployments and look into
modernising their equipment and workflows.  The huge inertia involved with
electrical grids means it can show a much higher resistance to change than pure
software products.  A useful parallel is how data centres have evolved using
&lt;a href=&#34;https://www.cs.princeton.edu/courses/archive/fall13/cos597E/papers/sdnhistory.pdf&#34;&gt;software-defined
networking&lt;/a&gt;
so we&amp;rsquo;ll touch on this topic too.  Now, let&amp;rsquo;s dive in.&lt;/p&gt;
&lt;h2 id=&#34;traditional-substations&#34;&gt;Traditional Substations&lt;/h2&gt;
&lt;p&gt;An electrical substation is basically a transformer with switches.  Its main
role is to route high-voltage electricity coming from power plants via
&lt;em&gt;transportation&lt;/em&gt; networks and &lt;em&gt;distribute&lt;/em&gt; it to low-voltage consumer
households.  One of the critical missions involved is to balance the flow of
electricity between producers and consumers to avoid surges or voltage drops in
the grid.  This isn&amp;rsquo;t a new problem and traditional substations have been
dealing with it since the early days of electricity.  However, things are
changing radically now for two main reasons: renewable energy sources are more
diverse and electricity consumption keeps increasing.&lt;/p&gt;
&lt;div style=&#34;text-align:center&#34;&gt;
&lt;p&gt;&lt;a target=&#34;_blank&#34; href=&#34;https://commons.wikimedia.org/wiki/File:Electrical_substation_model_(side-view).PNG&#34;&gt;&lt;img src=&#34;./substation-model.png&#34; alt=&#34;Substation model&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Classic substation model&lt;/em&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;Solar energy production can vary widely based on sunshine, and the same goes
for wind and water turbines.  Generally speaking, these sources are smaller and
more distributed than traditional large-scale power plants based on oil, coal
or nuclear.  As such, the grid is becoming more complex and &lt;a href=&#34;https://en.wikipedia.org/wiki/Operating_reserve&#34;&gt;backup
generators&lt;/a&gt; or &lt;em&gt;spinning
reserves&lt;/em&gt; which typically rely on gas are often required to ensure a continuous
supply.  The substations have to quickly switch generators on and off the grid
accordingly.&lt;/p&gt;
&lt;p&gt;Historically, electricity was mostly about light and industrial applications.
Electrical appliances are now much more widespread within domestic households
and the transition to renewable energy means more electrical vehicles need to
be charged.  On top of this, data centres powering the backbones of the
Internet and Artificial Intelligence are growing exponentially.  It&amp;rsquo;s very
likely that some breakthroughs will make them a lot more efficient such as
quantum computing, but it&amp;rsquo;s reasonable to assume that energy needs aren&amp;rsquo;t going
to decrease over the coming years.  Nuclear fusion is also probably not for
this decade although it has been making a few giant leaps forward recently, and
AI may help it progress further.  Having small, distributed reactors is seen as
a promising way forward to build a more reliable infrastructure.  So in any
case, electrical grids aren&amp;rsquo;t getting any simpler.&lt;/p&gt;
&lt;p&gt;The traditional substation has now become a limiting factor to the expansion of
new energy solutions.  To address these growing challenges, they are gradually
being replaced with their digital counterparts.&lt;/p&gt;
&lt;h2 id=&#34;digital-substations&#34;&gt;Digital Substations&lt;/h2&gt;
&lt;p&gt;While essentially based on the same electrical hardware with transformers,
circuit breakers and switches, the digital substation differs greatly in how it
operates and how it controls its routing.  Traditional substations rely on
hardware sensors and actuators connected with copper wires and have a fixed,
basic control logic.  In the digital world, sensors are IoT devices and
communication is done over Ethernet or fibre optic.  One connection carrying
all the data and control commands replaces many wires with analogue voltages.
Flexible algorithms and AI models replace hard-wired circuits to enable the
more advanced functionality required in a modern grid.&lt;/p&gt;
&lt;p&gt;First introduced in the early 2000s, which happens to coincide with my
university years although I didn&amp;rsquo;t learn about them until recently, nearly 50%
of substations world-wide are now digital.  Their adoption keeps growing,
especially in China and the most developed countries.  It&amp;rsquo;s expected that by
2030, all newly built substations would be digital.&lt;/p&gt;
&lt;h3 id=&#34;standards&#34;&gt;Standards&lt;/h3&gt;
&lt;p&gt;Ensuring interoperability is paramount to the success of digital substations
and electrical grids in general.  As of today, the main standard is IEC 61850
which is a very large technical document.  A key section of the specifications
is how services running in substations should communicate with each other.  A
related initiative is the &lt;a href=&#34;https://opcfoundation.org/about/what-is-opc/&#34;&gt;Open Platform
Communications&lt;/a&gt; foundation which
is more about standard tools whereas IEC 61850 describes the protocols.  From a
classic open-source software point of view, one may think it would be
interesting to start by looking at the &lt;a href=&#34;https://en.wikipedia.org/wiki/Substation_Configuration_Language&#34;&gt;Substation Configuration
Language&lt;/a&gt; as
this is a software-like description of how a substation is meant to operate.
However, it&amp;rsquo;s not that simple.  It&amp;rsquo;s actually pretty hard to find a full SCL
example, even for illustrative purposes.  The best public thing I&amp;rsquo;ve found so
far is the
&lt;a href=&#34;https://github.com/gillerman/IEC_61850_SCL_2_Nodeset/&#34;&gt;IEC_61850_SCL_2_Nodeset&lt;/a&gt;
repository which is 10 years old.  Here&amp;rsquo;s a snippet from a file describing a
&lt;a href=&#34;https://github.com/gillerman/IEC_61850_SCL_2_Nodeset/blob/master/61850TestCID.xml&#34;&gt;protection
relay&lt;/a&gt;:&lt;/p&gt;
&lt;div style=&#34;font-size:0.8em; line-height: 1.0em&#34;&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;&amp;lt;?xml version=&amp;#34;1.0&amp;#34; encoding=&amp;#34;utf-8&amp;#34;?&amp;gt;
&amp;lt;SCL xmlns:xsi=&amp;#34;http://www.w3.org/2001/XMLSchema-instance&amp;#34; xmlns:xsd=&amp;#34;http://www.w3.org/2001/XMLSchema&amp;#34; xsi:schemaLocation=&amp;#34;http://www.iec.ch/61850/2003/SCL SCL.xsd&amp;#34; xmlns=&amp;#34;http://www.iec.ch/61850/2003/SCL&amp;#34;&amp;gt;
  &amp;lt;Header id=&amp;#34;P145&amp;#34; version=&amp;#34;1.94&amp;#34; revision=&amp;#34;&amp;#34; toolID=&amp;#34;AREVA IEC61850 Px40 Modelling Tool&amp;#34; nameStructure=&amp;#34;IEDName&amp;#34;&amp;gt;
    &amp;lt;Text source=&amp;#34;&amp;#34;&amp;gt;IED Capability Description for P145 Feeder protection relay (based on P143 with XCPU2)&amp;lt;/Text&amp;gt;
  &amp;lt;/Header&amp;gt;
  &amp;lt;Communication&amp;gt;
    &amp;lt;SubNetwork name=&amp;#34;NONE&amp;#34; type=&amp;#34;8-MMS&amp;#34;&amp;gt;
      &amp;lt;ConnectedAP iedName=&amp;#34;P145_CLT&amp;#34; apName=&amp;#34;AP1&amp;#34;&amp;gt;
        &amp;lt;Address&amp;gt;
          &amp;lt;P type=&amp;#34;IP&amp;#34;&amp;gt;144.58.243.226&amp;lt;/P&amp;gt;
          &amp;lt;P type=&amp;#34;IP-SUBNET&amp;#34;&amp;gt;255.255.255.0&amp;lt;/P&amp;gt;
          &amp;lt;P type=&amp;#34;IP-GATEWAY&amp;#34;&amp;gt;144.58.243.1&amp;lt;/P&amp;gt;
        &amp;lt;/Address&amp;gt;
[...]
        &amp;lt;PhysConn type=&amp;#34;Plug&amp;#34;&amp;gt;
          &amp;lt;P type=&amp;#34;Type&amp;#34;&amp;gt;10BaseT&amp;lt;/P&amp;gt;
          &amp;lt;P type=&amp;#34;Plug&amp;#34;&amp;gt;RJ45&amp;lt;/P&amp;gt;
        &amp;lt;/PhysConn&amp;gt;
      &amp;lt;/ConnectedAP&amp;gt;
      &amp;lt;BitRate unit=&amp;#34;b/s&amp;#34; multiplier=&amp;#34;&amp;#34;&amp;gt;100&amp;lt;/BitRate&amp;gt;
    &amp;lt;/SubNetwork&amp;gt;
[...]
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Basically, these XML formats aren&amp;rsquo;t meant to be used directly by humans.
That&amp;rsquo;s why there are so many tools around to &lt;a href=&#34;https://tprojects.schneider-electric.com/GeoSCADAHelp/Geo%20SCADA%202022/Content/IEC61850DriverGuide/CreateAndConfigureAnSCLFile.htm&#34;&gt;manipulate them with
GUIs&lt;/a&gt;
which is also a typical part of the MS Windows corporate culture.  Ergonomic
tools are great, and having them based on configuration text files that humans
can comprehend is even better.  Being able to work on this without having to
pay for a full IEC 61850 training would help open things up to the rest of the
world.  This is one area where the open-source community has thrived and where
the electrical industry can improve.  From my naive developer point of view, I
would have expected a friendly YAML or even TOML intermediate format with
command line tools to manipulate them and generate the XML for the machines.  I
guess this is something to explore further in the next blog post.&lt;/p&gt;
&lt;h3 id=&#34;tools&#34;&gt;Tools&lt;/h3&gt;
&lt;p&gt;To be fair, there are actually many great open-source modern tools in the
energy sector such as &lt;a href=&#34;https://github.com/openclimatefix/open-source-quartz-solar-forecast&#34;&gt;OCF&amp;rsquo;s Quartz Solar
Forecast&lt;/a&gt;
or &lt;a href=&#34;https://github.com/SanPen/GridCal&#34;&gt;Santiago&amp;rsquo;s GridCal&lt;/a&gt;.  These typically
live outside of the electrical grid infrastructure, to process solar data or
simulate a grid as per the examples above.  Let&amp;rsquo;s clarify the scope here and
focus only on substations for now.&lt;/p&gt;
&lt;p&gt;The &lt;a href=&#34;https://lfenergy.org/&#34;&gt;Linux Foundation Energy&lt;/a&gt; umbrella project hosts a
number of open-source tools and solutions in this area.  In particular,
&lt;a href=&#34;https://com-pas.github.io/contributing/MISSION-COMPAS.html&#34;&gt;CoMPAS&lt;/a&gt; is
directly about IEC 61850 tooling and
&lt;a href=&#34;https://lfenergy.org/projects/seapath/&#34;&gt;SEAPATH&lt;/a&gt; provides a real-time
hypervisor for hosting virtualised digital substations.  However, these haven&amp;rsquo;t
generated too much interest from the wider open-source software community so
far.  There is a huge unresolved potential there.  The XML file issue I
mentioned earlier is just one small symptom of the general status quo, with
MS-DOS batch scripts and proprietary tools used internally by electrical
corporations.&lt;/p&gt;
&lt;p&gt;In the day of open-source hardware boards e.g.
&lt;a href=&#34;https://www.owntech.org/en/home-en/&#34;&gt;OwnTech&lt;/a&gt; and CPUs with
&lt;a href=&#34;https://riscv.org/&#34;&gt;RISC-V&lt;/a&gt; as well as Linux servers powering the majority of
data centres, wouldn&amp;rsquo;t it be great to have electrical grid workflows running on
&lt;a href=&#34;https://fr.wikipedia.org/wiki/Free/Libre_Open_Source_Software&#34;&gt;FOSS&lt;/a&gt; and fully
open digital substation designs?&lt;/p&gt;
&lt;h3 id=&#34;challenges&#34;&gt;Challenges&lt;/h3&gt;
&lt;p&gt;Every digital system carries cybersecurity risks.  It&amp;rsquo;s quite hard to hack into
a traditional substation, in fact it can be very dangerous for a physical
attacker given the high voltage hazards involved.  Within a connected world, a
substation then becomes a lot more vulnerable and a prized remote target for
terrorists or strategic military operations.&lt;/p&gt;
&lt;p&gt;Security is another area where it can learn from other software-oriented
industries.  A number of things have already been put in place such as
virtualised substations and containers.  This appears to be developing quickly
and hopefully it will also pick up some of the momentum from other applications
that rely heavily on open-source software.  It appears to be an obvious way to
bridge that gap and attract engineers familiar with these issues to the energy
realm.  Still it will probably require some amount of cultural shift from major
players.  It took years for Microsoft to fully embrace open source software,
time will tell whether the electricity sector will be able to follow a similar
trend.&lt;/p&gt;
&lt;h2 id=&#34;data-centres&#34;&gt;Data Centres&lt;/h2&gt;
&lt;p&gt;The &lt;a href=&#34;https://en.wikipedia.org/wiki/Open_Compute_Project&#34;&gt;Open Compute Project&lt;/a&gt;
is a typical example of a successful transition in another type of
infrastructure: data centres.  Coupled with software-defined networking, the
hardware routers, switches and firewalls have been replaced with virtual
machines decoupled from their underlying hardware which are all standard
servers.  This means that the network topology can change dynamically and
continuously to match evolving needs and adjust when the underlying hardware is
being upgraded with minimum downtime.  How can we do this with substations?&lt;/p&gt;
&lt;p&gt;Transformers are based on a very basic principle with multiple coils on a same
magnetic core.  As such, they would seem much less likely to go through
upgrades than computer hardware.  This is true to a large extent as many
traditional substations have been operational for decades with a minimum amount
of maintenance.  The trouble is when the grid starts changing with new power
sources being connected and an increasing demand in energy consumption.
Expanding an existing substation or replacing parts of it to address these
changes also means updating the way it operates.  Being able to do it in a
continuous way and with the ability to dynamically adjust the topology and
energy profile to route electricity differently in real-time is what is at
stake here.&lt;/p&gt;
&lt;p&gt;Networking is about routing bits of information, which are effectively tiny
amounts of energy.  Here we have a similar problem at a different scale, with a
lot of energy and a small but critical amount of information to orchestrate it.
In fact, data centres and digital substations are closely related already.
Some compute applications require their dedicated electricity generator: AI,
Bitcoin mining (putting aside its unbearable carbon footprint for a moment),
military deployments and large technology campuses such as &lt;a href=&#34;https://news.samsung.com/global/purposely-leaked-20-things-about-samsungs-digital-city&#34;&gt;Samsung Digital
City&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Chaotic compute resource usage also impacts how large amounts of electricity
get routed and consumed.  There are many sensors in a data centre to monitor
temperature, humidity, power supply voltages etc. which is also the case in a
substation.  In the end, new technologies require new ways of managing energy
and new energy grids borrow ideas from these new technologies.  In the same way
that a motherboard has its own CPU voltage regulators, one might imagine how a
digital substation could merge with a data centre to create an optimal
architecture.&lt;/p&gt;
&lt;h2 id=&#34;taking-part-&#34;&gt;Taking part ⚡&lt;/h2&gt;
&lt;p&gt;Where shall we go next?  In particular, as we&amp;rsquo;re dealing with a huge industry,
how can one embark into this adventure and start contributing in a way that is
both useful and fulfilling?&lt;/p&gt;
&lt;p&gt;In the next blog post, we&amp;rsquo;ll take a closer look at software-defined networking
and its related tools to compare them against digital substations and see what
could be done there.  We&amp;rsquo;ll also take a deeper dive into the existing tools
backed by LF Energy and other open-source projects that have already gathered
some community momentum.  Maybe this will prove me wrong on some of the
concerns I raised here if some burgeoning solutions already exist and also give
us the key to improving things like SCL file handling and foster open-source
adoption as a whole.&lt;/p&gt;
&lt;p&gt;In the meantime, do feel free to reach out as always with questions, feedback
and ideas by &lt;a href=&#34;mailto:gtucker@gtucker.io&#34;&gt;email&lt;/a&gt;.&lt;/p&gt;
&lt;div style=&#34;font-size:0.8em; line-height: 1.0em; margin-top: 25px; float: right; text-align: right&#34;&gt;
&lt;p&gt;Photo credits: &lt;a href=&#34;https://www.flickr.com/photos/27513492@N00/4535769992&#34;&gt;electrical substation&lt;/a&gt;
© 2010 by &lt;a href=&#34;https://www.flickr.com/photos/ugod/&#34;&gt;Martin&lt;/a&gt;
is licensed under &lt;a href=&#34;https://creativecommons.org/licenses/by/2.0/&#34;&gt;CC-BY-2.0&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://commons.wikimedia.org/wiki/File:Electrical_substation_model_(side-view).PNG&#34;&gt;Electrical substation model (side-view)&lt;/a&gt;
© 2011 by &lt;a href=&#34;https://commons.wikimedia.org/wiki/User_talk:Shigeru23&#34;&gt;Shigeru23&lt;/a&gt;
is licensed under &lt;a href=&#34;https://creativecommons.org/licenses/by-sa/3.0/&#34;&gt;CC-BY-SA-3.0&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
- https://gtucker.io/posts/2025-07-07-digisub-pt1/ - 2021-2026 Guillaume Tucker</description>
        </item>
    
    
    
        <item>
        <title>First year in Freelance</title>
        <link>https://gtucker.io/posts/2025-02-27-first-year/</link>
        <pubDate>Thu, 27 Feb 2025 00:00:00 +0000</pubDate>
        
        <guid>https://gtucker.io/posts/2025-02-27-first-year/</guid>
        <description>gtucker.io https://gtucker.io/posts/2025-02-27-first-year/ -&lt;p&gt;You may be starting off in freelance yourself or just curious to know what it
means.  Here&amp;rsquo;s the story of my first year with some lessons learnt and a
glimpse into what might be coming next.&lt;/p&gt;
&lt;p&gt;It was sunny this February at FOSDEM as per the picture above.  It reminded me
of when I was there last year during my early days as self-employed and the
long trail of events I have been through since then.&lt;/p&gt;
&lt;h2 id=&#34;ready-set&#34;&gt;Ready, Set&amp;hellip;&lt;/h2&gt;
&lt;p&gt;It all started when &lt;a href=&#34;https://gtucker.io/posts/2023-11-18-beyond-open-source&#34;&gt;I left Collabora&lt;/a&gt; at
the end of 2023.  While I had been contemplating such a move for a while, there
was no way I could really find the time and space to be ready for it while
having a full-time job.  Building a business model and getting all the
necessary things lined up are simply part of freelance itself and can&amp;rsquo;t be
completed beforehand.  The key thing is to become convinced of your potential
and how it should allow you to strive in a particular environment.  It is also
crucial to take some risk mitigation measures and prepare the ground:
trainings, savings, fallback scenarios, side jobs, living cost reduction
alternatives etc.&lt;/p&gt;
&lt;p&gt;Another very, very important goal is to properly wrap up any activity you need
to stop.  In my case, I had a long notice period and I was working on KernelCI
which is an open-source Linux Foundation project.  As such, I first focused on
internal handover duties with my colleagues and then had no real deadlines left
for completing the community side of things.  In practice that meant making my
own timeline for transferring responsibilities and maintainer roles to other
people as well as helping find a new Chair for the &lt;a href=&#34;https://docs.kernelci.org/org/tsc/&#34;&gt;KernelCI
TSC&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;go&#34;&gt;Go!&lt;/h2&gt;
&lt;p&gt;Day 0 is when any previous employment ends and a new journey begins.  The
amount of time and mental space it instantly brings can be a blessing and a
curse.  Unless you have already found some early customers, the apparent calm
could easily become a storm of anxiety.  Although everyone will get a different
experience from it, I believe the best approach is to put healthy routines in
place and keep moving forward.  There&amp;rsquo;s a fine line between taking your time to
reflect constructively and becoming idle.  It&amp;rsquo;s a great challenge and an
opportunity to expand your self-motivation which can only make you stronger.&lt;/p&gt;
&lt;p&gt;Each individual will need a tailored solution.  I found it to be a good time to
brainstorm and gather as many ideas as possible about places to go next.  While
planning won&amp;rsquo;t make any of it actually happen by itself, it&amp;rsquo;s a productive way
of being prepared for when an unexpected opportunity arises.  Having worked for
several startups before, I felt some commonalities in the mindset in terms of
being very reactive and flexible.  Still, the aim is a different one since it&amp;rsquo;s
bound to be a solo journey and the scope can be much wider than having a
laser-focused pitch to get a product or business idea over the line.  And
finally, to balance things out against free-flowing inspiration, it&amp;rsquo;s crucial
to have checklists to go through and keep making concrete progress every single
day.&lt;/p&gt;
&lt;p&gt;Let&amp;rsquo;s take a quick look at a handful of items that paved my way here:&lt;/p&gt;
&lt;h3 id=&#34;1-admin&#34;&gt;1. Admin&lt;/h3&gt;
&lt;p&gt;An obvious but necessary initial step is to adopt the most appropriate
self-employed status for the work.  This will vary widely between countries and
depends on the nature of your business model.  In my case I opted for the
&lt;a href=&#34;https://gtucker.io/posts/2024-05-06-micro-entreprise&#34;&gt;micro-entreprise&lt;/a&gt; framework which is a
common choice in France with simplified procedures.&lt;/p&gt;
&lt;p&gt;Other admin duties include bookkeeping, insurance, banking, taxes, having a
dedicated company address to receive mail when working from home and lots of
other small things along those lines.  Overall, I don&amp;rsquo;t think there should be
any major hurdle or hard decisions to take in doing this.  It can be quite time
consuming at first, then it should become easier by putting a good process in
place to avoid repeating the same manual tasks over and over.  Getting
professional advice and support is money well worth spending too.&lt;/p&gt;
&lt;h3 id=&#34;2-kernelci-handover&#34;&gt;2. KernelCI handover&lt;/h3&gt;
&lt;p&gt;Throughout the first quarter of 2024, I had to regularly keep in touch with the
KernelCI community and attend meetings in order to complete the transition.  I
eventually opted to simply remain a member of the TSC to contribute my past
experience and bring some variety following my move.&lt;/p&gt;
&lt;p&gt;To conclude my direct involvement in the project, I was invited to give an
online talk as part of the Linux Foundation Mentorship sessions: &lt;a href=&#34;https://www.linuxfoundation.org/webinars/kernelci-travel-guide-2024&#34;&gt;KernelCI
Travel Guide
2024&lt;/a&gt;.
This was a good way to assess the project&amp;rsquo;s situation and for me to consider my
next steps as an independent contributor.  I then ended up making a
&lt;a href=&#34;https://gitlab.com/gtucker.io/renelick&#34;&gt;fork&lt;/a&gt; of the code to continue pushing
its design further with a more general-purpose automation tool - more on that
in an upcoming blog post!&lt;/p&gt;
&lt;h3 id=&#34;3-energy&#34;&gt;3. Energy&lt;/h3&gt;
&lt;p&gt;When I started my MEng degree in electronics, I had to complete a survey which
included a question about future work aspirations.  I already knew I wanted to
work in the energy sector and especially in sustainable ways to generate
electricity.  There were of course already a few things going on in this field
about 20 years ago but it was mostly research or anecdotal projects.  The
technology wasn&amp;rsquo;t there yet as it hadn&amp;rsquo;t been receiving that much investment
and attention.  Things have changed drastically since then with the electric
vehicle revolution and a raising awareness of the climate emergency.&lt;/p&gt;
&lt;p&gt;This is when having a chance to make a career turn can be useful for realigning
the nature of your work with your true aspirations.  It might feel like
something you should have embraced earlier but it&amp;rsquo;s never too late to make a
change.  Years of experience in any domain will always be valuable as a unique
personal strength.  In my case, I could refresh my power electronics academic
knowledge and build upon the open-source expertise I have acquired.  The
&lt;a href=&#34;https://gtucker.io/posts/2024-02-05-fosdem&#34;&gt;Energy devroom&lt;/a&gt; at FOSDEM 2024 was a major event for
the industry but also on my personal journey as I could see new horizons
opening up and engage with an emerging community.  It simply joined all the
dots.&lt;/p&gt;
&lt;h3 id=&#34;4-consultancy&#34;&gt;4. Consultancy&lt;/h3&gt;
&lt;p&gt;Leaving all the new avenues I may be able to explore on one side, the
overarching goal is to provide consultancy services.  As such, I felt I needed
to rely on the full range of knowledge I had gathered through life to put all
the odds on my side.  Signing the first contract is a fantastic milestone as
it&amp;rsquo;s a tangible realisation of what was once nothing but a faint, abstract
idea.  This is also when the vulnerability of leaving the comfort of a nice and
stable job in a privately-funded company brings true gratification.&lt;/p&gt;
&lt;p&gt;Keeping a sustained source of income is the real deal though as that proves the
viability of the whole enterprise.  I can&amp;rsquo;t stress enough how grateful I am to
have been given such a wonderful chance to achieve this.  Without further ado,
let me introduce you to&amp;hellip;&lt;/p&gt;
&lt;h2 id=&#34;sourcedev&#34;&gt;Source.dev&lt;/h2&gt;
&lt;div style=&#34;float: right; padding: 0 0 0 12px&#34;&gt;
&lt;p&gt;&lt;img src=&#34;./source-logo.png&#34; alt=&#34;source.dev logo&#34;&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;Some might say that timing is everything.  I would argue that it&amp;rsquo;s akin to how
a photographer would dedicate years to eventually know how to spontaneously
take a truly great snapshot at an unpredictable time and place.  Stepping into
self-employment with the agency that it brings automatically led me to seize
the day in unexpected ways.  That is when I renewed contact with
&lt;a href=&#34;https://www.linkedin.com/in/serban-constantinescu/&#34;&gt;Serban&lt;/a&gt;, a former
colleague of mine from my days at ARM who was about to launch a startup with
&lt;a href=&#34;https://www.linkedin.com/in/davidbrazdil/&#34;&gt;David&lt;/a&gt; whom he had met at Google.
It was Summer 2024 and the beginning of &lt;a href=&#34;https://source.dev&#34;&gt;Source.dev&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;In short, the main goal is to facilitate Android product development and
long-term support for device ecosystem companies, from OEMs to chip providers.
This also enables them to deal with new regulations aiming to extend consumer
products&amp;rsquo; lifespans.  It is all made possible thanks to the unique expertise
accumulated over the years by the Source.dev co-founders.&lt;/p&gt;
&lt;p&gt;Had I not published a blog post about my professional move, I probably would
never have appeared on their radar.  Also, I privately hold the belief that
what might seem like an anecdotal, long-forgotten event played a key role in
this.  Serban once asked me to port some micro-benchmarks from Javascript to
Java after randomly bumping into me at a Linaro Connect conference about 10
years ago.  I completed this for an MD5 use-case on the same day with my
lightweight ARM Chromebook in a hacking room and it definitely had a positive
impact on our mutual trust.  Spending several years bringing KernelCI to
maturity in the meantime obviously also helped a lot.&lt;/p&gt;
&lt;p&gt;All these things are intertwined as the world is a continuum.  Regardless of
the actual causes, the outcome is that I am now contributing my fair share to
this high-profile customer with an ongoing part-time contract.&lt;/p&gt;
&lt;h2 id=&#34;momentum&#34;&gt;Momentum&lt;/h2&gt;
&lt;p&gt;Once things have been set into motion, it&amp;rsquo;s all about fostering that momentum
and being always on the lookout for new developments.  Having a stable revenue
with strong customer relationships makes it possible to carve out some time and
space for this.  It&amp;rsquo;s also a way to reconnect with former colleagues and extend
your network.  It helps to feel part of something bigger since humans are
social animals and as a result, it will naturally generate new business leads
too.&lt;/p&gt;
&lt;p&gt;I am now looking forward to discovering what lies ahead in 2025.  Among all the
hardship throughout the world and global uncertainties, it&amp;rsquo;s important to be
able to focus on what matters at an individual scale.  Finally, feel free to
reach me via &lt;a href=&#34;mailto:gtucker@gtucker.io&#34;&gt;email&lt;/a&gt; or
&lt;a href=&#34;https://www.linkedin.com/in/guillaume-tucker/&#34;&gt;LinkedIn&lt;/a&gt; as I would love to
know your thoughts and your own stories too.&lt;/p&gt;
- https://gtucker.io/posts/2025-02-27-first-year/ - 2021-2026 Guillaume Tucker</description>
        </item>
    
    
    
        <item>
        <title>kernel.org containers</title>
        <link>https://gtucker.io/posts/2024-09-30-korg-containers/</link>
        <pubDate>Mon, 30 Sep 2024 00:00:00 +0000</pubDate>
        
        <guid>https://gtucker.io/posts/2024-09-30-korg-containers/</guid>
        <description>gtucker.io https://gtucker.io/posts/2024-09-30-korg-containers/ -&lt;p&gt;Many moons ago, some
&lt;a href=&#34;https://lore.kernel.org/all/20200420163628.wmbc7f7vuvqsbdhw@xps.therub.org/&#34;&gt;discussions&lt;/a&gt;
were being held around having common container images with toolchains
maintained by the upstream Linux kernel community.  It didn&amp;rsquo;t quite happen back
then, &lt;a href=&#34;https://www.tuxmake.org/&#34;&gt;TuxMake&lt;/a&gt; was launched by Linaro soon after
with images forked from the
&lt;a href=&#34;https://github.com/kernelci/kernelci-core/tree/main/config/docker&#34;&gt;KernelCI&lt;/a&gt;
ones and they have been diverging ever since.  Where do things stand now?&lt;/p&gt;
&lt;h2 id=&#34;a-renewed-interest&#34;&gt;A renewed interest&lt;/h2&gt;
&lt;p&gt;There does seem to be a trend forming in 2024.  The debate around using GitLab
CI for testing the upstream kernel has been
&lt;a href=&#34;https://lore.kernel.org/all/20240228225527.1052240-1-helen.koike@collabora.com/&#34;&gt;revived&lt;/a&gt;
and TuxMake has now started supporting containers with the &lt;a href=&#34;https://mirrors.edge.kernel.org/pub/tools/&#34;&gt;kernel.org
toolchains&lt;/a&gt;.  It looked like all
the stars were finally lining up so I picked this topic up again and took the
time to articulate it with a proposal: first as an &lt;a href=&#34;https://lore.kernel.org/all/f80acb84-1d98-44d3-84b7-d976de77d8ce@gtucker.io/&#34;&gt;email
discussion&lt;/a&gt;
followed by a &lt;a href=&#34;https://lpc.events/event/18/contributions/1928/&#34;&gt;Linux Plumbers
talk&lt;/a&gt;.  Both have been well
received with some constructive feedback and ideas.  Concrete steps are now
forming down that path; let&amp;rsquo;s take a look at a potential way forward.&lt;/p&gt;
&lt;h2 id=&#34;yellow-brick-road&#34;&gt;Yellow Brick Road&lt;/h2&gt;
&lt;p&gt;Lots of things have already been done to improve development workflows and
quality control for the Linux kernel.  Some of them are directly available
upstream and have become second nature such as &lt;a href=&#34;https://git-scm.com/&#34;&gt;Git&lt;/a&gt;,
test frameworks (kselftest, KUnit) and &lt;a href=&#34;https://www.kernel.org/doc/html/latest/&#34;&gt;HTML
documentation&lt;/a&gt;.  As the software world
keeps turning, new tools become de facto standard among all developers and the
upstream kernel community is no exception - within reason, of course.  One of
the most obvious ones are containers: Docker was voted &lt;a href=&#34;https://survey.stackoverflow.co/2023/#section-most-popular-technologies-other-tools&#34;&gt;#1 used tool on the
2023 Stack Overflow
survey&lt;/a&gt;
and again in
&lt;a href=&#34;https://survey.stackoverflow.co/2024/technology#1-other-tools&#34;&gt;2024&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;How can the Linux kernel benefit from containers?  Most people are using them
to run builds and tests in reproducible, controlled, containerized
environments.  If an automated test system finds an issue, having a consistent
way for developers to reproduce it under the exact same conditions is paramount
when looking for a fix.&lt;/p&gt;
&lt;p&gt;This also applies to cutting edge kernel development, for example with features
in &lt;code&gt;linux-next&lt;/code&gt; moving hand-in-hand with particular compiler changes -
typically Clang and more recently Rust, but also RISC-V support and new
architectures among other topics.  It&amp;rsquo;s also a neat way of working with
multiple compiler toolchain versions.&lt;/p&gt;
&lt;p&gt;The broader concept here is to create a
&lt;a href=&#34;https://gtucker.io/posts/2024-01-26-kernel-test-continuum/&#34;&gt;continuum&lt;/a&gt; between individual
developers and automated services.  For toolchain containers, this can be
achieved via a number of small steps.&lt;/p&gt;
&lt;h3 id=&#34;-packages&#34;&gt;📦 Packages&lt;/h3&gt;
&lt;p&gt;A rather straightforward improvement would be to create standard packages with
the kernel.org toolchains e.g. &lt;code&gt;.deb&lt;/code&gt;, &lt;code&gt;.ipk&lt;/code&gt; or &lt;code&gt;.rpm&lt;/code&gt; in addition to the
existing tarballs.  The main benefit would be to facilitate adding or removing
them while taking care of dependencies automatically.  The &lt;a href=&#34;https://mirrors.edge.kernel.org/pub/tools/llvm/&#34;&gt;LLVM toolchains
page&lt;/a&gt; provides an informal
list of things to be installed manually which could typically be formalised
with regular packaging meta-data.&lt;/p&gt;
&lt;p&gt;It would of course take a bit of maintenance work to keep them alive as well as
some additional storage space if several formats were applied to all the
packages.  Maybe only the most popular ones could be maintained initially and
then coverage would expand as needed.  Actually producing the packages can be
easily achieved using tools such as &lt;a href=&#34;https://openbuildservice.org/&#34;&gt;Open Build
Service&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This is somewhat an optional step as all the subsequent ones can be done
regardless; having packages would just make things a bit easier.&lt;/p&gt;
&lt;h3 id=&#34;-containerfiles&#34;&gt;🚢 Containerfiles&lt;/h3&gt;
&lt;p&gt;Container images are created using Containerfiles, or Dockerfiles.  Since the
&lt;a href=&#34;https://opencontainers.org/&#34;&gt;OCI&lt;/a&gt; has defined an open and authoritative &lt;a href=&#34;https://oci-playground.github.io/specs-latest/specs/image/v1.1.0-rc3/oci-image-spec.pdf&#34;&gt;image
specification&lt;/a&gt;,
there is no vendor lock-in when using containers.  We&amp;rsquo;ll just refer to
Containerfiles in a generic way going forward.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Proof of Concept&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;As an experiment to see how viable this would be, I&amp;rsquo;ve started a &lt;a href=&#34;https://gitlab.com/gtucker/korg&#34;&gt;kernel.org
containers&lt;/a&gt; repository which can build an
initial set of images.  They include x86 host toolchains with GCC 14 for arm64
and x86_64 targets as well as Clang 18 from the kernel.org toolchains.  The
images are automatically built using GitLab CI and stored in the project&amp;rsquo;s
&lt;a href=&#34;https://gitlab.com/gtucker/korg/container_registry&#34;&gt;container registry&lt;/a&gt;.  For
example, to use the default &lt;code&gt;gcc&lt;/code&gt; image from within a kernel source tree:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$ docker run -it -v $PWD:/home/kbuild/linux -w /home/kbuild/linux \
    registry.gitlab.com/gtucker/korg/gcc \
    make defconfig bzImage -j$(nproc)
[... pulling image the first time ...]
[... HOSTCC ...]
*** Default configuration is based on &amp;#39;x86_64_defconfig&amp;#39;
#
# configuration written to .config
#
[... build goes on ...]
  BUILD   arch/x86/boot/bzImage
Kernel: arch/x86/boot/bzImage is ready  (#1)
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;A full kernel can be built although the dependencies for any extras aren&amp;rsquo;t
included yet (kselftest, perf, documentation etc.).&lt;/p&gt;
&lt;p&gt;To rebuild the images from scratch locally and have your own tags:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$ git clone https://gitlab.com/gtucker/korg.git
$ cd korg
$ make PREFIX=korg-
  BUILD   korg-toolchain-base
  BUILD   korg-clang:18.1.8-x86
  TAG     korg-clang:18
  TAG     korg-clang
  BUILD   korg-gcc:14.2-x86-x86
  TAG     korg-gcc:14
  TAG     korg-gcc
  BUILD   korg-gcc:14.2-x86-arm64
  TAG     korg-gcc:14-arm64
  TAG     korg-gcc:arm64
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Then the previous example becomes:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$ docker run -it -v $PWD:/home/kbuild/linux -w /home/kbuild/linux korg-gcc make defconfig
*** Default configuration is based on &amp;#39;x86_64_defconfig&amp;#39;
#
# No change to .config
#
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Each image is a combination of host architecture, target architecture and
compiler version.  Only a subset of the kernel.org toolchains are covered for
now as a proof-of-concept.  It&amp;rsquo;s also possible to use Podman instead of Docker,
see the project&amp;rsquo;s
&lt;a href=&#34;https://gitlab.com/gtucker/korg/-/blob/main/README.md&#34;&gt;README&lt;/a&gt; for more
details.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Upstream&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The aim is to make upstream-friendly container definitions to prepare an RFC
patch series and continue the discussion with the community on mailing lists.
Typically, this could be added in &lt;code&gt;tools/containers&lt;/code&gt;.  Particular care has been
taken in the following respects:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;the Containerfile is vendor agnostic&lt;/li&gt;
&lt;li&gt;image builds are managed with Make&lt;/li&gt;
&lt;li&gt;external dependencies are kept to standard Debian (other distros may be used)&lt;/li&gt;
&lt;li&gt;only kernel.org toolchains are being installed&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;-git-hooks&#34;&gt;⚙️ Git Hooks&lt;/h3&gt;
&lt;p&gt;There are ongoing discussions around adding a &lt;code&gt;gitlab-ci.yml&lt;/code&gt; file upstream,
and the proof-of-concept repository uses GitLab CI to automatically build and
push Docker images.  However, this is unlikely to meet broad adoption as things
currently stand.  A more community-oriented approach would be using Git hooks:
they&amp;rsquo;re vendor neutral as purely based on Git, optional and up to each
maintainer to enable as they want in their own trees.&lt;/p&gt;
&lt;p&gt;I went ahead and made an experimental &lt;a href=&#34;post-receive&#34;&gt;post-receive hook&lt;/a&gt; which
blocks the client on a &lt;code&gt;git push&lt;/code&gt; while images are being built.  This isn&amp;rsquo;t
quite good enough for the real world, it should instead be starting a task in
the background with maybe an email reply when it&amp;rsquo;s done, but it&amp;rsquo;s the most
basic way of wiring things up and ItWorks™:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$ git push
Enumerating objects: 67, done.
Counting objects: 100% (67/67), done.
Delta compression using up to 8 threads
Compressing objects: 100% (59/59), done.
Writing objects: 100% (67/67), 12.69 KiB | 764.00 KiB/s, done.
Total 67 (delta 26), reused 0 (delta 0), pack-reused 0
remote: Building Docker images [6852976572e37c9b7e340f65155d9190c32c9f31]
remote: 6852976572e3 Makefile: rename base to korg-toolchain-base
remote:   BUILD   korg-toolchain-base
remote:   BUILD   gtucker/clang:18.1.8-x86
[...more BUILD and TAG...]
remote: Pushing Docker images
remote:   PUSH    gtucker/clang:18
[...more PUSH...]
remote:   PUSH    gtucker/korg-gcc:latest
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The logic of that hook could easily be wrapped into another runtime
environment, for example with a Docker-in-Docker container which is what the
GitLab CI pipeline does.  Even simpler, it could just be started as a detached
process although this of course has some security implications.  It could also
start a pipeline somewhere, for example in Tekton.  Each kernel maintainer or
developer could pick and choose what works for them.&lt;/p&gt;
&lt;h3 id=&#34;-container-registry&#34;&gt;🗄️ Container registry&lt;/h3&gt;
&lt;p&gt;Building upon the concept of running Git hooks to automatically update
container images, the next logical step would be to set them up on
&lt;a href=&#34;https://git.kernel.org&#34;&gt;git.kernel.org&lt;/a&gt; with either a dedicated repository or
in kernel trees if merged upstream such as
&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/&#34;&gt;mainline&lt;/a&gt;,
&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/&#34;&gt;linux-next&lt;/a&gt;
and some maintainer trees.  There would then need to be an appropriate registry
where to store these images.  Still keeping in mind the same concerns of
avoiding vendor lock-in and using standard tools, hosting a dedicated
&lt;code&gt;registry.kernel.org&lt;/code&gt; would seem to make more sense than relying on Docker Hub
or GitLab.  A popular solution for doing this would be
&lt;a href=&#34;https://goharbor.io/&#34;&gt;Harbor&lt;/a&gt;.  The container registry protocol is also
specified by the OCI so other alternatives may be adopted seamlessly.&lt;/p&gt;
&lt;h3 id=&#34;-makefile&#34;&gt;🪄 Makefile&lt;/h3&gt;
&lt;p&gt;This last step was motivated by an important point which Nathan raised as part
of the initial &lt;a href=&#34;https://lore.kernel.org/all/20240709053031.GB2120498@thelio-3990X/&#34;&gt;email
thread&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;On Mon, Jul 08, 2024 at 22:30:31AM -0700, Nathan Chancellor wrote:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Having first party Dockerfiles could be useful but how would they be
used? Perhaps building a kernel in such a container could be plumbed
into Kbuild, such that the container manager could be invoked to build
the image if it does not exist then build the kernel in that image? This
might be a lofty idea but it would remove a lot of the friction of using
containers to build the kernel so that more people would adopt it?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I haven&amp;rsquo;t looked into actually building the container image directly as a
side-effect of running &lt;code&gt;make&lt;/code&gt;.  However I did some experiments to wrap the
build in a container by providing the image name as per this patch:&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;0001-RFC-Makefile-wrap-in-container-if-CONTAINER-is-defin.patch&#34;&gt;&lt;code&gt;0001-RFC-Makefile-wrap-in-container-if-CONTAINER-is-defin.patch&lt;/code&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;which is also available on
&lt;a href=&#34;https://gitlab.com/gtucker/linux/-/commit/993f164c5421a060ced2b0180982a18e63641208&#34;&gt;GitLab&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;For example, from within a kernel tree:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$ git fetch https://gitlab.com/gtucker/linux.git linux-6.11-make-container --depth=1
$ git checkout FETCH_HEAD
$ mkdir -o build/x86
$ make CONTAINER=registry.gitlab.com/gtucker/korg/gcc:14 O=build/x86 defconfig
Running in docker registry.gitlab.com/gtucker/korg/gcc:14
Unable to find image &amp;#39;registry.gitlab.com/gtucker/korg/gcc:14&amp;#39; locally
14: Pulling from gtucker/korg/gcc
[...]
Digest: sha256:928a79af1de7550ffa1e0955177c6ef11b6a2b49334d4bced3f41c60b37a31e2
Status: Downloaded newer image for registry.gitlab.com/gtucker/korg/gcc:14
make[1]: Entering directory &amp;#39;/src/build/x86&amp;#39;
  GEN     Makefile
  HOSTCC  scripts/basic/fixdep
[...]
*** Default configuration is based on &amp;#39;x86_64_defconfig&amp;#39;
#
# configuration written to .config
#
make[1]: Leaving directory &amp;#39;/src/build/x86&amp;#39;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Then after that it&amp;rsquo;s kernel building as usual:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$ make CONTAINER=registry.gitlab.com/gtucker/korg/gcc:14 O=build/x86 bzImage -j$(nproc)
Running in docker registry.gitlab.com/gtucker/korg/gcc:14
make: warning: -j2 forced in submake: resetting jobserver mode.
make[1]: Entering directory &amp;#39;/src/build/x86&amp;#39;
  GEN     Makefile
[...]
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;If you&amp;rsquo;ve built the container images locally or have your own tags, you may
even reduce the example to its most minimal form:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$ make CONTAINER=korg-gcc defconfig
$ make CONTAINER=korg-gcc
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;There are of course already a few known issues with this:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;docker -it&lt;/code&gt; uses CRLF DOS line endings&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Dropping the interactive mode should be possible, this was a quick way of
propagating Ctrl-C to the container.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;uid&lt;/code&gt; may not be the current user (1000)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;A user id mapping or namespace would be needed to address this.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The source tree is mounted directly&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Preventing containers from modifying the source tree would be better, typically
with overlays.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The &lt;code&gt;if&lt;/code&gt; / &lt;code&gt;else&lt;/code&gt; in the top-level Makefile is rather invasive&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Having a separate Makefile would mean zero changes when not using containers.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Other glitches&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;There are a few more rough edges: using the &lt;code&gt;-j&lt;/code&gt; option causes a &lt;code&gt;submake&lt;/code&gt;
warning, only one target can be specified per command line (e.g. no &lt;code&gt;bzImage modules&lt;/code&gt;) and interrupting the build with Ctrl-C quite doesn&amp;rsquo;t work reliably
(related to the &lt;code&gt;docker -it&lt;/code&gt; issue).&lt;/p&gt;
&lt;p&gt;Still, it&amp;rsquo;s an interesting step in facilitating adoption of upstream-supported
build containers.  The next question is going to be whether this may fly and if
it&amp;rsquo;s worth pursuing efforts accordingly.  Having the actual container images
available would seem like a prerequisite so I&amp;rsquo;ll work on that first.&lt;/p&gt;
&lt;h2 id=&#34;going-further&#34;&gt;Going Further&lt;/h2&gt;
&lt;p&gt;While mentioning these ideas to people at
&lt;a href=&#34;https://lpc.events/event/18/page/224-lpc-2024-overview&#34;&gt;Plumbers&lt;/a&gt;, I thought I
might meet some resistance as this could seem a bit too disruptive.  In fact,
the opposite happened and all I got was encouragement and more ideas to go even
beyond builds.  For example, adding container images with QEMU to quickly test
the kernel images (how about &lt;code&gt;make boot CONTAINER=korg-qemu:x86&lt;/code&gt; then?) and
others with test dependencies pre-installed such as kselftest and in particular
for the eBPF special case.&lt;/p&gt;
&lt;p&gt;We&amp;rsquo;ll see where this takes us, probably there are going to be many more aspects
to take into consideration but the fun is in the journey.  Looking forward to
some follow-up email discussions, and feel free to reach out directly on
&lt;a href=&#34;mailto:gtucker@gtucker.io&#34;&gt;gtucker@gtucker.io&lt;/a&gt; as always.&lt;/p&gt;
- https://gtucker.io/posts/2024-09-30-korg-containers/ - 2021-2026 Guillaume Tucker</description>
        </item>
    
    
    
        <item>
        <title>micro-entreprise</title>
        <link>https://gtucker.io/posts/2024-05-06-micro-entreprise/</link>
        <pubDate>Mon, 06 May 2024 00:00:00 +0000</pubDate>
        
        <guid>https://gtucker.io/posts/2024-05-06-micro-entreprise/</guid>
        <description>gtucker.io https://gtucker.io/posts/2024-05-06-micro-entreprise/ -&lt;p&gt;Spring is here.  After a long wave of April showers, I&amp;rsquo;m now very pleased to
announce that the garden plot I was allocated a month ago is going well and a
few shoots are starting to show up.  Equally importantly, I&amp;rsquo;ve finally
established the framework for my upcoming work initiatives.  It&amp;rsquo;s a steep
climb, almost vertical, although a very rewarding one.  Steady progress
eventually leads to new heights and can open new horizons.&lt;/p&gt;
&lt;h1 id=&#34;overview&#34;&gt;Overview&lt;/h1&gt;
&lt;p&gt;Essentially, &lt;em&gt;micro-entrepreneur&lt;/em&gt; is a French flavour in the self-employed
category with &lt;a href=&#34;https://entreprendre.service-public.fr/vosdroits/F37398&#34;&gt;simplified
procedures&lt;/a&gt;.  So I&amp;rsquo;m
open for business, officially since 1st May 2024.  That&amp;rsquo;s for the status, but
what about the actual work?&lt;/p&gt;
&lt;p&gt;First of all, I&amp;rsquo;ll carry on doing &lt;strong&gt;open-source software&lt;/strong&gt; development in the
foreseeable future.&lt;/p&gt;
&lt;p&gt;Secondly, I&amp;rsquo;m kickstarting some R&amp;amp;D in the field of &lt;strong&gt;renewable energy&lt;/strong&gt; which
should start bearing fruit over the coming months.&lt;/p&gt;
&lt;p&gt;Lastly, a few extra activities may also come into play such as designing
&lt;strong&gt;hardware kits&lt;/strong&gt;, running workshops and education.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;d like to take the opportunity here to include a section in French since I
now live in &lt;a href=&#34;https://en.wikipedia.org/wiki/Tours&#34;&gt;Tours&lt;/a&gt;.  It&amp;rsquo;s basically a
summary of the English parts.&lt;/p&gt;
&lt;h1 id=&#34;en-français&#34;&gt;En Français&lt;/h1&gt;
&lt;div class=&#34;float-hack-right&#34;&gt;
&lt;p&gt;&lt;img src=&#34;./jardin-familial.jpeg&#34; alt=&#34;Jardin familial&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Jardin familial / Allotment plot&lt;/em&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;Après avoir vécu pendant quinze ans au Royaume-Uni, j&amp;rsquo;ai découvert beaucoup de
choses changées à mon retour en été 2022.  Je ne conaissais pas
&lt;a href=&#34;https://ameli.fr&#34;&gt;ameli.fr&lt;/a&gt;, j&amp;rsquo;ai dû faire beaucoup de démarches souvent
lentes, manuelles et via divers organismes isolés.  J&amp;rsquo;ai pourtant eu la chance
de pouvoir garder mon emploi à distance avec mon
&lt;a href=&#34;https://collabora.com&#34;&gt;employeur&lt;/a&gt;, ce qui m&amp;rsquo;a grandement simplifié la tâche.
Malgré tout, j&amp;rsquo;ai finalement décidé de franchir le cap et commencer ma nouvelle
activité en freelance ce 1er Mai 2024.&lt;/p&gt;
&lt;p&gt;Il y a de quoi écrire de longs articles sur les différences de cultures ainsi
que sur les procédures administratives.  Je me limiterai ici au fait que le
prix du vin en France est comparable à celui de la bière en Angleterre, et à
une liste des étapes principales pour démarrer une entreprise individuelle:
choix du statut, solution de domiciliation, définition des activités &amp;amp; business
plan, formulaires INPI, assurance RC Pro, compte bancaire&amp;hellip;&lt;/p&gt;
&lt;p&gt;Mais venons-en au sujet principal.  Prendre le temps de faire une pause
profesionnelle permet de revoir ses priorités et redonner du sens à son
activité.  C&amp;rsquo;est aussi l&amp;rsquo;occasion de rétablir un équilibre avec sa vie
personelle, surtout après un changement important de situation.  Quelles
conclusions en ai-je donc tirées?&lt;/p&gt;
&lt;p&gt;Il me semble qu&amp;rsquo;être prêt à s&amp;rsquo;adapter aux changements rapides est devenu la
priorité.  Cela se traduit dans mon cas à choisir certains domaines et y
déveloper une base pour catalyser des opportunités futures - dont certaines
déjà en vue.  Concrètement, après vingt années de dévelopement logiciel et
particulièrement du &lt;a href=&#34;https://fr.wikipedia.org/wiki/Logiciel_libre&#34;&gt;libre&lt;/a&gt;, il
est naturel que je poursuive dans cette voie: noyau Linux, devops, Web3&amp;hellip;
Entre temps, une passion qui n&amp;rsquo;a pas cessé de m&amp;rsquo;animer depuis mes études
d&amp;rsquo;ingénieur en électronique se retrouve maintenant en plein essor: les énergies
renouvelables.  C&amp;rsquo;est donc mon second terrain d&amp;rsquo;action, plein de potentiel
comme j&amp;rsquo;ai pu en témoigner à &lt;a href=&#34;https://gtucker.io/posts/2024-02-05-fosdem&#34;&gt;FOSDEM&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Une autre façon de valoriser son expérience est de la partager, en particulier
par le biais de l&amp;rsquo;enseignement: interventions en milieu universitaire,
ateliers, tutoriels&amp;hellip;  C&amp;rsquo;est aussi un bon moyen en tant que travailleur
indépendant pour créer des connexions et être actif dans une communauté, tant à
l&amp;rsquo;échelle locale qu&amp;rsquo;à distance.  Un atout supplémentaire dont je bénéficie est
la possibilité de le faire en anglais.&lt;/p&gt;
&lt;div class=&#34;float-hack-clear&#34; /&gt;
&lt;h1 id=&#34;strategy&#34;&gt;Strategy&lt;/h1&gt;
&lt;p&gt;Of course, it&amp;rsquo;s hard to predict exactly how things are going to pan out.  The
overall strategy at this stage is to focus on a number of particular areas to
prepare the ground for longer-term opportunities - with a couple already in
sight.&lt;/p&gt;
&lt;p&gt;Taking the time to slow down during a career break makes it possible to reflect
upon personal priorities and renew a sense of purpose.  This is true for every
aspect of someone&amp;rsquo;s life such as family and health, but let&amp;rsquo;s focus on work for
now.  Seven years ago, a similar approach led me to invest fully into
open-source software when I joined
&lt;a href=&#34;https://www.collabora.com/news-and-blog/&#34;&gt;Collabora&lt;/a&gt;.  The stakes are very
high today with so many disruptive events reshaping the world.  Renewable
energy is finally receiving massive amounts of interest while artificial
intelligence is also taking off exponentially.  How to deal with such
macroscopic things as an individual?&lt;/p&gt;
&lt;h2 id=&#34;software&#34;&gt;Software&lt;/h2&gt;
&lt;p&gt;Given my past experience in open-source software consultancy, it&amp;rsquo;s only natural
that I keep this momentum going.  The big difference now is that I can open up
new avenues.  To start with, I&amp;rsquo;ll resume actual Linux kernel development and
most likely extrapolate from some of the devops automation work I did around
&lt;a href=&#34;https://kernelci.org&#34;&gt;KernelCI&lt;/a&gt; to other use-cases.  I&amp;rsquo;m also fully learning
the &lt;a href=&#34;https://www.rust-lang.org/&#34;&gt;Rust&lt;/a&gt; language, diving deeper into machine
learning technicalities and investigating Web3 technologies such as
&lt;a href=&#34;https://polkadot.network/&#34;&gt;Polkadot&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Software is everywhere though, and the next main application domain I want to
focus on is energy.&lt;/p&gt;
&lt;div class=&#34;float-hack-left&#34;&gt;
&lt;p&gt;&lt;img src=&#34;./pv-devkit.jpeg&#34; alt=&#34;Photovoltaic harvesting devkit&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Photovoltaic harvesting devkit&lt;/em&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;h2 id=&#34;energy&#34;&gt;Energy&lt;/h2&gt;
&lt;p&gt;Exactly twenty years ago, in 2004, I was answering a particular question while
filling an entry questionnaire for my
&lt;a href=&#34;https://en.wikipedia.org/wiki/Master_of_Engineering&#34;&gt;MEng&lt;/a&gt; electronics degree
about career aspirations.  In my case, it was all to do with renewable energy
and contributing to a more sustainable future.  While it was probably seen more
as a niche or nerdy activist idea back then, we&amp;rsquo;ve now come a long way.&lt;/p&gt;
&lt;p&gt;It&amp;rsquo;s so exciting to be able to put into practice all my dormant hardware skills
on top of the software ones: power electronics, automation, sensors, signal
processing&amp;hellip;  And since open-source concepts have now become mainstream too,
as witnessed at the &lt;a href=&#34;https://gtucker.io/posts/2024-02-05-fosdem&#34;&gt;FOSDEM Energy&lt;/a&gt; devroom there&amp;rsquo;s a
lot to be done both in software and hardware to reinvent this century-old
industry with open standards.&lt;/p&gt;
&lt;p&gt;Likely topics for some future blog posts are going to be micro-grids,
electrical substations, machine learning applied to energy production and
transport, software tooling at every level of the stack and hardware kits.  But
that&amp;rsquo;s enough buzzwords for today.&lt;/p&gt;
&lt;div class=&#34;float-hack-clear&#34; /&gt;
&lt;h2 id=&#34;connecting-the-dots&#34;&gt;Connecting the dots&lt;/h2&gt;
&lt;p&gt;Another important aspect of freelancing is communicating and engaging with
social networks.  While working remotely, some typical means to achieve this
would be taking part in conferences and events which can be online or
face-to-face, writing articles and creating educational material such as
tutorials.&lt;/p&gt;
&lt;p&gt;Other ways to reach out to new communities would of course be contributing
technical value (code, design, discussions&amp;hellip;) but also teaching and running
workshops.  One particular way for me to put my experience to good use in
France would be via meetups in English around tech topics, and lectures.&lt;/p&gt;
&lt;p&gt;As always, you&amp;rsquo;re more than welcome to get in touch and share any thoughts you
might have via &lt;a href=&#34;mailto:gtucker@gtucker.io&#34;&gt;email&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Speak soon!&lt;/p&gt;
- https://gtucker.io/posts/2024-05-06-micro-entreprise/ - 2021-2026 Guillaume Tucker</description>
        </item>
    
    
    
        <item>
        <title>Contact Details</title>
        <link>https://gtucker.io/contact/</link>
        <pubDate>Wed, 01 May 2024 00:00:00 +0000</pubDate>
        
        <guid>https://gtucker.io/contact/</guid>
        <description>gtucker.io https://gtucker.io/contact/ -- https://gtucker.io/contact/ - 2021-2026 Guillaume Tucker</description>
        </item>
    
    
  </channel>
</rss> 