We have clarified our Privacy Statement. Please have a look at our changes.

#4 Inhalt erarbeiten

Open
opened 2 months ago by davidak · 9 comments
davidak commented 2 months ago

Was ist denn nun gute Software?

Mit Menschen sprechen, die dazu eine Meinung haben.

Punkte mit Argumenten belegen.

Links zu weiterführenden Informationen.

Was ist denn nun gute Software? Mit Menschen sprechen, die dazu eine Meinung haben. Punkte mit Argumenten belegen. Links zu weiterführenden Informationen.
davidak commented 1 month ago
Owner

Brainstorming

Was ist gute Software?

  • Nachhaltige Entwicklung
    • Nachhaltig finanziert durch Nutzer (freiwilliger, kleiner, monatlicher Beitrag)
    • wartbarer Code (lesbar, einfach verständlich, kommentiert, dokumentiert)
    • verwendet zukunftsfähige Technik (Programmiersprache, Bibliotheken, Algorythmen, Formate)
  • Transparente Entwicklung: Wie viel Geld wird wofür gebraucht? Wofür wurde es ausgegeben? Wie wird Entwickelt? (Programmiersprache, Infrastruktur, …)
  • Bedarfsorientierte Entwicklung (für Nutzer, nicht profitinteressen) “Wer sind die Nutzer? Was brauchen sie?”
  • UNIX Philosophie: „Mache nur eine Sache und mache sie gut.“ oder zumindest modular
  • offener Quellcode (jeder kann das Programm untersuchen, weiterentwickeln und bauen/paketieren)
  • offene Standards (Kompatibilität)
  • Copyleft (kann nicht unfrei gemacht werden. (A,L)GPL, CC-BY-SA)
  • kollaborative Entwicklung (Nutzer können sich einbringen, Programmierer können mitentwickeln, Sicherheitsforscher können nach Sicherheitslücken schauen)
  • Zugänglich
    • intuitive Bedienung (Usability / User Experience)
    • Plattformunabhängig (läuft auf vielen populären Plattformen: GNU/Linux, macOS, Windows, BSD, Android, iOS) ? (hat z.B. speziell für elementary OS designte Software nicht bessere Nutzererfahrung? ja, aber ist weniger zugänglich)
    • einfache Installation (Pakete in GNU/Linux-Distributionen, AppImage, DMG, EXE, Anleitung zum selbst bauen)
    • möglichst geringer Ressourcenbedarf (Speicherplatz, RAM, CPU, Netzwerk)
    • läuft daher auch auf schwacher Hardware (alte, günstige oder energiesparsame)
    • Auffindbar (Gute Präsentation, über Suchmaschinen zu finden, in Verzeichnissen zu finden, Berichte ermöglichen, z.B. durch Interviews, Lightningtalk auf passender Konferenz, Werbung?)
    • Übersetzt in die Sprache der Benutzer
    • Accessibility
  • Sicher
    • Sicherheitslücken werden vermieden und schnell geschlossen
    • schützt Privatsphäre (keine unnötigen Daten sammeln, transparent welche wofür gesammelt werden)
  • Zuverlässig (läuft stabil, Fehler werden vermieden und schnell behoben)
  • Performant (erledigt Aufgaben möglichst schnell)
  • Es gibt Support durch die Nutzer und Entwickler (z.B. in einem Forum oder Chat?) Wenn viel Geld da ist auch support Mitarbeiter bezahlen. Externe Können Geld mit Support verdienen.
  • Aktiv gepflegt, regelmäßig Updates (Änderungen werden zeitnah veröffentlicht)
  • Es gibt mindestens 2 Maintainer (Bus-Faktor verringern), die auf alles Zugriff haben (Repository, Website, Domain, Geld, …)
  • hat viele zufriedene Nutzer? (wenn nicht gibt es probleme. entweder qualität ist schlecht (unzufrieden) oder potentielle nutzer finden es nicht (wenig oder keine nutzer))

Wie entwickelt man gute Software?

