Normale Ansicht
Programmieren: Der Code-Editor Zed erobert Linux
Python-Tk: Ein Neofetch-GUI selbst schreiben Teil 7
Der 7. Teil einer Einführung in die Python3-Bibliothek Tkinter und der lange Weg zum perfekten GUI.


HexOS: Homeserver und NAS für jedermann
Homeserver und NAS haben Konjunktur. Mit HexOS steigt ein neuer Mitbewerber in den Markt ein, der eine einfache, aber trotzdem leistungsfähige NAS-Software entwickelt.
Code-Editor: Zed erscheint für Linux
Altes CentOS ohne Support zu RHEL mit Support umwandeln
Box64 0.3.0: x86_64-Emulator für Linux unterstützt AVX und AVX2
Unraid 7.0 Beta 1 ist da!
Nach den kürzlich vorgenommenen Preissteigerungen bei Unraid mussten die Entwickler abliefern. Das haben sie mit der Beta zu Unraid 7.0 jetzt überzeugend getan.
DietPi 9.6 für Juli veröffentlicht
DietPi ist eine leichtgewichtige, auf Debian basierende Linux-Distribution für Single-Board-Computer (SBC) und Serversysteme, die auch die Option der Installation einer
Firefox: Wetter auf der Startseite anzeigen lassen
Seit Firefox 127 kann man sich das Wetter auf der Startseite anzeigen lassen. Startet euren Firefox, gebt in der Adresszeile about:config ein und bestätigt die Warnung. Sucht nach browser.newtabpage.activity-stream.system.showWeather und stellt den Wert mit...![]()
Captain it's Wednesday - Folge 094 - Proxmox
Folge 094 des CIW Podcasts. Was ist Proxmox und wie kann Proxmox eingesetzt werden?
Fedora Workstation 41 definitiv ohne X11
Fedora wagt mit Workstation 41 den Schritt in eine Zukunft ohne den jahrzehntelangen Wegbegleiter X11. Wer es dennoch benötigt, kann es händisch installieren.
(g+) Opentalk: Schritt für Schritt zum datenschutzfreundlichen Videochat
Firefox 128 übersetzt markierten Text
Firefox 128 sucht nach neuen Wegen, Tracking zu verhindern, übersetzt markierte Textstellen und zeigt das Wetter von überall auf der Welt an. Zudem wurden 17 Sicherheitslücken eliminiert.
Freie Software in der Schule: Lizenzen für Dokumente und Werke
Austausch von Unterrichtsmaterial im Kollegium: wann und wie darf ich das nutzen? Wie schaffe ich Klarheit darüber? Ein Blick in die CC-Lizenzen aus Sichtweise einer Lehrkraft.


