26. November 2023

Open Source: OpenStreetMap - hvordan startede det?

Hvordan tog den åbne, crowdsourcede kortservice OpenStreetMap sin begyndelse?

Youtubekanalen “Minds Behind Maps” har taget en snak med grundlæggeren Steve Coast, som i 2004 gik i gang med at bygge OSM, da mange andre kortservices var proprietære og kostede penge. Mange frarådede ham at gå i gang, men det lod Steve sig heldigvis ikke gå på af. OSM trives og eksisterer stadig i dag takket være mange menneskers deltagelse i projektet.

Den korte version:

Hvis du er klar på en sofamaraton, kan du se hele snakken i sin vilde næsten 3 timers længde

25. November 2023

Sikker C++

C++’s opfinder Bjarne Stroustrup vil gerne have udviklere til at skrive mere sikker C++ kode, og giver eksempler på, hvad man kan gøre, og hvordan programmeringssprogets fremtid ser ud (temmelig meget alive and kicking!).

24. November 2023

Grafiske touchups - og “styresystemsrant”

Jeg har lavet lidt småjusteringer her på sitet. Jeg var ikke tilfreds med overskueligheden, så jeg har skruet lidt på nogle skriftstørrelser og afstande (hvis ikke du kan se forskel, så prøv at rydde browser-cachen).

Det er i sig selv fantastisk, at man med få virkemidler kan få et andet udtryk frem. F.eks har jeg været lidt mere hardcore med prioriteringen. Prioritering af størrelser og formkontraster ift. primær og sekundær information er et helt felt indenfor grafisk brugerfladedesign, som jeg kan bruge timer på. Timer er nøgleordet, for jeg rammer yderst sjældent det, jeg gerne vil have i første hug.

Noget, jeg muligvis vil kaste mig over til næste år er “Theming” af skrivebordmiljøer på Linux/Unix-platformen. Det kunne også være et emne til en fremtidig guide. Det er blevet mere interessant for mig, fordi ens theme nemt kan distribueres i en Flatpak.

Fremskridt og tilbageskridt

Nogle af skrivebordsmiljøerne blandt Open Source-operativsystemerne er blevet rigtig flotte efterhånden. Andre trænger til en hjælpende hånd, fordi designet emmer af 1995, “beton” og skrifttypevalg- og størrelser, der ikke er konsekvente. Her må jeg dog lige stoppe mig selv lidt, og huske på, at vi er forskellige som mennesker, og at nogle kan lide den slags, som andre synes knap så godt om.

Derfor synes jeg også bare, at hvis man går og summer med én idé, så er det bare med få det ud i verden. Vi bekymrer os generelt alt for meget om, hvad andre - måske - mener, men vi kan dybest set ikke vide det, før idéen er blevet til virkelighed. Og selv der, er det så ikke vigtigst, at vi selv er tilfredse - først?

Det har altid undret mig, at de kommercielle closed-source operativsystemer er gået i den modsatte, antikreative retning. Her har man støt og roligt fjernet mulighederne for at lade kreativiteten råde. Måske har man kigget på brugerdata og ikke fundet det værd at bibeholde de ekstra grafiske tilpasningsmuligheder. Det er ærgerligt. For hvis computere skal have et venligt ansigt, der viser en persons personlige stil, så skal man kunne vælge dens udseende. Styresystemet er jo, ligesom hardwaren, “ansigtet” udadtil.

Windows - altid businessfolket først

Min første PC fra 1993 havde Microsoft Windows 3.1. Den eneste tilpasningsmulighed var, at baggrunden på hele systemet kunne ændres, og vinduernes baggrundsfarve kunne være andet end hvid. Jeg tror, der var 16 forudbestemte forgrundsfarver at vælge mellem, som måske faldt sammen med at EGA-video stadig fandtes?

Det er dog Windows 95, der kendetegner den første grafiske skifte, jeg husker for alvor. Jeg blev blæst bagover - jeg havde fået fat på en betaudgave, kan jeg huske. Og selvom den havde sine fejl, så gad jeg simpelhen ikke tilbage til Windows 3.1.