Best Practices sammeln für Entwickler. Techniken, Methoden, Werkzeuge, Lizenzen und Philosophie.

  • Planung (Was brauchen die Nutzer? UX Studie. Wie setzt man es technisch gut um? Langfristig denken!)
  • Clean Code?
  • idiomatic code
  • human-centered design
  • user experience design
  • Austausch von Entwicklern
  • Fehler erkennen durch Unit tests, Integration tests
  • Continuous Integration (Tests)
  • Code Review (Merge Request-Workflow)
  • Continuous Delivery (Build-Prozess und Auslieferung automatisiert. Effizient und vermeidet Fehler)
  • Reproducible Builds (Nachvollziehbarkeit von Paketen -> Sicherheit, Fehler in Build-Infrastruktur frühzeitig bemerken, …)
  • Ticketsystem für Fehlerberichte und Verbesserungsvorschläge
  • Organisation: Milestones nutzen, Beta version veröffentlichen zum testen
  • Unabhängig (Verwendete Tools und Infrastruktur sind auch freie Software, unabhängig betrieben und finanziert. Kein GitHub, GitLab, Travis, CodeClimate, PHPStorm, JIRA etc)
  • CII Best Practices Badge bekommen https://github.com/coreinfrastructure/best-practices-badge/blob/master/doc/criteria.md + https://github.com/coreinfrastructure/best-practices-badge/blob/master/doc/other.md
  • Form follows function / Methode folgt Problem
  • Wissen teilen, alles dokumentieren (Organisation, Prozesse, Learnings, …)
  • Outreach, kommunikation mit interessierten

Zusätzlich Dokumentation für Entwickler mit praktischen Tipps, zu verschiedenen Programiersprachen, Themen, Automatisierung, CI/CD etc?

Quellen

