<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>Blog on Fre(i)e Software GmbH</title>
<link>https://freiesoftware.gmbh/blog/</link>
<description>Aggregated content in Blog on Fre(i)e Software GmbH</description>
<generator>Hugo -- gohugo.io</generator>
<copyright>Fre(i)e Software GmbH</copyright>
<atom:link href="https://freiesoftware.gmbh/blog/index.xml" rel="self" type="application/rss+xml" />
<item>
<title>KVM Support inside LXC Containers [updated]</title>
<link>https://sunweavers.net/blog/node/154</link>
<pubDate>Mo., 27 Apr. 2026 09:44:28 +0000</pubDate>
<guid>154 at https://sunweavers.net/blog</guid>
<description>&lt;p&gt;Yesterday, I had to add support for running KVM virtual machines inside an LXC container. More as a reminder to myself, in case I ever have to do this again, here the simple recipe:&lt;/p&gt;

&lt;h3&gt;LXC Container Config Adjustment&lt;/h3&gt;

&lt;p&gt;Enable lxc.autodev and execute hook script to be executed after initial /dev creation (updated 20260428: &lt;code&gt;lxc.cgroup2.*&lt;/code&gt; instead of &lt;code&gt;lxc.cgroup.*&lt;/code&gt;):&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;[...]

# Auto-create /dev nodes and add native KVM support to the LXC container
lxc.autodev = 1
lxc.hook.autodev = /var/lib/lxc/.hooks/lxc-hook.kvm-support
lxc.cgroup2.devices.allow = c 10:232 rwm
lxc.cgroup2.devices.allow = c 10:238 rwm
lxc.cgroup2.devices.allow = c 10:241 rwm

[...]
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;[added 20260408] On the internet, you can find a recipe that simply bind-mounts /dev/kvm from the host in to the LXC container. However, this fails if group ID of POSIX group kvm differs between host and container.&lt;/p&gt;

&lt;h3&gt;LXC Hook Script for KVM Support Enablement&lt;/h3&gt;

&lt;p&gt;The following script I placed at /var/lib/lxc/.hooks/lxc-hook.kvm-support (on the LXC host!):&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;#!/bin/sh

# set up native KVM support in LXC container
mknod -m 0660 ${LXC_ROOTFS_MOUNT}/dev/kvm c 10 232
chown :kvm ${LXC_ROOTFS_MOUNT}/dev/kvm
mknod -m 0660 ${LXC_ROOTFS_MOUNT}/dev/vhost-net c 10 238
chown :kvm ${LXC_ROOTFS_MOUNT}/dev/vhost-net
mknod -m 0660 ${LXC_ROOTFS_MOUNT}/dev/vhost-vsock c 10 241
chown :kvm ${LXC_ROOTFS_MOUNT}/dev/vhost-vsock
&lt;/code&gt;&lt;/pre&gt;</description>
</item>
<item>
<title>Join us at Lomiri CodeFest on May 16-17 &amp; Fre(i)e Software GmbH is hiring more Lomiri Developers</title>
<link>https://sunweavers.net/blog/node/153</link>
<pubDate>Di., 21 Apr. 2026 17:35:40 +0000</pubDate>
<guid>153 at https://sunweavers.net/blog</guid>
<description>&lt;h3&gt;Lomiri Codefest in Tilburg NL (May 16-17 2026)&lt;/h3&gt;

&lt;p&gt;Just a quick invitation to an in-person event in Tilburg, the Netherlands.&lt;/p&gt;

&lt;p&gt;All people interested in the Lomiri Operating Environment are invited to join us at the Lomiri Codefest [codefest] taking place on May 16-17 (participation is free of charge).&lt;/p&gt;

&lt;h3&gt;We are hiring Lomiri developers&lt;/h3&gt;

&lt;p&gt;And as another side node, we still have budget (until 07/2027) for 2-3 additional Lomiri developers (depends on each devs weekly availability). The details of my previous post [hiringdetails] +/- still apply. One more limitation / strength: You need real coding skills to apply for the open positions, AI-generated contributions will not be accepted for the tasks at hand.&lt;/p&gt;

&lt;p&gt;If you are interested and a skilled FLOSS developer (you need previous OSS contributions as references) and available with at least 10 hrs / week, please get in touch [fsgmbh].&lt;/p&gt;

&lt;h3&gt;References&lt;/h3&gt;

&lt;p&gt;[codefest] &lt;a href=&#34;https://codefest.os-sci.info/?lang=en&#34; title=&#34;https://codefest.os-sci.info/?lang=en&#34;&gt;https://codefest.os-sci.info/?lang=en&lt;/a&gt;&lt;br /&gt;
[hiringdetails] &lt;a href=&#34;https://sunweavers.net/blog/node/150&#34; title=&#34;https://sunweavers.net/blog/node/150&#34;&gt;https://sunweavers.net/blog/node/150&lt;/a&gt;&lt;br /&gt;
[fsgmbh] &lt;a href=&#34;https://freiesoftware.gmbh/&#34; title=&#34;https://freiesoftware.gmbh/&#34;&gt;https://freiesoftware.gmbh/&lt;/a&gt;&lt;/p&gt;</description>
</item>
<item>
<title>Debian Lomiri Tablets 2025-2027 - Project Report (Q4/2025)</title>
<link>https://sunweavers.net/blog/node/152</link>
<pubDate>Do., 12 März 2026 08:59:05 +0000</pubDate>
<guid>152 at https://sunweavers.net/blog</guid>
<description>&lt;p&gt;On 25th Oct 2025, I announced via my personal blog and on Mastodon that Fre(i)e Software GmbH was hiring. The hiring process was a mix of asking developers I know and waiting for new people to apply.&lt;/p&gt;