Windows 95 bootede med en grå bundbjælke, den kunne man bestemme farven på.. Fancy! Jeg havde tilmed meget sjov ud af Microsoft Plus-pakken, som tilføjede noget ekstra personlighed til brugerfladen i form af nye baggrunde og cursorgrafik. Microsoft udgav f.eks også Microsoft Bob til børn. Man kan sagtens, især som voksen, mene at det er noget pop, men det var interessant, at IT-giganten prøvede at udforske mulighederne for at personliggøre computeren noget mere, end hvad vi ellers havde set.

Senere legede jeg meget med Stardock Windowsblinds. Det findes endda stadig! Men læg mærke til, at det er et 3. parts program. Microsoft har altid gerne villet diktere en bestemt businessagtig stil, og imens har man langsomt, men sikkert udfaset mulighederne for tilpasning “by design”.

Ser jeg tilbage igen, så var Windows XPs brugerflade en kende for farveladeagtig, men det var samtidig et udtryk for, tror jeg, at man ville tilføre noget friskhed, og det lykkes. Microsoft er - som før nævnt - sidenhen faldet tilbage til et afdæmpet businesslook. Windows 11 er ganske ok, det gavner lidt, at Microsoft måske er faldet lidt i gryden med Apple-juice, men der mangler stadig noget identitet. Skal jeg nævne noget næsten nutidigt banebrydende Microsoft-design… Hmmm, så ville det formentlig være Windows Mobile med Tile-looket. Om man kunne lide det - tja, smagssag - men man har sikkert haft det sjovt i UI-designafdelingen.

Konsistent design, men hvor er vildskaben, Apple?

Apple har været rimeligt konsistente i deres designsprog. Runde, organiske former og aluminium-look har en tidløs friskhed over sig. Men deres designs er også udtryk for en sikker stil, som helst ikke må sprælle for meget. Du kan i MacOS ændre baggrundsskærmen, vælge accentfarver på f.eks dropdownknapperne, og bestemme dig for et mørkt eller lyst farveskema - det er mere eller mindre det.

MacOS (OSX) har ikke ændret sig ret meget over årene, der er blevet fjernet nogle gradienter og emboss effekter, så det er holdt opdateret, men stadig konservativt friskt. De manglende valgmuligheder hæmmer et image, der ellers gerne vil signalere ungdommelighed og kreativitet. Man husker 1984-reklamen, hvor Apple udfordrer de tunge businessdrenge. De er sådan lidt selv endt der i takt med, at personerne på chefgangen er blevet gråhårede ;-)

Jeg husker plastik-Mac’en iMac G3 fra sidst i 90′erne. Den var tidstypisk modig, og rippede op i en computerbranche, de på daværende tidspunkt var fikseret på basefarvede plastik- eller aluminiumskabinetter. Det er den på sin vis stadig. Man kan godt savne den vildskab helt generelt, for uanset om man kunne lide modellen eller ej, så signalerede den rebelskhed overfor en fastlåst branche. Der må være andre udover Apple, der kan gøre computeren til et pænt stuemøbel? Selvom en del af Apples succes ligger i at kunne læse markedet, så bunder noget af deres succes også i, at de andre producenter ikke engang prøver at udfordre på f.eks designvalg. Jo, jo - der popper forsøg op fra f.eks Lenovo indimellem såsom Ideacenter Mini eller HPs All-in-One-modeller, men det er svært at vide, om det er et udvalg, der hænger ved.

Når nu Apple i dag lancerer hardware i forskellige farver, så der også være mulighed for mere “spænding” på desktop’en. Der er ingen, der siger, at man skal skrotte det nuværende look, hvis det er det, der behager flertallet. Apple kunne sagtens tilbyde ekstra tilpasningsmuligheder. Hvis de øvrige Unix-varianter kan, så kan MacOS-desktoppen også. For kreativitetens skyld.

Win-win med Open Source-desktoppen