# Brainstorming ## Was ist gute Software? - Nachhaltige Entwicklung - Nachhaltig finanziert durch Nutzer (freiwilliger, kleiner, monatlicher Beitrag) - wartbarer Code (lesbar, einfach verständlich, kommentiert, dokumentiert) - verwendet zukunftsfähige Technik (Programmiersprache, Bibliotheken, Algorythmen, Formate) - Transparente Entwicklung: Wie viel Geld wird wofür gebraucht? Wofür wurde es ausgegeben? Wie wird Entwickelt? (Programmiersprache, Infrastruktur, ...) - Bedarfsorientierte Entwicklung (für Nutzer, nicht profitinteressen) "Wer sind die Nutzer? Was brauchen sie?" - [UNIX Philosophie](https://de.wikipedia.org/wiki/Unix-Philosophie): „Mache nur eine Sache und mache sie gut.“ oder zumindest modular - offener Quellcode (jeder kann das Programm untersuchen, weiterentwickeln und bauen/paketieren) - offene Standards (Kompatibilität) - Copyleft (kann nicht unfrei gemacht werden. (A,L)GPL, CC-BY-SA) - kollaborative Entwicklung (Nutzer können sich einbringen, Programmierer können mitentwickeln, Sicherheitsforscher können nach Sicherheitslücken schauen) - Zugänglich - intuitive Bedienung (Usability / User Experience) - Plattformunabhängig (läuft auf vielen populären Plattformen: GNU/Linux, macOS, Windows, BSD, Android, iOS) ? (hat z.B. speziell für elementary OS designte Software nicht bessere Nutzererfahrung? ja, aber ist weniger zugänglich) - einfache Installation (Pakete in GNU/Linux-Distributionen, AppImage, DMG, EXE, Anleitung zum selbst bauen) - möglichst geringer Ressourcenbedarf (Speicherplatz, RAM, CPU, Netzwerk) - läuft daher auch auf schwacher Hardware (alte, günstige oder energiesparsame) - Auffindbar (Gute Präsentation, über Suchmaschinen zu finden, in Verzeichnissen zu finden, Berichte ermöglichen, z.B. durch Interviews, Lightningtalk auf passender Konferenz, Werbung?) - Übersetzt in die Sprache der Benutzer - Accessibility - Sicher - Sicherheitslücken werden vermieden und schnell geschlossen - schützt Privatsphäre (keine unnötigen Daten sammeln, transparent welche wofür gesammelt werden) - Zuverlässig (läuft stabil, Fehler werden vermieden und schnell behoben) - Performant (erledigt Aufgaben möglichst schnell) - Es gibt Support durch die Nutzer und Entwickler (z.B. in einem Forum oder Chat?) Wenn viel Geld da ist auch support Mitarbeiter bezahlen. Externe Können Geld mit Support verdienen. - Aktiv gepflegt, regelmäßig Updates (Änderungen werden zeitnah veröffentlicht) - Es gibt mindestens 2 Maintainer (Bus-Faktor verringern), die auf alles Zugriff haben (Repository, Website, Domain, Geld, ...) - hat viele zufriedene Nutzer? (wenn nicht gibt es probleme. entweder qualität ist schlecht (unzufrieden) oder potentielle nutzer finden es nicht (wenig oder keine nutzer)) ## Wie entwickelt man gute Software? Best Practices sammeln für Entwickler. Techniken, Methoden, Werkzeuge, Lizenzen und Philosophie. - Planung (Was brauchen die Nutzer? UX Studie. Wie setzt man es technisch gut um? Langfristig denken!) - Clean Code? - idiomatic code - human-centered design - user experience design - Austausch von Entwicklern - Fehler erkennen durch Unit tests, Integration tests - Continuous Integration (Tests) - Code Review (Merge Request-Workflow) - Continuous Delivery (Build-Prozess und Auslieferung automatisiert. Effizient und vermeidet Fehler) - Reproducible Builds (Nachvollziehbarkeit von Paketen -> Sicherheit, Fehler in Build-Infrastruktur frühzeitig bemerken, ...) - Ticketsystem für Fehlerberichte und Verbesserungsvorschläge - Organisation: Milestones nutzen, Beta version veröffentlichen zum testen - Unabhängig (Verwendete Tools und Infrastruktur sind auch freie Software, unabhängig betrieben und finanziert. Kein GitHub, GitLab, Travis, CodeClimate, PHPStorm, JIRA etc) - CII Best Practices Badge bekommen https://github.com/coreinfrastructure/best-practices-badge/blob/master/doc/criteria.md + https://github.com/coreinfrastructure/best-practices-badge/blob/master/doc/other.md - Form follows function / Methode folgt Problem - Wissen teilen, alles dokumentieren (Organisation, Prozesse, Learnings, ...) - Outreach, kommunikation mit interessierten Zusätzlich Dokumentation für Entwickler mit praktischen Tipps, zu verschiedenen Programiersprachen, Themen, Automatisierung, CI/CD etc? ## Quellen - https://media.ccc.de/v/bub2018-163-jeder_sollte_fur_infos_und_software_zahlen - https://media.ccc.de/v/thms-42-konviviale-software-vor-und-jenseits-des-digitalen-kapitalismus - https://media.ccc.de/v/thms-49-ber-die-nachhaltigkeit-von-software - https://mako.cc/writing/hill-free_tools.html - https://media.zat.im/videos/watch/1f692bc8-6d78-445b-b74a-7c995700fb3e - https://opensource.guide/best-practices/ - https://opensource.guide/finding-users/ - https://bestpractices.coreinfrastructure.org/en - https://media.ccc.de/v/froscon2017-2005-funding_fur_open_source_wer_wie_und_warum - https://media.ccc.de/v/34c3-9087-organisational_structures_for_sustainable_free_software_development
davidak commented 1 month ago
Owner

Per E-Mail:

Gute Software löst „Probleme“ von Anwendern ohne ihnen dabei im Weg zu stehen auf einfache unproblematische weise. Mit Guter Software zu Arbeiten macht spaß.

Per E-Mail: Gute Software löst „Probleme“ von Anwendern ohne ihnen dabei im Weg zu stehen auf einfache unproblematische weise. Mit Guter Software zu Arbeiten macht spaß.
davidak commented 1 month ago
Owner

Bei Messengern: offline-tauglich. Also ähnlich wie klassische Mail oder NNTP im Batch-Modus.

Quelle: https://chaos.social/@vampirdaddy/102928096893553294