GitHub Copilot: Sammelklage gegen Microsoft und GitHub weitgehend abgewiesen
Telemetrie, Datenschutz, Cloud: Mein wachsendes Unbehagen mit Windows
Belgian court’s decision impacts the future of Router Freedom
Belgian court’s decision impacts the future of Router Freedom
In an historic ruling within the EU, a Belgian court has upheld the decision of the country’s regulator to introduce Router Freedom for fiber networks. The objections, raised by a local internet service provider, were deemed unfounded. This landmark decision represents a significant victory for consumer rights, and we urge other national regulators to follow this example.
Internet services providers (ISPs) have been pushing back in different ways to limit the ability of end-users to choose and use their own routers for internet connection. After a thorough regulatory process which officially confirmed Router Freedom in Belgium, the local ISP Orange contested the decision of the Belgian Institute for Postal Services and Telecommunications (BIPT) alleging lack of proportionality. Although past court cases in other countries have been decided in favour of end-users, the Orange vs the BIPT case represents an important victory for Router Freedom: this is the first time a court refers to fiber networks from the perspective of the regulatory framework established by the 2020 reform of the telecommunications law in Europe.
Orange’s allegations rebutted by the court
In September 2023, the BIPT, following the BEREC guidelines, defined the position of the “network termination point“. This means that routers, modems and optical network terminals (ONT) would not be part of the ISPs’ infrastructure, opening up the possibility for freedom of choice in the equipment market. The regulatory decision encompassed fiber networks, following by a comprehensive technical, economical and legal analysis conducted by the regulator.
Soon after the publication of the decision, Orange started litigation at the Market Court in Brussels against the regulator, listing a long list of arguments against the decision:
- The BIPT was not diligent in the decision-making process;
- The BIPT insufficiently researched the market and technical situation in Belgium to decide to place the NTP at Point A;
- The decision should be reversed because it violates proportionality. The market situation in Belgium is different from other countries that decided in favour of Router Freedom. Instead, Point B should have been chosen;
- Orange was under the assumption that the BIPT would choose Point B, therefore violated its trust;
- The decision was not technology-neutral because it excluded other terminal equipment (like TV decoders) from its scope.
The court dismissed all Orange’s arguments as unfounded, confirming the BIPT’s decision to introduce Router Freedom in Belgium by defining the position of the NTP at Point A. The court ruled that:
- Although the court has the authority to check the legitimacy of the regulator’s decision, it should not regulate in its place. In any case, the BIPT has not violated the principles of proper governance and was diligent in following the regulatory framework proposed by BEREC, in particular the Guidelines for the Identification of the NTP;
- The BIPT was not unreasonable to set the NTP at Point A, as Orange stated multiple times. Instead, the regulator acted diligently and took into account the different technologies (cable, copper, fibre). The BIPT determined that there are no objective technological reasons to limit freedom of terminal equipment. The purpose of setting the NTP at point A is to create a framework that stimulates competition;
- Deciding in favour of Point A was proportionate. The regulator diligently analysed competition in the equipment market; the costs for operators and the service provision, sustainability and energy consumption aspects. Orange did not provide concrete data to demonstrate that the BIPT insufficiently researched technological necessities to limit freedom of terminal equipment. The situation in each country is indeed different. That’s why regulators are required by BEREC to assess whether there are objective criteria to limit this freedom: the BIPT’s comprehensive assessment demonstrated that there are none;
- The BIPT has not violated the trust of the operators. It is not sufficient for Orange to claim that their own concrete interest is better served with a different outcome than the one proposed by the BIPT (limiting Router Freedom at Point A). The BIPT did not arbitrarily determine the position of the NTP;
- Media boxes and TV decoders are not the same as routers and modems, so they should be treated differently.
The FSFE emphasises the importance of this ruling as the court has not only clarified the procedural aspects, but confirmed the Belgian regulator's diligence in analysing all the market, technical and sustainability aspects concerning Router Freedom. It should be highlighted that the court reaffirmed the BIPT’s conclusion that no technological necessity to limit Router Freedom in fiber networks was found. This resonates with FSFE’s demands that ISPs’ commercial interests should not prevail over consumer rights. This ruling should serve as an precedent for other EU member states who have argued the existence of such technological constraints in fiber networks.
The future of Router Freedom is under attack, help us safeguarding it
For many years ISPs have been pushing back in different manners to limit the ability of end-users to choose and use their own routers for internet connection. Their lobbying power has been intense against Router Freedom in fiber networks. Countries like Austria and Latvia have prioritized operators’ interests by not safeguarding end-users’ freedom of routers, while others like Greece and Croatia have promoted a compromise by allowing Router Freedom in DSL and coax but excluding fiber. Particularly concerning are countries, like Germany, which have positively decided in the past in favour of Router Freedom but are facing pressure from ISPs to exclude fiber networks.
The FSFE is the only civil-society organisation that systematically monitors and advocates in favour of Router Freedom across Europe. We have intervened in key regulatory processes, and articulated alliances and coalitions with local digital rights groups, industry representatives and consumer protection organisations. We have participated in dozens of conferences and events in Europe, and have been quoted by the media, think tanks and academics.
Most importantly, we are aiming at the future. Our advocacy does not expire in the short term. We are committed to Device Neutrality as we believe everyone should be able to bypass gatekeepers – these small or large corporations blocking their rights – to run Free Software on their devices. For example, while Apple is hampering software freedom on smartphones, ISPs prohibit subscribers to have their own routers running Free Software operating systems.
An open, healthy and neutral Internet needs Router Freedom, as this freedom refers to the hardware layer of Net Neutrality. Indeed, Router Freedom was considered a top priority by a study on the future of the Net Neutrality Regulation commissioned by the EC last year. The study cited the FSFE in several parts.
New challenges are appearing in the horizon. Next year the EU will assess its telecom legislation that tasked BEREC to develop the guidelines on the NTP. In parallel, as the importance of satellite networks grows, it is not clear how regulators will react to lack of freedom of choice among proprietary devices.
Router Freedom is key for an open and neutral Internet. We have achieved so much in the last five years balancing the power of ISPs to promote software freedom in routers and modems! Your support is vital for our advocacy and policy engagement in favour of your right to choose and use your own router. Please become an FSFE supporter today and help us keep our independence! Donate nowA big shout out for the FSFE Benelux Team for the amazing work in translating the lengthy and complex court decision!
Hetzjagd auf Ladybird-Entwickler
Die Open-Source-Gemeinschaft kann schnell zu einem sehr toxischen Ort werden, wie der Entwickler des unabhängigen Browsers Ladybird gerade erfahren muss.
Gaming: Tux Planet Speedrun Any%
Hüpfen mit dem Pinguin mal anders.