&lt;p&gt;At the beginning of November 2025 / in mid November 2025, we started with 13 developers (all part-time) to work on various topics around Lomiri (upstream and downstream).

Note that the below achievements don&#39;t document the overall activity in the Lomiri project, but that part that our team at Fre(i)e Software GmbH contributed to.&lt;/p&gt;

&lt;h3&gt;Organizational Achievements&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Setup management board for Qt6 migration in Lomiri [1]&lt;/li&gt;
&lt;li&gt;Setup management board for salsa2ubports package syncing [2]&lt;/li&gt;
&lt;li&gt;Bootstrap Qt 6.8 in UBports APT repository&lt;/li&gt;
&lt;li&gt;Bootstrap Qt 6.8 in Lomiri PPA&lt;/li&gt;
&lt;li&gt;Fix Salsa CI for all Lomiri-related Debian packages&lt;/li&gt;
&lt;li&gt;Facilitate contributor&#39;s project around XDG Desktop Portal support
for Lomiri.&lt;/li&gt;
&lt;li&gt;Plan how to bring DeltaTouch and DeltaChat core to Debian&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Maintenance Development&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Replace libofono-qt by libqofono in telepathy-ofono&lt;/li&gt;
&lt;li&gt;Rework unit tests in telepathy-ofono utilizing ofone-phonesim&lt;/li&gt;
&lt;li&gt;Obsolete not-used-anymore u1db-qt&lt;/li&gt;
&lt;li&gt;Fixing wrong bin:pkg names regarding snapd-glib&#39;s QML module&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Qt6 Porting&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;qmake -&amp;gt; CMake porting (if needed) and Qt6 porting of shared libraries and QML modules
consumed by Lomiri shell and Lomiri apps:

&lt;ul&gt;
&lt;li&gt;biometryd&lt;/li&gt;
&lt;li&gt;libqofono&lt;/li&gt;
&lt;li&gt;libqofonoext&lt;/li&gt;
&lt;li&gt;libqtdbusmock&lt;/li&gt;
&lt;li&gt;lomiri-account-polld&lt;/li&gt;
&lt;li&gt;lomiri-action-api&lt;/li&gt;
&lt;li&gt;lomiri-api&lt;/li&gt;
&lt;li&gt;lomiri-download-manager&lt;/li&gt;
&lt;li&gt;lomiri-location-service&lt;/li&gt;
&lt;li&gt;lomiri-online-accounts&lt;/li&gt;
&lt;li&gt;lomiri-push-qml&lt;/li&gt;
&lt;li&gt;lomiri-push-service&lt;/li&gt;
&lt;li&gt;maliit-framework&lt;/li&gt;
&lt;li&gt;mediascanner2&lt;/li&gt;
&lt;li&gt;qtlomiri-appmenutheme&lt;/li&gt;
&lt;li&gt;qtpim (started, work in progress)&lt;/li&gt;
&lt;li&gt;qwebdavlib&lt;/li&gt;
&lt;li&gt;signond (flaws spotted in Debian&#39;s porting of signond to Qt6)&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Feature Development&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Continuing with Morph Browser Qt6 / LUITK

&lt;ul&gt;
&lt;li&gt;Build, run and fix LUITK unit tests for Qt6&lt;/li&gt;
&lt;li&gt;various bug fixes and improvements for Morph Qt6&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Add mbim modem support to ofono upstream&lt;/li&gt;
&lt;li&gt;Improve ofono support in Network Manager&lt;/li&gt;
&lt;li&gt;Improve mbim modem support in lomiri-indicator-network&lt;/li&gt;
&lt;li&gt;Package kazv (convergent Matrix client) and dependencies for Debian&lt;/li&gt;
&lt;li&gt;Provide Lomiri images for Mobian&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Research&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Research on fuse-based caching Webdav client
for lomiri-cloudsync-app.&lt;/li&gt;
&lt;li&gt;Research on alternative ORM instead of QDjango in libusermetrics&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;[1] &lt;a href=&#34;https://gitlab.com/groups/ubports/development/-/boards/9895029?label_name%5B%5D=Topic%3A%20Qt%206&#34;&gt;https://gitlab.com/groups/ubports/development/-/boards/9895029?label_name%5B%5D=Topic%3A%20Qt%206  &lt;/a&gt;&lt;br /&gt;
[2] &lt;a href=&#34;https://gitlab.com/groups/ubports/development/-/boards/10037876?label_name[]=Topic%3A%20salsa2ubports%20DEB%20syncing&#34;&gt;https://gitlab.com/groups/ubports/development/-/boards/10037876?label_name[]=Topic%3A%20salsa2ubports%20DEB%20syncing&lt;/a&gt;&lt;/p&gt;</description>
</item>
<item>
<title>Debian Lomiri Tablets 2025-2027 - Project Report (Q3/2025)</title>
<link>https://sunweavers.net/blog/node/151</link>
<pubDate>Sa., 28 Feb. 2026 18:36:37 +0000</pubDate>
<guid>151 at https://sunweavers.net/blog</guid>
<description>&lt;h3&gt;Debian Lomiri for Debian 13 (previous project)&lt;/h3&gt;

&lt;p&gt;In our previous project around Debian and Lomiri (lasting until July
2025), we achieved to get Lomiri 0.5.0 (and with it another 130
packages) into Debian (with two minor exceptions [1]) just in time
for the Debian 13 release in August 2025.&lt;/p&gt;

&lt;h3&gt;Debian Lomiri for Debian 14&lt;/h3&gt;

&lt;p&gt;At DebConf in Brest, a follow-up project has been designed between the
project sponsor and Fre(i)e Software GmbH [2]. The new project (on paper)
started on 1st August 2025 and project duration was agreed on to be 2
years, allowing our company to work with an equivalent of ~5 FTE on
Lomiri targetting the Debian 14 release some time in the second half of
2027 (an assumed date, let&#39;s see what happens).&lt;/p&gt;

&lt;p&gt;Ongoing work would be covered from day one of the new project and once
all contract details had been properly put on paper end of September,
Fre(i)e Software GmbH started hiring a new team of software developers
and (future) Debian maintainers. (More of that new team in our next
Q4/2025 report).&lt;/p&gt;

&lt;p&gt;The ongoing work of Q3/2025 was basically Guido Berhörster and myself
working on Morph Browser Qt6 (mostly Guido together with Bhushan from
MiraLab [3]) and package maintenance in Debian (mostly me).&lt;/p&gt;

&lt;h3&gt;Morph Browser Qt6&lt;/h3&gt;

&lt;p&gt;The first milestone we could reach with the Qt6 porting of Morph Browser [4]
and related components (LUITK aka lomiri-ui-toolkit (big chunk! [5]),
lomiri-content-hub, lomiri-download-manager and a few other components)
was reached on 21st Sep 2025 with an upload of Morph Browser
1.2.0~git20250813.1ca2aa7+dfsg-1~exp1 to Debian experimental and the
Lomiri PPA [6]).&lt;/p&gt;

&lt;h3&gt;Preparation of Debian 13 Updates (still pending)&lt;/h3&gt;

&lt;p&gt;In background, various Lomiri updates for Debian 13 have been prepared
during Q3/2025 (with a huge patchset), but publishing those to Debian 13
are still pending as tests are still not satisfying.&lt;/p&gt;

&lt;p&gt;[1] lomiri-push-service and nuntium&lt;br /&gt;
[2] &lt;a href=&#34;https://freiesoftware.gmbh&#34; title=&#34;https://freiesoftware.gmbh&#34;&gt;https://freiesoftware.gmbh&lt;/a&gt;&lt;br /&gt;
[3] &lt;a href=&#34;https://miralab.one/&#34; title=&#34;https://miralab.one/&#34;&gt;https://miralab.one/&lt;/a&gt;&lt;br /&gt;
[4] &lt;a href=&#34;https://gitlab.com/ubports/development/core/morph-browser/-/merge_requests/591&#34; title=&#34;https://gitlab.com/ubports/development/core/morph-browser/-/merge_requests/591&#34;&gt;https://gitlab.com/ubports/development/core/morph-browser/-/merge_reques...&lt;/a&gt; et al.&lt;br /&gt;
[5] &lt;a href=&#34;https://gitlab.com/ubports/development/core/lomiri-ui-toolkit/-/merge_requests/94&#34; title=&#34;https://gitlab.com/ubports/development/core/lomiri-ui-toolkit/-/merge_requests/94&#34;&gt;https://gitlab.com/ubports/development/core/lomiri-ui-toolkit/-/merge_re...&lt;/a&gt; et al.&lt;br /&gt;
[6] &lt;a href=&#34;https://launchpad.net/~lomiri&#34; title=&#34;https://launchpad.net/~lomiri&#34;&gt;https://launchpad.net/~lomiri&lt;/a&gt;&lt;/p&gt;</description>
</item>
<item>
<title>Debian Lomiri Tablets - We are hiring!</title>
<link>https://sunweavers.net/blog/node/150</link>
<pubDate>Sa., 25 Okt. 2025 20:58:24 +0000</pubDate>
<guid>150 at https://sunweavers.net/blog</guid>
<description>&lt;p&gt;We at &lt;a href=&#34;https://freiesoftware.gmbh&#34;&gt;Fre{i}e Software GmbH&lt;/a&gt; now have a confirmed budget for working on Debian based tablets with the special goal to use them for educational purposes (i.e. in schools).&lt;/p&gt;

&lt;p&gt;Those Debian Edu tablets shall be powered by the Lomiri Operating Environment (that same operating environment that is powering Ubuntu Touch).&lt;/p&gt;

&lt;p&gt;That said, we are hiring developers (full time, part time) [*] [**]:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Lomiri developers (C/C++, Qt5 and Qt6, QML, CMake)&lt;/li&gt;
&lt;li&gt;Debian maintainers&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Global tasks will be:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Transition Lomiri from Qt5 to Qt6&lt;/li&gt;
&lt;li&gt;Consolidate the Lomiri Shell on various reference devices (mainline Linux only)&lt;/li&gt;
&lt;li&gt;Integrate Lomiri Shell with cloud services such as Nextcloud and OpenCloud&lt;/li&gt;
&lt;li&gt;XDG Desktop Portal support for Lomiri, integrate better with non-Lomiri Wayland apps&lt;/li&gt;
&lt;li&gt;Bring more Lomiri-specific (Ubuntu Touch) apps to Debian&lt;/li&gt;
&lt;li&gt;... (more to come) ...&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The budget will cover work for the +/- next 1.5-2 yrs. Development achievements shall culminate in the release of Debian 14.&lt;/p&gt;

&lt;p&gt;If you are interested in joining our team, please get in touch with me via known communication channels.&lt;/p&gt;

&lt;p&gt;light+love,&lt;br /&gt;
Mike (aka sunweaver at debian.org)&lt;/p&gt;

&lt;p&gt;[fsgmbh] &lt;a href=&#34;https://freiesoftware.gmbh&#34; title=&#34;https://freiesoftware.gmbh&#34;&gt;https://freiesoftware.gmbh&lt;/a&gt;&lt;br /&gt;
[*] We can employ applicants who are located in Germany, Austria or Poland (for other regions within the EU, please ask).&lt;br /&gt;
[**] Alternatively, if you are self-employed, we are happy to onboard you as a freelancer.&lt;/p&gt;</description>
</item>
<item>
<title>Creating (a) new frontend(s) for Polis</title>
<link>https://sunweavers.net/blog/node/149</link>
<pubDate>Do., 03 Okt. 2024 05:27:01 +0000</pubDate>
<guid>149 at https://sunweavers.net/blog</guid>
<description>&lt;p&gt;&lt;em&gt;After (quite) a summer break, here comes the 4th article of the 5-episode blog post series on Polis, written by Guido Berhörster, member of staff at my company Fre(i)e Software GmbH.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Have fun with the read on Guido&#39;s work on Polis,&lt;br /&gt;
Mike&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;Table of Contents of the Blog Post Series&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;&lt;a href=&#34;https://sunweavers.net/blog/node/145&#34;&gt;Introduction&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://sunweavers.net/blog/node/146&#34;&gt;Initial evaluation and adaptation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://sunweavers.net/blog/node/148&#34;&gt;Issues extending Polis and adjusting our goals&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Creating (a) new frontend(s) for Polis (this article)&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Current status and roadmap&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;4. Creating (a) new frontend(s) for Polis&lt;/h3&gt;

&lt;h4&gt;Why a new frontend was needed...&lt;/h4&gt;

&lt;p&gt;Our initial experiences of working with Polis, the effort required to implement
more &lt;a href=&#34;http://FIXME-part-3&#34;&gt;invasive changes&lt;/a&gt; and the desire of iterating changes more rapidly
ultimately lead to the decision to create a new foundation for frontend
development that would be independent of but compatible with the upstream
project.&lt;/p&gt;

&lt;p&gt;Our primary objective was thus not to develop another frontend but rather to
make frontend development more flexible and to facilitate experimentation and
rapid prototyping of different frontends by providing abstraction layers and
building blocks.&lt;/p&gt;

&lt;p&gt;This also implied developing a corresponding backend since the Polis backend
is tightly coupled to the frontend and is neither intended to be used by
third-party projects nor supporting cross-domain requests due to the
expectation of being embedded as an iframe on third-party websites.&lt;/p&gt;

&lt;p&gt;The long-term plan for achieving our objectives is to provide three abstraction
layers for building frontends:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;a stable cross-domain HTTP API&lt;/li&gt;
&lt;li&gt;a low-level JavaScript library for interacting with the HTTP API&lt;/li&gt;
&lt;li&gt;a high-level library of WebComponents as a framework-neutral way of rapidly
building frontends&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;The Particiapp Project&lt;/h4&gt;

&lt;p&gt;Under the umbrella of the &lt;a href=&#34;https://gitlab.com/particiapp&#34;&gt;Particiapp project&lt;/a&gt; we have so far developed two
new components:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;the &lt;a href=&#34;https://gitlab.com/particiapp/particiapi&#34;&gt;Particiapi server&lt;/a&gt; which provides the HTTP API&lt;/li&gt;
&lt;li&gt;the &lt;a href=&#34;https://gitlab.com/particiapp/particiapp-example-frontend&#34;&gt;example frontend&lt;/a&gt; project which currently contains both the client
library and an experimental example frontend built with it&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Both the participation frontend and backend are fully compatible and require
an existing Polis installation and can be run alongside the upstream frontend.
More specifically, the administration frontend and common backend are required to
administrate conversations and send out notifications and the statistics
processing server is required for processing the voting results.&lt;/p&gt;

&lt;h5&gt;Particiapi server&lt;/h5&gt;

&lt;p&gt;For the &lt;a href=&#34;https://gitlab.com/particiapp/particiapi&#34;&gt;backend&lt;/a&gt; the Python language and the &lt;a href=&#34;https://flask.palletsprojects.com/&#34;&gt;Flask framework&lt;/a&gt; were
chosen as a technological basis mainly due to developer mindshare, a large
community and ecosystem and the smaller dependency chain and maintenance
overhead compared to Node.js/npm.  Instead of integrating specific identity
providers we adopted the &lt;a href=&#34;https://openid.net/developers/how-connect-works/&#34;&gt;OpenID Connect&lt;/a&gt; &lt;a href=&#34;https://openid.net/developers/specs/&#34;&gt;standard&lt;/a&gt; as an abstraction
layer for authentication which allows delegating authentication either to a
self-hosted &lt;a href=&#34;https://openid.net/developers/certified-openid-connect-implementations/&#34;&gt;identity provider&lt;/a&gt; or a large number of existing external
&lt;a href=&#34;https://en.wikipedia.org/wiki/List_of_OAuth_providers&#34;&gt;identity providers&lt;/a&gt;.&lt;/p&gt;

&lt;h5&gt;Particiapp Example Frontend&lt;/h5&gt;

&lt;p&gt;
The &lt;a href=&#34;https://gitlab.com/particiapp/particiapp-example-frontend&#34;&gt;experimental example frontend&lt;/a&gt; serves both as a test bed for the client
library and as a tool for better understanding the needs of frontend designers.
It also features a completely redesigned user interface and results
visualization in line with our goals.  Branded variants are currently used for
evaluation and testing by the stakeholders.&lt;/p&gt;

&lt;p&gt;In order to simplify evaluation, development, testing and deployment a &lt;a href=&#34;https://gitlab.com/particiapp/particiapp-docker&#34;&gt;Docker
Compose configuration&lt;/a&gt; is made available which contains all necessary
components for running Polis with our experimental example frontend.  In
addition, a development environment is provided which includes a preconfigured
OpenID Connect identity provider (&lt;a href=&#34;https://www.keycloak.org/&#34;&gt;KeyCloak&lt;/a&gt;), SMTP-Server with web
interface (&lt;a href=&#34;https://maildev.github.io/maildev/&#34;&gt;MailDev&lt;/a&gt;), and a database frontend (&lt;a href=&#34;https://www.pgadmin.org/&#34;&gt;PgAdmin&lt;/a&gt;).  The new
frontend can also be tested using our public &lt;a href=&#34;https://demo.partici.app/?base_url=https%3A%2F%2Fapi.partici.app%2F&amp;amp;conversation_id=8vwsnjphnz&#34;&gt;demo server&lt;/a&gt;.&lt;/p&gt;</description>
</item>
<item>
<title>Polis - a FLOSS Tool for Civic Participation -- Issues extending Polis and adjusting our Goals</title>
<link>https://sunweavers.net/blog/node/148</link>
<pubDate>So., 21 Juli 2024 12:58:50 +0000</pubDate>
<guid>148 at https://sunweavers.net/blog</guid>
<description>&lt;p&gt;&lt;em&gt;Here comes the 3rd article of the 5-episode blog post series on Polis, written by Guido Berhörster, member of staff at my company Fre(i)e Software GmbH.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Enjoy also this read on Guido&#39;s work on Polis,&lt;br /&gt;
Mike&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;Table of Contents of the Blog Post Series&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;&lt;a href=&#34;https://sunweavers.net/blog/node/145&#34;&gt;Introduction&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://sunweavers.net/blog/node/146&#34;&gt;Initial evaluation and adaptation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Issues extending Polis and adjusting our goals (this article)&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Creating (a) new frontend(s) for Polis&lt;/li&gt;
&lt;li&gt;Current status and roadmap&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;Polis - Issues extending Polis and adjusting our Goals&lt;/h3&gt;

&lt;p&gt;After the &lt;a href=&#34;http://FIXME-part-2&#34;&gt;initial implementation of limited branding support&lt;/a&gt;, user
feedback and the involvement of an UX designer lead to the conclusion that we
needed more far-reaching changes to the user interface in order to reduce
visual clutter, rearrange and improve UI elements, and provide better
integration with the websites in which conversations are embedded.&lt;/p&gt;

&lt;h4&gt;Challenges when visualizing Data in Polis&lt;/h4&gt;

&lt;p&gt;Polis visualizes groups using a spatial projection of users based on
&lt;a href=&#34;https://compdemocracy.org/polis-opinion-matrix/&#34;&gt;similarities in voting behavior&lt;/a&gt; and places them in two to five groups
using a &lt;a href=&#34;https://compdemocracy.org/clustering-algorithms/&#34;&gt;clustering algorithm&lt;/a&gt;.

During our testing and evaluation users were rarely able to interpret the
visualization and often intuitively made incorrect assumptions e.g.  by
associating the filled area of a group with its significance or size.  After
consultation with a member of the &lt;a href=&#34;https://www.rug.nl/research/bernoulli/groups/multi-agent-systems/multi-agent-systems?lang=en&#34;&gt;Multi-Agent Systems (MAS) Group&lt;/a&gt; at the
University of Groningen we chose to temporarily replace the visualization
offered by Polis with simple bar charts representing agreement or disagreement
with statements of a group or the majority. We intend to revisit this and
explore different forms of visualization at a later point in time.&lt;/p&gt;

&lt;p&gt;The different factors playing into the weight attached to statements which
determine the pseuodo-random order in which they are presented for voting
(“comment routing”) proved difficult to explain to stakeholders and users and
the admission of the ad-hoc and heuristic nature of the used algorithm&lt;a href=&#34;#fn:1&#34; rel=&#34;footnote&#34;&gt;1&lt;/a&gt; by
Polis’ authors lead to the decision to temporarily remove this feature.
Instead, statements should be placed into three groups, namely&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;metadata questions,&lt;/li&gt;
&lt;li&gt;seed statements,&lt;/li&gt;
&lt;li&gt;and participant statements&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Statements should then be sorted by group but in a fully randomized order
within the group so that metadata questions would be presented before seed
statements which would be presented before participant’s statements.  This
simpler method was deemed sufficient for the scale of our pilot projects,
however we intend to revisit this decision and explore different methods of
“comment routing” in cooperation with our scientific partners at a later point
in time.&lt;/p&gt;

&lt;p&gt;An evaluation of the requirements for implementing mandatory authentication and
adding support for additional authentication methods to Polis showed that
significant changes to both the administration and participation frontend were
needed due to a lack of an abstraction layer or extension mechanism and the
current authentication providers being hardcoded in many parts of the code
base.&lt;/p&gt;

&lt;h4&gt;A New Frontend is born: Particiapp&lt;/h4&gt;

&lt;p&gt;Based on the implementation details of the participation frontend, the invasive
nature of the changes required, and the overhead of keeping up with active
upstream development it became clear that a different, more flexible approach
to development was needed.  This ultimately lead to the creation of
&lt;a href=&#34;https://gitlab.com/particiapp&#34;&gt;Particiapp&lt;/a&gt;, a new Open Source project providing the building blocks and
necessary abstraction layers for rapid protoyping and experimentation with
different fontends which are compatible with but independent from Polis.&lt;/p&gt;



&lt;ol&gt;

&lt;li id=&#34;1&#34;&gt;
&lt;p&gt;Small, Christopher T., Bjorkegren, Michael, Erkkilä, Timo, Shaw, Lynette and Megill, Colin (2021). Polis: Scaling deliberation by mapping high dimensional opinion spaces.  Recerca. Revista de Pensament i Anàlisi, 26(2), pp. 1-26.&amp;#160;&lt;a href=&#34;#fnref:1&#34; rev=&#34;footnote&#34;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;

&lt;/ol&gt;</description>
</item>
<item>
<title>Weather Experts with Translation Skills Needed!</title>
<link>https://sunweavers.net/blog/node/147</link>
<pubDate>Mi., 17 Juli 2024 10:05:04 +0000</pubDate>
<guid>147 at https://sunweavers.net/blog</guid>
<description>&lt;h3&gt;Lomiri Weather App goes Open Meteo&lt;/h3&gt;

&lt;p&gt;In Ubuntu Touch / Lomiri, Maciej Sopyło has updated Lomiri&#39;s Weather App to operate against a different weather forecast provider (Open Meteo). Additionally, the new implementation is generic and pluggable, so other weather data providers can be added-in later.&lt;/p&gt;

&lt;p&gt;Big thanks to Maciej for working on this just in time (the previous implementation&#39;s API has recently been EOL&#39;ed and is not available anymore to Ubuntu Touch / Lomiri users).&lt;/p&gt;

&lt;h3&gt;Lomiri Weather App - new Meteorological Terms part of the App now&lt;/h3&gt;

&lt;p&gt;While the old weather data provider implementation obtained all the meteorological information as already localized strings from the provider, the new implementation requires all sorts of weather conditions being translated within the Lomiri Weather App itself.&lt;/p&gt;

&lt;p&gt;The meteorological terms are probably not easy to translate for the usual software translator, so special help might be required here.&lt;/p&gt;

&lt;h3&gt;Call for Translations: Lomiri Weather App&lt;/h3&gt;

&lt;p&gt;So, if you feel entitled to help here, please join the Hosted Weblate service [1] and start working on Lomiri Weather App.&lt;/p&gt;

&lt;p&gt;Thanks a lot!&lt;/p&gt;

&lt;p&gt;light+love&lt;br /&gt;
Mike Gabriel (aka sunweaver)&lt;/p&gt;

&lt;p&gt;[1] &lt;a href=&#34;https://hosted.weblate.org/&#34; title=&#34;https://hosted.weblate.org/&#34;&gt;https://hosted.weblate.org/&lt;/a&gt;&lt;br /&gt;
[2] &lt;a href=&#34;https://hosted.weblate.org/projects/lomiri/lomiri-weather-app/&#34; title=&#34;https://hosted.weblate.org/projects/lomiri/lomiri-weather-app/&#34;&gt;https://hosted.weblate.org/projects/lomiri/lomiri-weather-app/&lt;/a&gt;&lt;/p&gt;</description>
</item>
<item>
<title>Polis - a FLOSS Tool for Civic Participation -- Initial Evaluation and Adaptation (episode 2/5)</title>
<link>https://sunweavers.net/blog/node/146</link>
<pubDate>Mi., 03 Juli 2024 19:56:24 +0000</pubDate>
<guid>146 at https://sunweavers.net/blog</guid>
<description>&lt;p&gt;&lt;em&gt;Here comes the 2nd article of the 5-episode blog post series written by Guido Berhörster, member of staff at my company Fre(i)e Software GmbH.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Enjoy also this read on Guido&#39;s work on Polis,&lt;br /&gt;
Mike&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;Table of Contents of the Blog Post Series&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;&lt;a href=&#34;https://sunweavers.net/blog/node/145&#34;&gt;Introduction&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Initial evaluation and adaptation (this article)&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Issues extending Polis and adjusting our goals&lt;/li&gt;
&lt;li&gt;Creating (a) new frontend(s) for Polis&lt;/li&gt;
&lt;li&gt;Current status and roadmap&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;Polis - Initial evaluation and adaptation&lt;/h3&gt;

&lt;p&gt;The &lt;a href=&#34;https://github.com/compdemocracy/polis&#34;&gt;Polis code base&lt;/a&gt; consists of a number of components, the administration
and participation interfaces, a common web backend, and a statistics processing
server.  Both frontends and the backend are written in a mixture of JavaScript
and TypeScript, only the statistics processing server is written in Clojure.&lt;/p&gt;

&lt;p&gt;In case of self hosting the preferred method of deployment is via Docker
containers using Docker Compose or any other orchestrator. The participation
frontend for conversations can either be used as a standalone web page or be
embedded via an iframe.&lt;/p&gt;

&lt;p&gt;For our planned use case we initially defined the following goals:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;custom branding and the integration into different content management systems
(CMS)&lt;/li&gt;
&lt;li&gt;better support for mobile devices&lt;/li&gt;
&lt;li&gt;mandatory authentication and support for a broader range of authentication
methods, including self-hosted solutions and &lt;a href=&#34;https://www.digid.nl/en/&#34;&gt;DigiD&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;support for alternative email sending services&lt;/li&gt;
&lt;li&gt;GDPR compliance&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;After a preliminary evaluation of our own and consulting with &lt;a href=&#34;https://openpolicy.blog.gov.uk/&#34;&gt;Policy Lab
UK&lt;/a&gt; who were also &lt;a href=&#34;https://openpolicy.blog.gov.uk/2022/10/11/cutting-through-complexity-using-collective-intelligence/&#34;&gt;evaluating and testing Polis&lt;/a&gt; and had already made a
range of improvements related to self-hosting as well as bug fixes and
modernization changes we decided to take &lt;a href=&#34;https://github.com/DFE-Digital/polis-whitelabel&#34;&gt;their work&lt;/a&gt; as a base for our
adaptations with the intent of submitting generally useful changes back to the
Polis project.&lt;/p&gt;

&lt;p&gt;Subsequently, a number of changes were implemented, including the removal of
hardcoded domain names, the elimination of unnecessary cookies and third-party
requests, support for an alternative email sending service, and the option of
disabling Facebook and X integration.&lt;/p&gt;

&lt;p&gt;For the branding our approach was to add an option allowing websites which are
embedding conversations in an iframe to load an alternative stylesheet for
overriding the native Polis branding.  For this to be practical we intended to
use CSS custom properties for defining branding-related styles such as colors
and fonts. That approach turned out to be problematic because although the
Polis participation frontend stylesheet is generated via SCSS and some of the
colors are parameterized, however, they are not used consistently throughout the SCSS
stylesheets, unfortunately. In addition the frontend templates contain a large amount of
hardcoded style attributes. While we succeeded in &lt;a href=&#34;https://gitlab.com/betabreak/polis-group/polis&#34;&gt;implementing&lt;/a&gt;
user-defined stylesheets, it took a disproportionate amount of development
resources to parameterize all used colors and fonts via CSS custom properties
aggravated by the fact that the SCSS and template files are huge and contain
many unused rules and code.&lt;/p&gt;</description>
</item>
<item>
<title>Polis - a FLOSS Tool for Civic Participation -- Introduction (episode 1/5)</title>
<link>https://sunweavers.net/blog/node/145</link>
<pubDate>Di., 02 Juli 2024 14:14:46 +0000</pubDate>
<guid>145 at https://sunweavers.net/blog</guid>
<description>&lt;p&gt;&lt;em&gt;This is the first article of a 5-episode blog post series written by Guido Berhörster, member of staff at my company Fre(i)e Software GmbH. Thanks, Guido for being on the Polis project.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Enjoy the read on the work Guido has been doing over the past months,&lt;br /&gt;
Mike&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;A team lead by Raoul Kramer/&lt;a href=&#34;https://betabreak.net/&#34;&gt;BetaBreak&lt;/a&gt; is currently adapting &lt;a href=&#34;https://pol.is/&#34;&gt;Polis&lt;/a&gt; for
evaluation and testing by several Dutch provincial governments and central
government ministries. &lt;a href=&#34;https://guido.berhoerster.name/&#34;&gt;Guido Berhörster&lt;/a&gt; (author of this article) who is an employee at &lt;a href=&#34;https://freiesoftware.gmbh/&#34;&gt;Fre(i)e Software GmbH&lt;/a&gt; has been involved in this project as the main
software developer.  This series of blog posts describes how and why Polis was
initially modified and adapted, what issues the team ran into and how this
ultimately lead them to start a new Open Source project called &lt;a href=&#34;https://gitlab.com/particiapp&#34;&gt;Particiapp&lt;/a&gt;
for accelerating the development of alternative Polis frontends compatible to
but independent from the upstream project.&lt;/p&gt;

&lt;h3&gt;Table of Contents of the Blog Post Series&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Introduction (this article)&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://sunweavers.net/blog/node/146&#34;&gt;Initial evaluation and adaptation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Issues extending Polis and adjusting our goals&lt;/li&gt;
&lt;li&gt;Creating (a) new frontend(s) for Polis&lt;/li&gt;
&lt;li&gt;Current status and roadmap&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;Polis - The Introduction&lt;/h3&gt;

&lt;h4&gt;What is Polis?&lt;/h4&gt;

&lt;p&gt;Polis is a platform for participation which helps to gather, analyze and
understand viewpoints of large groups of participants on complex issues.  In
practical terms participants take part in “conversations” on a predefined topic
by voting on statements or submitting their own statements (referred to as
“comments” in Polis) for others to vote on&lt;a href=&#34;#fn:1&#34; rel=&#34;footnote&#34;&gt;1&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Through statistical analysis including machine learning participants are sorted
into groups based on similarities in voting behavior. In addition,
group-informed and overall consensus statements are identified and presented to
participants in real-time.  This allows for participants to react to and refine
statements and either individually or through a predefined process to come to
an overall consensus.&lt;/p&gt;

&lt;p&gt;Furthermore, the order in which statements are presented to participants is
influenced by a complex weighting system based on a number of factors such as
variance, recency, and frequency of skipping. This so called “comment routing”
is intended to facilitate a meaningful contribution of participants without
requiring them to vote on each of a potentially huge number of statements
&lt;a href=&#34;#fn:2&#34; rel=&#34;footnote&#34;&gt;2&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Polis open-ended nature sets it apart from online surveys using pre-defined
questions and allows its users to gather a more accurate picture of the public
opinion.  In contrast to a discussion forum or comment section where
participants directly reply to each other, it discourages unproductive behavior
such as provocations or personal attacks by not presenting statements in
chronological order in combination with voting.  Finally, its &lt;a href=&#34;https://compdemocracy.org/comment-routing/&#34;&gt;“comment
routing”&lt;/a&gt; is intended to provide scalability towards a large number of
participants which generate a potentially large number of statements.&lt;/p&gt;

&lt;p&gt;The project was developed and is maintained by &lt;a href=&#34;https://compdemocracy.org/&#34;&gt;The Computational Democracy
Project&lt;/a&gt;, a USA-based non-profit organization which provides a hosted
version and offers related services.  It is also released as Open Source
software under the AGPL 3.0 license.&lt;/p&gt;

&lt;p&gt;Polis has been used in a &lt;a href=&#34;https://compdemocracy.org/Case-studies/&#34;&gt;variety of different contexts&lt;/a&gt; as part of broader
political processes facilitating broader political participation and
opinion-forming, and gathering feedback and creative input.&lt;/p&gt;

&lt;h4&gt;Use of Polis in Taiwan&lt;/h4&gt;

&lt;p&gt;One prominent use case of Polis is its adoption as part of the vTaiwan
participatory governance project.  Established by the g0v civic tech community
in the wake of the 2014 mass protests by the Sunflower movement, the vTaiwan
project enables consultations on proposed legislation among a
broad range of stakeholders including government ministries, lawmakers,
experts, interest groups, civil society as well as the broader public.
Although the resulting recommendations are non-binding, they exert pressure on
the government to take action and recommendations have been adopted into
legislation.&lt;a href=&#34;#fn:3&#34; rel=&#34;footnote&#34;&gt;3&lt;/a&gt;&lt;a href=&#34;#fn:4&#34; rel=&#34;footnote&#34;&gt;4&lt;/a&gt;&lt;a href=&#34;#fn:5&#34; rel=&#34;footnote&#34;&gt;5&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;vTaiwan uses Polis for large-scale online deliberations as part of a structured
participation process.  These deliberations take place after identifying and involving
stakeholders and experts and providing through information about the topic at
hand to the public.  Citizens are then given the opportunity to vote on
statements or provide alternative proposals which allows for the refinement of
ideas and ideally leads to a consensus at the end.  The results of these online
deliberations are then curated, discussed in publicly broadcast face-to-face
meetings which ultimately produce concrete policy recommendations.  vTaiwan has
in numerous cases given impulses resulting in government action and provided
significant input e.g. on legislation regulating Uber or technological
experiments by Fintech startups.&lt;a href=&#34;#fn:3&#34; rel=&#34;footnote&#34;&gt;3&lt;/a&gt;&lt;a href=&#34;#fn:5&#34; rel=&#34;footnote&#34;&gt;5&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;See also&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://compdemocracy.org/Case-studies/&#34;&gt;Polis Case Studies&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.youtube.com/watch?v=VbCZvU7i7VY&#34;&gt;BBC Click: Can Taiwan Reboot Democracy?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.e-revistes.uji.es/index.php/recerca/article/view/5516/6558&#34;&gt;Polis: Scaling Deliberation by Mapping High Dimensional Opinion Spaces&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;



&lt;ol&gt;

&lt;li id=&#34;1&#34;&gt;
&lt;p&gt;https://compdemocracy.org/Polis/&amp;#160;&lt;a href=&#34;#fnref:1&#34; rev=&#34;footnote&#34;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;

&lt;li id=&#34;2&#34;&gt;
&lt;p&gt;https://compdemocracy.org/comment-routing/&amp;#160;&lt;a href=&#34;#fnref:2&#34; rev=&#34;footnote&#34;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;

&lt;li id=&#34;3&#34;&gt;
&lt;p&gt;https://info.vtaiwan.tw/&amp;#160;&lt;a href=&#34;#fnref:3&#34; rev=&#34;footnote&#34;&gt;&amp;#8617;&lt;/a&gt; &lt;a href=&#34;#fnref2:3&#34; rev=&#34;footnote&#34;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;

&lt;li id=&#34;4&#34;&gt;
&lt;p&gt;https://www.theguardian.com/world/2020/sep/27/taiwan-civic-hackers-polis-consensus-social-media-platform&amp;#160;&lt;a href=&#34;#fnref:4&#34; rev=&#34;footnote&#34;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;

&lt;li id=&#34;5&#34;&gt;
&lt;p&gt;https://www.technologyreview.com/2018/08/21/240284/the-simple-but-ingenious-system-taiwan-uses-to-crowdsource-its-laws/&amp;#160;&lt;a href=&#34;#fnref:5&#34; rev=&#34;footnote&#34;&gt;&amp;#8617;&lt;/a&gt; &lt;a href=&#34;#fnref2:5&#34; rev=&#34;footnote&#34;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;

&lt;/ol&gt;</description>
</item>
</channel>
</rss>