Bei Messengern: offline-tauglich. Also ähnlich wie klassische Mail oder NNTP im Batch-Modus. Quelle: https://chaos.social/@vampirdaddy/102928096893553294
davidak commented 1 month ago
Owner
  • Bei der erst Bedienung mit minimalen Kenntnissen bereits erfolge.
  • Einen Experten Knopf kann ich unterschreiben.
  • Bei alter Software wäre ein Deprecated Setting praktisch um explizit Funktionen angezeigt zu bekommen die man plant herauszuwerfen. So könnte man auch leicht die Oberfläche frisch halten. Bzw. Mindestens Zwei Oberflächen. Die alte und die neue.
  • Ein changelog. Die lese ich immer gerne. Sogar solche wie sie z.B. lineageos anbietet.
  • Wartezeit muss erklärbar sein.
  • Speicherstand muss erkennbar sein.
  • Funktionierende Hilfe. Wenn kein Hilfeeintrag besteht könnte man auch in ein Forenthema verlinken, das den Titel der Funktion trägt um nachfragen zu können (auszeichnen!).
  • Es wäre schön wenn ich sagen könnte das GPL bei mir ein killer Kriterium ist. Bei mir ist das aber blos eine Entscheidungshilfe mit hoher Priorität.
  • Sobald es um Sicherheit geht suche ich nach Testberichten. Interessanterweise kenne ich keine renommierte Tester also orientiere ich mich da an Meldungen bei heise.de, golem. de und fefe.de. Ich finde einfach das gewisse Software mal irgendwo auseinander genommen worden sein muss um sicher zu sein, zumindest nicht in eine offensichtliche Falle zu laufen.

Quelle: https://social.federatedservices.ch/display/4f6040c2-105d-9cae-0ed6-07f806044265

- Bei der erst Bedienung mit minimalen Kenntnissen bereits erfolge. - Einen Experten Knopf kann ich unterschreiben. - Bei alter Software wäre ein Deprecated Setting praktisch um explizit Funktionen angezeigt zu bekommen die man plant herauszuwerfen. So könnte man auch leicht die Oberfläche frisch halten. Bzw. Mindestens Zwei Oberflächen. Die alte und die neue. - Ein changelog. Die lese ich immer gerne. Sogar solche wie sie z.B. lineageos anbietet. - Wartezeit muss erklärbar sein. - Speicherstand muss erkennbar sein. - Funktionierende Hilfe. Wenn kein Hilfeeintrag besteht könnte man auch in ein Forenthema verlinken, das den Titel der Funktion trägt um nachfragen zu können (auszeichnen!). - Es wäre schön wenn ich sagen könnte das GPL bei mir ein killer Kriterium ist. Bei mir ist das aber blos eine Entscheidungshilfe mit hoher Priorität. - Sobald es um Sicherheit geht suche ich nach Testberichten. Interessanterweise kenne ich keine renommierte Tester also orientiere ich mich da an Meldungen bei heise.de, golem. de und fefe.de. Ich finde einfach das gewisse Software mal irgendwo auseinander genommen worden sein muss um sicher zu sein, zumindest nicht in eine offensichtliche Falle zu laufen. Quelle: https://social.federatedservices.ch/display/4f6040c2-105d-9cae-0ed6-07f806044265
davidak commented 1 month ago
Owner

@davidak gute Software sollte intuitiv und leicht zu bedienen sein. Für Einsteiger/innen ist es hilfreich die Oberfläche von unnötigen Ballast zu befreien. Dies kann für Profis hinderlich sein, da Einstellmöglichkeiten fehlen. Daher ist ein optionaler Advanced Mode hilfreich (Beispiel VLC). Über die Aspekte der Freiheit brauche ich ja nix zu schreiben. Wichtig ist auch die Zugänglichkeit für Menschen mit Einschränkungen.

@lioh sehr schön, vielen dank. tatsächlich würde mich interessieren, ob copyleft sehr wichtig ist oder ob eine permissive open source lizenz reicht. ich denke es ist sehr wichtig und habe ein paar argumente. welche fallen dir ein?

@davidak für mich zählen nur Freie Lizenzen. Alles was grün ist: https://www.gnu.org/licenses/license-list.de.html

@lioh Freie Software ist klar. Es gibt aber noch den Unterschied zwischen “freizügigen” (MIT, Apache, CC-BY) und “Copyleft” (GPL, CC-BY-SA). Letztere schützt das Werk davor unfrei zu werden. Werke mit ersteren Lizenzen dürfen in proprietärer Software verwendet werden ohne Verbesserungen zurückzugeben. Ich finde das schadet der freien Software und stärkt proprietäre sowie profitorientierte Unternehmen. Als Entwickler nehme ich GPL, aber sonst benutze ich auch andere freie Software.