Hvor de kommercielle closed-source systemer rent grafisk efter min mening står i stampe, så står Open Source-miljøet i stærk kontrast.

Muligheden for theming har været der i årtier på både Linux og mange andre Unix-varianter (BSD’erne, HaikuOS). Det er en funktion, der har undveget mainstream-pressen, fordi emnet anses for at være for nørdet, og derfor behandles den også ret sjældent af Open Source-fokuserede medier. Det er en skam, for det viser noget af fleksibiliteten på platformene og i forhold til at bidrage med din egen stil på din computer.

Du kan vælge at gå med det design som Gnome og KDE-designerne har valgt, eller du kan lave dit eget, hvis du har lyst, fordi værktøjerne er der. Det er ikke altsammen lige pænt, men min holdning er i grunden irrelevant. Nogen har kastet sin sjæl ind i at udtrykke sig, og det fede er at smag er forskellig. Så det, jeg finder grimt, kan du sagtens finde rigtig flot. Det er sådan, det skal være, for det kommer der forskellige løsninger ud af.

Her er nogle nutidige eksempler på KDE og Gnome-desktops:

https://store.kde.org/p/1897311
https://store.kde.org/p/1669399
https://store.kde.org/p/1306014
https://store.kde.org/p/2083469
https://www.gnome-look.org/p/1898573
https://www.gnome-look.org/p/1995443
https://www.gnome-look.org/p/1125197

Det skal siges, at der er en lang række andre skrivebordsmiljøer, end blot de viste:
XFCE, i3, Sway, Mate og Cinnamon kan også tilpasses. Nogle designs imiterer tydeligvis Microsoft Windows og Apple MacOS. Det tolker jeg som om, at brugerne grundlæggende er vilde med GUI-designet på de platforme, men gerne vil have de friheder, deres open source OS tilbyder.

Se, nu endte min simple opdatering jo egentlig i den vildeste “rant”. Det er det, der sker, når man funderer for meget. Nå, videre i teksten - nu har jeg jo lagt i kakkelovnen til, at skulle lave nogle vilde themes. Ups.

(beklager mangel på thumbnails, men blogsoftwarens billeddel lader noget tilbage at ønske)

Generel indgang til de to theme stores

KDE Global Themes
Gnome Look

20. November 2023

Ud at se med The Fediverse

Det kan være lidt en kamp at holde sig opdateret på, hvad der foregår i The Fediverse af nye tiltag, for det føles uendeligt stort. Men jeg følger primært to Mastodon-konti, som jeg synes gør et fantastisk arbejde med at samle trådene.

The Fediverse Report
This week in the Fediverse

Jeps, de findes på hver sin Mastodon-server, men du kan følge dem uanset hvilken Fediverse-forbundet server, du selv sidder på.

Noget, der også har trukket overskrifter for nylig har været, at Fediversets mest populære service Mastodon har flere brugere end først antaget. Det kan du læse om her hos Techcrunch

Tilmed, så har Flipboard annonceret, at de drosler ned for aktiviteterne på X, og vil i stedet koncentrere sig om åbne, decentrale sociale medier, såsom Mastodon, Bluesky mv. Det er godt nyt, da Flipboard hiver en masse brugere med sig.

Mastodon-admin’en @jaz, der driver toot.wales har lavet en liste over organisationer, der driver deres egen Fediverse-server

17. November 2023

Linux Flatpaks II: Byg en Flatpak

Med del I i mente, så dykker vi nu dybere ned i Flatpaks. Vi bygger en simpel Flatpak, så… Hvordan gør vi lige det? (er det nu, jeg skal sige, at det ved jeg heller ikke? **Cue end-credits**). Nej, pjat ;-) … Vi starter blødt ud, og bygger så mere og mere på i del III og IV.

Installation af Flatpak