Die Gewinner des Frühlingswettbewerbs
Die Gewinner des Frühlingswettbewerbs vom 15.03.2024 bis zum 30.06.2024 stehen fest. Der Erstplatzierte erhält ein NitroTablet von Nitrokey.


Debian wertet cURL mit HTTP/3 auf
cURL wird oft unbedacht eingesetzt, indem darauf basierende Befehle auf GitHub und anderswo kopiert und ausgeführt werden. Um dieses Sicherheitsrisiko abzuschwächen, liefert Debian cURL jetzt mit HTTP/3 aus.
Plasma 6.2 erhält Autoscrolling-Funktion
Auch nach der Veröffentlichung von Plasma 6.1 gönnen sich die Entwickler bei KDE keine Pause und arbeiten bereits fleißig an der Fehlerbereinigung sowie an neuen Funktionen für Plasma 6.2
Beispiele für Ansibles ‚var is defined‘
In diesem Beitrag gebe ich einige Beispiele mit Erklärungen zu Ansible Conditionals, welche mir in der Dokumentation fehlen. Dieser Artikel dient mir zur Erinnerung und mag Einsteigern helfen, ein besseres Verständnis der Bedingung is defined zu gewinnen.
Wird in einem Task eine Variable verwendet, welche nicht definiert ist, bricht Ansible die Verarbeitung eines Playbooks mit einem Fehler ab. Der folgende Code-Block zeigt ein einfaches Playbook mit anschließender Ausgabe des Playbooklaufs, um dies zu verdeutlichen. Der Task beinhaltet dabei bereits eine Bedingung. Er soll nur dann ausgeführt werden, wenn die Variable my_var den Wert Hello world! enthält.
]$ cat test_conditionals.yml
---
- name: Play around with conditionals
hosts: localhost
gather_facts: false
tasks:
- name: >-
When all conditionals are met, print the variable value using
ansible.builtin.debug
when:
- my_var == "Hello world!"
ansible.builtin.debug:
var: my_var
]$ ansible-playbook -i hosts test_conditionals.yml
PLAY [Play around with conditionals] *******************************************
TASK [When all conditionals are met, print the variable value using ansible.builtin.debug] ***
fatal: [localhost]: FAILED! => {"msg": "The conditional check 'my_var == \"Hello world!\"' failed. The error was: error while evaluating conditional (my_var == \"Hello world!\"): 'my_var' is undefined. 'my_var' is undefined\n\nThe error appears to be in '/home/tronde/ansible/test_conditionals.yml': line 7, column 7, but may\nbe elsewhere in the file depending on the exact syntax problem.\n\nThe offending line appears to be:\n\n tasks:\n - name: >-\n ^ here\n"}
PLAY RECAP *********************************************************************
localhost : ok=0 changed=0 unreachable=0 failed=1 skipped=0 rescued=0 ignored=0
Der Text 'my_var' is undefined in obiger Fehlerausgabe benennt den Grund des Scheiterns.
Nun gibt es Fälle, in denen Tasks, welche undefinierte Variablen enthalten, nicht zum Abbruch des gesamten Playbooks führen sollen. Stattdessen soll der betroffene Task einfach übersprungen werden. Dies erreicht man mit der Bedingung `is defined`. Der nächste Code-Block liefert wieder ein Beispiel dazu.
]$ cat test_conditionals.yml
---
- name: Play around with conditionals
hosts: localhost
gather_facts: false
tasks:
- name: >-
When all conditionals are met, print the variable value using
ansible.builtin.debug
when:
- my_var is defined
- my_var == "Hello world!"
ansible.builtin.debug:
var: my_var
]$ ansible-playbook -i hosts test_conditionals.yml
PLAY [Play around with conditionals] *******************************************
TASK [When all conditionals are met, print the variable value using ansible.builtin.debug] ***
skipping: [localhost]
PLAY RECAP *********************************************************************
localhost : ok=0 changed=0 unreachable=0 failed=0 skipped=1 rescued=0 ignored=0
Der Task mit der undefinierten Variable wurde übersprungen (skipped) und das Playbook erfolgreich beendet.
Im nächsten Beispiel habe ich die Variable my_var im Playbook definiert und den passenden Wert zugewiesen.
]$ cat test_conditionals.yml
---
- name: Play around with conditionals
hosts: localhost
gather_facts: false
vars:
my_var: Hello world!
tasks:
- name: >-
When all conditionals are met, print the variable value using
ansible.builtin.debug
when:
- my_var is defined
- my_var == "Hello world!"
ansible.builtin.debug:
var: my_var
]$ ansible-playbook -i hosts test_conditionals.yml
PLAY [Play around with conditionals] *******************************************
TASK [When all conditionals are met, print the variable value using ansible.builtin.debug] ***
ok: [localhost] => {
"my_var": "Hello world!"
}
PLAY RECAP *********************************************************************
localhost : ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
Das war auch schon alles für heute. Ihr seht, es ist keine Hexerei. Mir hilft es, die Bedeutung von is defined zu erinnern, wenn ich es einmal aufgeschrieben habe.
Zum Ende gibt es noch einen Code-Block, der zeigt, dass dies auch mit Dictionaries funktioniert:
]$ cat test_conditionals.yml
---
- name: Play around with conditionals
hosts: localhost
gather_facts: false
vars:
my_dict:
my_var: Hello world!
tasks:
- name: >-
When all conditionals are met, print the variable value using
ansible.builtin.debug
when:
- my_dict.my_var is defined
- my_dict.my_var == "Hello world!"
ansible.builtin.debug:
var: my_dict.my_var
]$ ansible-playbook -i hosts test_conditionals.yml
PLAY [Play around with conditionals] *******************************************
TASK [When all conditionals are met, print the variable value using ansible.builtin.debug] ***
ok: [localhost] => {
"my_dict.my_var": "Hello world!"
}
PLAY RECAP *********************************************************************
localhost : ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
In der Kategorie Ansible findet ihr weitere Artikel rund um Ansible. Viel Spaß beim Stöbern.
Ephraims Wochenrückblick: KW 27, 2024
FOSS News in Woche 27: Von Farben bis zum neuen ARM ISO