Quelle: https://fosstodon.org/@lioh/102925802894858632

@davidak gute Software sollte intuitiv und leicht zu bedienen sein. Für Einsteiger/innen ist es hilfreich die Oberfläche von unnötigen Ballast zu befreien. Dies kann für Profis hinderlich sein, da Einstellmöglichkeiten fehlen. Daher ist ein optionaler Advanced Mode hilfreich (Beispiel VLC). Über die Aspekte der Freiheit brauche ich ja nix zu schreiben. Wichtig ist auch die Zugänglichkeit für Menschen mit Einschränkungen. @lioh sehr schön, vielen dank. tatsächlich würde mich interessieren, ob copyleft sehr wichtig ist oder ob eine permissive open source lizenz reicht. ich denke es ist sehr wichtig und habe ein paar argumente. welche fallen dir ein? @davidak für mich zählen nur Freie Lizenzen. Alles was grün ist: https://www.gnu.org/licenses/license-list.de.html @lioh Freie Software ist klar. Es gibt aber noch den Unterschied zwischen "freizügigen" (MIT, Apache, CC-BY) und "Copyleft" (GPL, CC-BY-SA). Letztere schützt das Werk davor unfrei zu werden. Werke mit ersteren Lizenzen dürfen in proprietärer Software verwendet werden ohne Verbesserungen zurückzugeben. Ich finde das schadet der freien Software und stärkt proprietäre sowie profitorientierte Unternehmen. Als Entwickler nehme ich GPL, aber sonst benutze ich auch andere freie Software. Quelle: https://fosstodon.org/@lioh/102925802894858632
davidak commented 1 month ago
Owner

@davidak ist vielleicht ein bisschen spezifisch, aber glaubich wichtig:

  • kryptographische identitäten: text-namen können trivial gestohlen werden. signaturen nicht.
  • unzensierbarkeit: jede filterung sollte dem user unterliegen.
  • server vermeiden.
  • keine werbung.
  • bei web-apps: alles was ohne js oder cookies möglich ist, sollte nicht von ihnen abhängen

@sofia ja, sehr spezifisch, aber guter gedanke. danke! wie würde “server vermeiden” bei sowas wie mastodon oder messanger aussehen? peer-to-peer? hat in der praxis nachteile, gerade auf mobilen geräten. ich denke oft ist federation ein guter kompromiss.

@davidak prinzipiell p2p, ja. ich bin mir nicht sicher wie groß die nachteile auf mobile wirklich sind. aber im zweifel kann ma sowas wie relay-server haben, die müssen aber halt nicht wissen was sie da transportieren/bündeln und können wahrscheinlich kleine billige ethernet-sticks sein die ma sich zuhause in den router steckt oder so..

@davidak aber auch in föderierten systemen währen cryprographische identifier sehr sinnfoll. das würde den servern sehr viel missbrauchpotenzial nehmen, und ma könnte eine identität auf mehreren servern haben..

@sofia ich glaube https://jami.net/ aka Ring macht sowas. man erstellt zertifikate oder sowas und kann die dann in anderem client importieren. macht es für benutzer aber schwerer als einfach name eingeben… oder könnte das alles transparent im hintergrund laufen, ohne dass der benutzer davon was merkt?

@davidak nunja, mit federation muss ma ja auch immer den server eingeben/sich merken. und dann ist unsicher der standard und ma brauch einen zweiten schritt um sich zu verifizieren. ich mag ja kontaktaustausch via QR-code, oder einen bunten code der dann vielleich einen gewissen visuellen wiedererkennungswert hat.. 🤷

Quelle: https://chaos.social/@sofia/102926273945261312