Installationsproceduren ift. Flatpak-værktøjerne er forskellig fra Linux-distribution til distribution. Canonical har f.eks valgt, at Ubuntu, som er en af de mest populære Linux-distributioner, skal bruge deres eget distributionsformat Snaps, fra og med Ubuntu 24.04. Det betyder, at man skal installere Flatpak-komponenter selv. En ærgerlig løsning, for det er et af de steder, jeg gerne ville se noget standardisering. Linux-distributionen Fedora har allerede Flatpak-funktionalitet integreret.

Jeg bruger Ubuntu, og vi vil selv bestemme, vil vi, så du kan installere Flatpaks terminalværktøj ved at gå til https://flathub.org/da/setup og find din Linux-distribution. Dernæst følger du bare guiden derinde. Vil du gerne skyde genvej kan du tilføje flatpak-builder allerede nu, og bruger du Ubuntu eller Debian, så skriv:

$ apt install flatpak flatpak-builder

(dollartegnet viser blot, at vi befinder os i terminalen, så det skal ikke med).

Får du at vide, at Flatpak allerede er installeret, så behøver du ikke gøre ydeligere. Du kan teste om din Flatpak installation virker ved at skrive:

$ flatpak search blender

og så skulle du gerne se en række resultater. Hvis du af en eller anden grund ikke kan se nogle Flatpaks, så kan det være, du mangler at koble Flatpak på et repository. De fleste associerer Flatpak-repo’et Flathub med Flatpak, så det kobler vi os på. Det bliver vildere senere i guideføljetonen her (del IV), da skal vi selv prøve at lave vores eget lokale Flathub (dundundun… lidt af en cliffhanger, hva’?!).

Flatpak-repos virker i øvrigt akkurat ligesom git, så du kan tilføje Flathub med:

$ flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo

Grafiske frontends til Flatpaks

Et kort lille ophold i guiden, fordi… Jeg vil gerne lige anbefale nogle udvidelser til funktionaliteten i din distributions Software Center.

Gnome Software Center
Som beskrevet i starten, så har mange distroer baseret på Gnomes skrivebordsmiljø allerede Flatpak og dens Software Center-udvidelser installeret, men hvis det ikke tilfældet for din, så kan det tilføjes.

$ sudo apt install gnome-software-plugin-flatpak

Om alt går vel, så når du derefter åbner Gnome Software Center, og klikker på en app, vil du i øverste højre hjørne se, at der står “Flathub (Flatpak)” i dropdown-menuen. Bruger du Ubuntu ligesom jeg, så kan du med fordel installere Gnome Software Center i stedet for Canonicals variant.

KDE Discover

Bruger du KDE som dit skrivebordsmiljø, så er det muligt, du skal installere et tillægsmodul til “Discover”, som er KDEs Software Center. Men test om du kan åbne en Flatpak inden du forsøger. For det kan være, at funktionaliteten allerede er installeret, afhængig af hvilken Linux-distribution, du bruger. Ellers finder du tillægsmodulet her: https://apps.kde.org/da/discover.flatpak/

Flatpaks er “sandboxed”

Efter denne lille detour kan vi prøve at bygge vores første Flatpak. Vi skal bruge en 4 ting, en “runtime” og et SDK - Software Development Kit, og en manifest-fil, og så dit program, script eller lign.

Der findes tre forskellige runtimes, FreeDesktop, KDE og Gnome. Runtimen pakkes med ned sammen med din app i din færdige Flatpak, og sørger for, at pakken virker som en native compiled app.

Det er lidt en omstændig arbejdsgang, men måske husker du fra del I, at jeg skrev at Flatpaks var sandboxed? De har slet ikke adgang til det omkringliggende miljø, derfor skal vi bruge dels runtimen, SDK’et, men også manifest-filen til at specificere, hvilke rettigheder Flatpak’en skal have. Freedesktop-runtimen har det mest minimale sæt af “tilbehør”, så det er målet for vores første Flatpak.

En tur i sandkassen

Jeg anbefaler, at du først laver en hel ny mappe, som skal indeholde alt, der har med din kommende Flatpak at gøre. Dvs. at du lige om lidt har et shell-script og en manifest-fil i mappen.

