Apollo Guidance Computer zum ausprobieren

Vor ein paar Tagen schrieb ich einen Artikel über den Quelltext des Apollo 11 Guidance Computer. Wer den Computer ausprobieren möchte, kann dies mit dem Simulator Moonjs tun. Bei diesem handelt es sich um eine Portierung des Virtual AGC von C nach JavaScript.

Der Simulator des Apollo Guidance Computer

Technisch betrachtet werden zwei Dinge simuliert, einmal das Bedienteil DSKY und der eigentliche Apollo Guidance Computer. Zu finden ist der Simulator unter svtsim.com. Der Quelltext des Simulator kann über GitHub bezogen werden. Er ist unter der GPL2 lizenziert und somit freie Software.

ACME-Client in Shell Script

Das Protokoll, welches Let’s Encrypt zur Anforderung und Übertragung der Zertifikate nutzt, hört auf den Namen ACME. Das Kürzel steht für Automatic Certificate Management Environment. Neben dem offiziellen Client Certbot existieren viele weitere Clients. Einer der Clients, welcher hervorsticht, ist acme.sh. Dieser Client wurde komplett in Shell Script für die Bash geschrieben.

Auf letsencrypt.org ist eine Liste der Clients zu finden

Neben dem ursprünglichen ACME v1-Protokoll unterstützt der Client ebenfalls ACME v2 und kann somit für den produktiven Einsatz genutzt werden. Der Client kann über GitHub bezogen werden. Lizenziert ist er unter der GPL in Version 3 und damit freie Software.

NVDA

Screenreader, also Programme, welche den Bildschirminhalt vorlesen, existieren einige am Markt. Benötigt werden solche Programme unter anderem von blinden Menschen. Neben den proprietären Lösungen existiert auch eine Open-Source-Lösung mit dem Namen NVDA. NVDA ist für Windows verfügbar und kann als portable App betrieben werden. Ist dies der Fall, hinterlässt die Software nach ihrer Nutzung keinerlei Spuren auf dem Rechner.

Die Einstellungen von NVDA

Bezogen werden kann NVDA unter nvaccess.org. Lizenziert ist NVDA unter der GPL und damit freie Software. Der Quelltext ist auf GitHub zu finden.

Creative Commons – Bausatzsystem für Lizenzen

Wenn jemand ein Werk schafft, so hat derjenige auf dieses Werk ein Urheberrecht. Ein solches Werk könnte z.B. ein Foto oder ein Musikstück sein. Wenn dieses Foto nun anderen Menschen zur Verfügung gestellt werden soll, wird es kniffelig. In Deutschland wäre es nicht einmal möglich auf das eigene Urheberrecht zu verzichten. Stattdessen können Nutzungsrechte an dem Werk eingeräumt werden. Es muss also ein Lizenzvertrag zwischen dem Urheber und den Nutzern geschlossen werden.

Möchte der Urheber nun noch bestimmte Einschränkungen wird es noch kniffliger. Schließlich ist es nicht unbedingt einfach, etwas juristisch sicher (und einfach) zu definieren. Bei der Lösung dieses Problems kommt Creative Commons ins Spiel.

Creative Commons

Bei den Creative Commons-Lizenzen handelt es sich um eine Art Bausatzsystem für Lizenzen. Dieser Bausatz setzt sich aus den Komponenten BY, SA, NC und ND zusammen. BY beschreibt die Notwendigkeit der Namensnennung bei Nutzung des Werkes. Im Gegensatz zu den anderen Komponenten ist die Namensnennung immer verpflichtend. Die Komponente SA beschreibt die Weitergabe unter gleichen Bedingungen. Das bedeutet, wenn ein Werk unter der Creative Commons-Lizenz CC-BY-SA genutzt wird, so muss das daraus entstehende Werk unter der gleichen Lizenz veröffentlicht werden.

Die NC-Komponente definiert, dass das Werk nicht kommerziell genutzt werden darf. Zum Beispiel darf ein Musikstück, welches unter der Lizenz CC-BY-NC lizenziert ist, privat gehört werden, aber es darf nicht genutzt werden, um es in einem Werbespot einzubinden. Die letzte Komponente ist ND, welche definiert, dass es keine Derivate von dem betreffenden Werk geben darf. Als Nutzer kann ich somit das beispielhafte Musikstück hören, darf aber keinen Remix im Rahmen dieser Lizenz erstellen.