@davidak ist vielleicht ein bisschen spezifisch, aber glaubich wichtig: * kryptographische identitäten: text-namen können trivial gestohlen werden. signaturen nicht. * unzensierbarkeit: jede filterung sollte dem user unterliegen. * server vermeiden. * keine werbung. * bei web-apps: alles was ohne js oder cookies möglich ist, sollte nicht von ihnen abhängen @sofia ja, sehr spezifisch, aber guter gedanke. danke! wie würde "server vermeiden" bei sowas wie mastodon oder messanger aussehen? peer-to-peer? hat in der praxis nachteile, gerade auf mobilen geräten. ich denke oft ist federation ein guter kompromiss. @davidak prinzipiell p2p, ja. ich bin mir nicht sicher wie groß die nachteile auf mobile wirklich sind. aber im zweifel kann ma sowas wie relay-server haben, die müssen aber halt nicht wissen was sie da transportieren/bündeln und können wahrscheinlich kleine billige ethernet-sticks sein die ma sich zuhause in den router steckt oder so.. @davidak aber auch in föderierten systemen währen cryprographische identifier sehr sinnfoll. das würde den servern sehr viel missbrauchpotenzial nehmen, und ma könnte eine identität auf mehreren servern haben.. @sofia ich glaube https://jami.net/ aka Ring macht sowas. man erstellt zertifikate oder sowas und kann die dann in anderem client importieren. macht es für benutzer aber schwerer als einfach name eingeben... oder könnte das alles transparent im hintergrund laufen, ohne dass der benutzer davon was merkt? @davidak nunja, mit federation muss ma ja auch immer den server eingeben/sich merken. und dann ist unsicher der standard und ma brauch einen zweiten schritt um sich zu verifizieren. ich mag ja kontaktaustausch via QR-code, oder einen bunten code der dann vielleich einen gewissen visuellen wiedererkennungswert hat.. 🤷 Quelle: https://chaos.social/@sofia/102926273945261312
davidak commented 1 month ago
Owner

Mindmap

Übergeordnete Themen

## Mindmap Übergeordnete Themen
davidak commented 1 month ago
Owner

Beim Übertragen der Punkte auf die Webseite ergaben sich folgende Fragen:

  • Sollen weiterführende Links zu einer möglichst neutralen und differenzierten Quelle führen, die auch Kritik beinhaltet (Wikipedia) oder zu einer, die meiner Meinung ist (FSFE)?
  • Sollen übliche Bezeichnungen verwendet werden, auch wenn sie englisch sind, oder deutsche Begriffe, die leichter verständlich sind? (z.B. User Experience vs Nutzungserlebnis)
  • Was für eine Sprache soll verwendet werden? Eher technisch, sachlich, oder sprechend und einfach verständlich?
  • Differenzierte Argumente für die Standpunkte als Kommentar im Quelltext oder auf der Seite?
  • Wie können Projekte, die diesen Empfehlungen folgen, zeigen, dass sie gute Software sind und so von Anwendern gefunden werden?

Antworten:

Beim Übertragen der Punkte auf die Webseite ergaben sich folgende Fragen: - Sollen weiterführende Links zu einer möglichst neutralen und differenzierten Quelle führen, die auch Kritik beinhaltet (Wikipedia) oder zu einer, die meiner Meinung ist (FSFE)? - Sollen übliche Bezeichnungen verwendet werden, auch wenn sie englisch sind, oder deutsche Begriffe, die leichter verständlich sind? (z.B. User Experience vs Nutzungserlebnis) - Was für eine Sprache soll verwendet werden? Eher technisch, sachlich, oder sprechend und einfach verständlich? - Differenzierte Argumente für die Standpunkte als Kommentar im Quelltext oder auf der Seite? - Wie können Projekte, die diesen Empfehlungen folgen, zeigen, dass sie gute Software sind und so von Anwendern gefunden werden? Antworten: - ...
davidak commented 1 month ago
Owner

Es muss überprüft werden:

  • Kann ein unerfahrener Anwender mit den Informationen gute Software finden?
  • Treffen die Punkte auf Beispiele zu, wie z.B. VLC, Libre Office, elementary OS?
  • Helfen die Punkte sich von schlechter Software abzugrenzen, z.B. Windows, Adobe Cloud, Twitter?
Es muss überprüft werden: - Kann ein unerfahrener Anwender mit den Informationen gute Software finden? - Treffen die Punkte auf Beispiele zu, wie z.B. VLC, Libre Office, elementary OS? - Helfen die Punkte sich von schlechter Software abzugrenzen, z.B. Windows, Adobe Cloud, Twitter?
Sign in to join this conversation.
No Label
No Milestone
No Assignees
1 Participants
Due Date

No due date set.

Dependencies

This issue currently doesn't have any dependencies.

Loading…
Cancel
Save
There is no content yet.