Og så skal vi have installeret runtime og SDK. Installationsmetoden til runtime og SDK er sakset direkte fra dokumentationen til Flatpak

$ flatpak install flathub org.freedesktop.Platform//23.08 org.freedesktop.Sdk//23.08

Jeg valgte Freedesktops-udgave, da det er den mest grundlæggende. KDE, Elementarys og Gnomes varianter er alle overbygninger. Du skal nok påregne, at det vil æde ca. 500MB+ af din computers diskplads, men står i skærende kontrast til, hvad Windows SDK’et fylder til sammenligning ;-)

Efter endt installation, sakser jeg lige lidt mere fra dokumentationen. Kast følgende kode i en ny fil, navnet er valgfrit, men kunne f.eks være ‘hello.sh’ for at følge Flatpak-doc’en:

#!/bin/sh
echo "Hello world, from a sandbox"

Manifestet
Nu kommer vi så til manifestet, manifestet vil jeg egentlig helst sammenligne med en bageopskrift. Det fortæller, hvordan systemet skal bygge og afvikle din Flatpak, og den del synes jeg mangler lidt mere beskrivelse end det, der står i Flatpak-dokumentationen, så tillad mig at uddybe:

Først sakser vi lige “bageopskriften” - manifestet - fra Flatpak-dokumentationen - imens jeg beder til, at mit Flatpress-blogsystem formaterer koden korrekt. Fordi eftersom manifestet kan være en YAML eller JSON-fil (herunder er den i YAML-format), så er det vigtigt hvordan indrykninger laves, se f.eks strukturen efter modules-afsnittet, hvor der er indryk:

app-id: org.flatpak.Hello
runtime: org.freedesktop.Platform
runtime-version: '23.08'
sdk: org.freedesktop.Sdk
command: hello.sh
modules:
  - name: hello
    buildsystem: simple
    build-commands:
      - install -D hello.sh /app/bin/hello.sh
    sources:
      - type: file
        path: hello.sh

Forklaring til de enkelte dele:

app-id: et unikt ID til din Flatpak, læg specielt mærke til, at det er omvendt notation i forhold til en website-adresse. Jeg ville f.eks normalt bruge app-id’et dk.simonjustesen.Hello til denne test-Flatpak, hvis den skulle udgives på f.eks Flathub. Du skal bl.a. bruge app-id’et som præfix på de elementer, du vil have i din færdige Flatpak-pakke. Det kigger vi mere på i del III. Lige nu er det, det mest basale først.
runtime: den valgte runtime
runtime-version: - versionsnr. på den valgte runtime.
sdk: - det valgte SDK
command: - kommando, der udføres, når Flatpak’en startes

Modules-afsnittet

Du kan have et eller flere moduler, hvis en del af din Flatpak er afhængig af en anden.

name: Navn på dette modul
buildsystem: - kan f.eks være “simple”, “cmake-ninja” og “meson”, “qmake”. Du kan således delegere byggeriet over til andre buildsystems.
build-command: Et array af build-kommandoer, der skal køres. I manifestet ovenfor installerer vi hello.sh ind i /app/bin/hello i Flatpak’ens sandkasse. Valgmuligheden -D på install-kommandoen betyder, at vi giver lov til at oprette både ‘app’ og ‘bin’-mapperne, som ‘hello’-scriptet placeres i, inde i Flatpak’en.

Le grande finale

Nu er der egentlig kun tilbage at køre

flatpak-builder build-dir org.flatpak.Hello.yaml

som vil bygge din Flatpak, dernæst kan du testkøre den lokalt med:

flatpak-builder --run build-dir org.flatpak.Hello.yaml hello.sh

Nu skulle du så gerne se outputtet af din hello.sh-scriptfil.

Det var det… Eller var det? Andre guider ville måske slippe dig løs her, men vi er ikke færdige endnu. Af hensyn til opslagets længde vil jeg dog fortsætte i part III, som jeg poster så hurtigt, jeg kan.