Die Bausteine können kombiniert werden. So könnte ein Werk unter der Lizenz CC-BY-ND oder unter der Lizenz CC-BY-NC-SA veröffentlicht werden. Bestimmte Kombinationen scheiden allerdings aus; so wäre die Kombination CC-BY-ND-SA nicht zielführend, da eine Weiterverbreitung abgeleiteter Werke unter der gleichen Lizenz der Bedingung, das keinerlei Derivate von dem Werk erstellt werden dürfen widerspricht.

Mit dem License Chooser geht die Wahl der passenden Bausteine im Browser leicht von der Hand. Bei der Nutzung sollten die Lizenzbedingungen entsprechend beachtet werden. Fehler werden meist bei der Namensnennung gemacht. Creative Commons definiert diese Pflicht in dem Commons (die gekürzte und für normale Menschen verständliche Form der Lizenz) so:

Namensnennung — Sie müssen angemessene Urheber- und Rechteangaben machen, einen Link zur Lizenz beifügen und angeben, ob Änderungen vorgenommen wurden. Diese Angaben dürfen in jeder angemessenen Art und Weise gemacht werden, allerdings nicht so, dass der Eindruck entsteht, der Lizenzgeber unterstütze gerade Sie oder Ihre Nutzung besonders.

Je nach genutzter Version der Lizenzen ist dies mehr oder weniger kompliziert, wie der Artikel bei iRights näher beleuchtet.

Neben diesen Lizenzen existieren einige weitere Lizenzen aus dem Creative Commons-Universum wie die CC0, welche es ermöglicht die Nutzungsrechte so freizugeben, dass das Werk praktisch Public Domain ist und somit der Gemeinschaft uneingeschränkt zur Verfügung steht. Wichtig ist es bei der Nutzung darauf zu achten, das sich Creative Commons nicht für jedes Werk eignet, so wird von der Lizenzierung von Software unter Creative Commons-Lizenzen expliziert abgeraten. Hier existieren bessere Lizenzen wie die GPL, die Apache- oder die MIT-Lizenz.

Adresse anhand einer Koordinate ermitteln

Im Umfeld von OpenStreetMap existieren eine Reihe von Diensten und APIs. Einer dieser Dienste ist Nominatim. Dabei handelt es sich um einen Geocoding-Dienst auf Basis der OpenStreetMap-Daten. Mithilfe der API kann anhand einer Koordinate in Form von Latitude und Longitude, eine Adresse ermittelt werden. Ein Beispielaufruf könnte wie folgt aussehen:

GET https://nominatim.openstreetmap.org/reverse?lat=53.49567958129127&lon=13.302898406982424&format=json

Gewöhnungsbedürftig an diesem Aufruf ist der Parameter format, über welchen das Format des Response definiert wird. Im Sinne einer sinnvollen REST-API, hätte dies besser über den Header-Parameter Accept gelöst werden sollen. Als Ergebnis erhält der Response die ermittelte Adresse:

{
    "place_id": 239463758,
    "licence": "Data © OpenStreetMap contributors, ODbL 1.0. https://osm.org/copyright",
    "osm_type": "way",
    "osm_id": 626862936,
    "lat": "53.4957878878448",
    "lon": "13.3026220240811",
    "display_name": "Weinbergsweg, Burg Stargard, Stargarder Land, Mecklenburgische Seenplatte, Mecklenburg-Vorpommern, 17094, Deutschland",
    "address": {
        "road": "Weinbergsweg",
        "town": "Burg Stargard",
        "county": "Stargarder Land",
        "state": "Mecklenburg-Vorpommern",
        "postcode": "17094",
        "country": "Deutschland",
        "country_code": "de"
    },
    "boundingbox": [
        "53.4949976",
        "53.4960744",
        "13.3023076",
        "13.3027343"
    ]
}

Neben der Geocoding-Funktionalität enthält der Dienst eine Reihe weiterer Funktionen, welche ihn zu einer Art Suchmaschine für OpenStreetMap-Daten machen. Die offizielle Projektseite des Dienstes ist unter nominatim.org zu finden. Der Quelltext des Dienstes ist auf GitHub zu finden. Das Projekt ist unter der GPL2 lizenziert und damit freie Software.