Software-Anforderungen

In diesem Thread können wir Anforderungen an die zu entwickelnde Software sammeln und diskutieren.

Ich fange mal mit ein paar Dingen an, die mir spontan einfallen:

  • (1) Sicherer Umgang mit Privatsphäre/ sensiblen Daten: Die Daten der Benutzer, die in die Software eingespeist werden sollen, sind in hohem Maße sensibel. Das gilt besonders für persönliche Bedürfnisse und in gewissem Maß auch für private Mittel.
  • (2) Integration vieler verschiedenartiger Datenquellen: Viele Daten, die die Software verwenden möchte, sind bereits vorhanden. Sie müssen daher in geeigneter Form zusammengeführt werden. Das sind insbesondere “Wissen” in Form von Taxonomien/ Ontologien und Mittel (beispielsweise aus Commons Booking Instanzen). Möglicherweise tun sich auch noch Datenquellen für Tätigkeitsmuster auf.
  • (3) Außerordentlich gute Benutzbarkeit: Die Software richtet sich an alle Menschen, insbesondere auch solche, die nicht unbedingt technik-affin sind.
  • (4) Langfristig gute Wartbarkeit: Bei Erfolg rechnen wir mit einer langen Lebensdauer der Software, daher sollte sie leicht an aktuelle Entwicklungen angepasst und weiterentwickelt werden können.
  • (5) Überwindung der ersten Schwelle: Die Funktionsfähigkeit der Software basiert auf dem Vorhandensein möglichst vieler Daten. Das ist zu Anfang nicht der Fall. Eine wesentliche Herausforderung besteht daher darin, diese erste Zeit überwinden zu können.
  • (6) Verwendung moderner Matching-Technologien: Die Zusammenführung der verschiedenen Datenquellen muss möglichst sinnvoll sein, damit die Software tatsächlich ein hilfreiches Werkzeug ist.
  • (7) Entwickler_innen anziehen: Keine Software ohne Menschen, die sie entwickeln. Sowohl die zugrunde liegenden Technologien als auch die Gestaltung der Software muss für neue Entwickler interessant sein.
  • (8) Zeithorizont: Früher Prototyp: Unsere Mittel sind sehr begrenzt. Daher muss schon zu einem frühen Zeitpunkt (beispielsweise einige Monate nach Beginn der Entwicklung) ein funktionsfähiger Prototyp sichtbar sein.
  • (9) Freie Software: Die Software wird gewissermaßen das erste gesellschaftliche Mittel in dem System sein, welches mit ihrer Hilfe entsteht. Daher muss sie an jeder Stelle die Prinzipien Freier Software erfüllen.
  • (10) Internationalisierung (i18n):
    1. Die Benutzeroberfläche muss mehrsprachig verfügbar sein.
    2. Die Inhalte der Benutzer können (müssen?) mehrsprachig verfügbar sein.
    3. Produktionsketten müssen über Sprachgrenzen hinweg aufgebaut werden können.

Zu (3): Zum gegenwärtigen Zeitpunkt dürfte eine Smartphone-App das geeignete Instrument sein, um viele Menschen einbeziehen zu können.

Zu (4): Ich würde eine Software bei so einer Anforderung immer in kleine Teile zerlegen (modularisieren, siehe https://meta.allmende.io/t/software-komponenten/625). Siehe auch die Unix-Philosophie.

Fügt gerne hinzu, was euch einfällt oder kommentiert meine Gedanken.

Ich habe zu Punkt 8 einen Einwand: Wichtig ist meines Erachtens, dass wir früh einen Klick-Dummy haben, den man fürs Crowdfunding, für User-Befragungen und allgemein für Präsentationszwecke nutzen kann. Wirklich funktionieren muss es meines Erachtens noch nicht…

Zu Punkt 3: Von Apps im klassischen Sinne (für iOS oder Android) wurde mir abgeraten und fänd ich nicht sinnvoll. Was wir brauchen, ist eine Web-App, die schön auf mobilen Geräten dargestellt wird. Eigentlich ist das einfach eine Webseit, die merkt, mit welcher Bildschirmdiagonale sie dargestellt werden soll.

Im Gespräch mit einem Freund gestern Abend kam noch ein Punkt heraus, den ich wesentlich finde und ich hoffe, er gehört hierher:

Es werden nie alle Leute, die sich gegenseitig unterstützen wollen, die Software für ununterbrochenes Commoning auch nutzen - und die Software (zumindest die Desktop-Variante) sollte die Möglichkeit bieten, solche Leute zu integrieren. Das heißt: Ich wähle entsprechende Filter aus und kann mir dann automatisch ein pdf erstellen lassen, auf welchem angeben ist, was es gerade hier im Umkreis zu tun gibt und welche Mittel benötigt werden. Alles dann natürlich Sachen, für die auf Softwareebene keine Leute/Mittel gefunden werden. Und das pdf kann ausgedruckt und z.B. mit Kontaktdaten vor die eigene Tür gehängt werden. Und entweder die Leute rufen dann die entsprechende Person an und klären, wie sie beitragen können und/oder auf dem Ausdruck ist ein QR-Code, der auf eine Seite verweist, auf der (ohne Anmeldung) alles wichtige nochmal aufgeschlüsselt ist. Das wäre eine niedrigschwellige Variante, damit auch Leute ohne die App sich in das ununterbrochene Commoning integrieren können und es wäre eine Möglichkeit, wie wir dann Leute (ohne Werbung etc.) zur Software führen können.

Passt das hier rein? Ich würde das () Analoge Schnittstellen zur Integration ohne Software anbieten o.ä. nennen.

Coole Idee, macht die Programmierung aber sicher nicht weniger aufwändig… :wink: Aber wäre sehr wünschenswert!

Also, ich verstehe durchaus das Unbehagen, dass ja nicht alle Menschen die SW nutzen werden und es ist auch absolut begrüßenswert, niederschwelligen Zutritt oder Möglichkeiten für (indirekte) Einladungen zu integrieren.

Aber so richtig Sorge bereitet mir persönlich das nicht, denn für vor allem größere Commons wie eine Fabrik genügt es ja fast, wenn nur einige Wenige die SW nutzen, um das Commons mit der Allgemeinheit zu verbinden: Ermöglichungen der Welt anbieten und Bedarfe an andere Commons melden. Vielleicht vergleichbar mit dem heutigem Vertrieb und Einkauf?! Sämtliche anderen internen Vorgänge könnten genauso gut komplett offline und außerhalb der SW-Struktur laufen und damit können selbst Menschen, die nicht mal lesen können, sich problemfrei in das Commoning integrieren…

Ich möchte zur Anregung noch einige weitere bestehende Anforderungs-Sammlungen vorstellen:

  • Inclusive Design Principles
  • Ethical Design Manifesto
  • Small Tech Principles (ausgenommen die Texte zu Personal und Non-commercial)
  • Fair Web Services
  • User Data Manifesto 2.0
  • IndieWeb principles

Ich gebe sie im Folgenden wieder, da ich es wichtig finde, bereits bestehende Bestrebungen in dieser Richtung anzuhören. Einen Blick wert sind darüber hinaus vielleicht die Principles of Humane Technology.

Inclusive Design Principles

Provide comparable experience

Ensure your interface provides a comparable experience for all so people can accomplish tasks in a way that suits their needs without undermining the quality of the content.

Consider situation

People use your interface in different situations. Make sure your interface delivers a valuable experience to people regardless of their circumstances.

Be consistent

Use familiar conventions and apply them consistently.

Give control

Ensure people are in control. People should be able to access and interact with content in their preferred way.

Offer choice

Consider providing different ways for people to complete tasks, especially those that are complex or non standard.

Prioritise content

Help users focus on core tasks, features, and information by prioritising them within the content and layout.

Add value

Consider the value of features and how they improve the experience for different users.

Ethical Design Manifesto

Ethical Design Manifesto

Human Experience

Technology that respects human experience is beautiful, magical, and delightful.

It just works. It’s intuitive. It’s invisible. It recedes into the background of your life. It gives you joy. It empowers you with superpowers. It puts a smile on your face and makes your life better.

Human Effort

Technology that respects human effort is functional, convenient, and reliable.

It is thoughtful and accommodating; not arrogant or demanding. It understands that you might be distracted or differently-abled. It respects the limited time you have on this planet.

Human Rights

Technology that respects human rights is decentralised, peer-to-peer, zero-knowledge, end-to-end encrypted, free and open source, interoperable, accessible, and sustainable.

It respects and protects your civil liberties, reduces inequality, and benefits democracy.

Small Tech Principles

Easy to use

Personal technology are everyday things that people use to improve the quality of their lives. As such, in addition to being functional, secure, and reliable, they must be convenient, easy to use, and inclusive. If possible, we should aim to make them delightful.

Non-colonial

Small technology is made by humans for humans. They are not built by designers and developers for users. They are not built by Western companies for people in African countries. If our tools specifically target a certain demographic, we must ensure that our development teams reflect that demographic. If not, we must ensure people from a different demographic can take what we make and specialise it for their needs.

Private by default

A tool respects your privacy only if it is private by default. Privacy is not an option. You do not opt into it. Privacy is the right to choose what you keep to yourself and what you share with others. “Private” (i.e., for you alone) is the default state of small technologies. From there, you can always choose who else you want to share things with.

Zero knowledge

Zero-knowledge tools have no knowledge of your data. They may store your data, but the people who make or host the tools cannot access your data if they wanted to.

Examples of zero-knowledge designs are end-to-end encrypted systems where only you hold the secret key, and peer-to-peer systems where the data never touches the devices of the app maker or service provider (including combinations of end-to-end encrypted and peer-to-peer systems).

Peer to peer

Peer-to-peer systems enable people to connect directly with one and another without a person (or more likely a corporation or a government) in the middle. They are the opposite of client/server systems, which are centralised (the servers are the centres).

On peer to peer systems, your data – and the algorithms used to analyze and make use of your data – stay on devices that you own and control. You do not have to beg some corporation to not abuse your data because they don’t have it to begin with.

Share alike

Most people’s eyes cloud over when technology licenses are mentioned but they’re crucial to protecting your freedom.

Small Technology is licensed under Copyleft licenses. Copyleft licenses stipulate that if you benefit from technology that has been put into the commons, you must share back (“share alike”) any improvements, changes, or additions you make. If you think about it, it’s only fair: if you take from the commons, you should give back to the commons. That’s how we cultivate a healthy commons.

Interoperable

Interoperable systems can talk to one another using well-established protocols. They’re the opposite of silos. Interoperability ensures that different groups can take a technology and evolve it in ways that fit their needs while still staying compatible with other tools that implement the same protocols. Interoperability, coupled with share alike licensing, helps us to distribute power more equally as rich corporations cannot “embrace and extend” commons technology, thereby creating new silos.

Interoperability also means we don’t have to resort to colonialism in design: we can design for ourselves and support other groups who design for themselves while allowing all of us to communicate with each other within the same global network.

Inclusive

Being inclusive in technology is ensuring people have equal rights and access to the tools we build and the communities who build them, with a particular focus on including people from traditionally marginalised groups. Accessibility is the degree to which technology is usable by as many people as possible, especially disabled people

Small Technology is inclusive and accessible.

With inclusive design, we must be careful not to assume we know what’s best for others, despite us having differing needs. Doing so often results in colonial design, creating patronising and incorrect solutions.

Fair Web Services

Substitutability

The key criterion is that users are able to substitute a service by another services if they wish. This gives users control as they can take their data and move to a service which better serves them or even run the service themselves.

Transparency

Transparency is important, so that users can judge what the service does and how that affects their computing. Transparency of terms of use is especially important. But also transparency about what is done with the data, where it’s stored and processed.

Privacy

Services need to respect the privacy of users and give them ultimate control about what happens with their data. Personal data should only stored when necessary, and it has to be documented what is happening with it. Users need to be able to leave a service and have all their data removed.

Security

When running Free Software yourself, you have control about the security of the software, you can inspect the code, analyze it, and fix issues, when necessary. For services this is not possible. They need to establish trust that they are operating in a secure way and are protecting the data of their users. They should use encryption where possible. They need to document procedures how to identify and fix security issues. They need to communicate security issues clearly to their users.

Fair model of operation

Paying for a service is ok. Running web services can be costly, and users paying for their share of the costs is a fair model. Creating artificial restrictions as pay barriers, especially to the users own data, is not fair. A user should never be forced to pay for getting access to their own data. A fair web service should also not use third party advertisements, because that introduces tracking of users by third parties, and the users loses control about this data. Users also lose control about what is shown along their own data.

User Data Manifesto 2.0

Control over user data access

Data explicitly and willingly uploaded by a user should be under the ultimate control of the user. Users should be able to decide whom to grant direct access to their data and with which permissions and licenses such access should be granted.

Knowledge of how the data is stored

When the data is uploaded to a specific service provider, users should be informed about where that specific service provider stores the data, how long, in which jurisdiction the specific service provider operates, and which laws apply.

Freedom to choose a platform

Users should always be able to extract their data from the service at any time without experiencing any vendor lock-in. Open standards for formats and protocols are necessary to guarantee this.

IndieWeb principles

  • own your data
  • Use & publish visible data for humans first, machines second
  • Make what you need / scratch your own itch Make tools, templates, etc. for yourself first, not for all of your friends or ”everyone“.
  • Use what you make / selfdogfood Whatever you build you should actively use.
  • Document your processes, ideas, designs and code
  • Open source your stuff!
  • UX before plumbing / UX and design is more important than protocols, formats, data models, schema etc.
  • Modularity / build platform agnostic platforms designing and building modular code and services composed of pieces that can be swapped to reduce dependencies on a particular device, language, API, storage model, or platform
  • Longevity keeping your data as future-friendly and future-proof as possible
  • Plurality encourage and embrace a diversity of approaches & implementations
  • Have fun

Und wenn man die Zielsetzung dieses Themas noch etwas weitet und nicht nur Anforderungen an die Software, sondern auch an die restliche Infrastruktur betrachtet, sind vielleicht auch die Punkte vom Sustainable Web Manifesto von Relevanz (mehr Maßnahmen werden im Artikel This website is killing the planet genannt):

Sustainable Web Manifesto

Clean

The services we provide and services we use will be powered by renewable energy.

Efficient

The products and services we provide will use the least amount of energy and material resources possible.

Open

The products and services we provide will be accessible, allow for the open exchange of information, and allow users to control their data.

Honest

The products and services we provide will not mislead or exploit users in their design or content.

Regenerative

The products and services we provide will support an economy that nourishes people and planet.

Resilient

The products and services we provide will function in the times and places where people need them most.

Zu Deinem dritten Punkt, @balkansalat, würde ich noch Eric S. Raymond’s interface style metrics nennen:

  • Concision
  • Ease
  • Expressiveness
  • Scriptability
  • UI transparency

Und folgendes Zitat ist ebenfalls relevant:

when people say a user interface is intuitive, what they mean is that it a) is discoverable, b) is transparent in use, and c) obeys the Rule of Least Surprise. Of these three rules, Least Surprise is the least binding; initial surprises can be coped with if discoverability and transparency make longer-term use rewarding.

— Eric S. Raymond: The Art of Unix Programming, Transparency, Expressiveness, and Configurability

Ich möchte in diesem Zusammenhang auch noch mal auf einen frühen Beitrag von @almereyda verweisen:

https://meta.allmende.io/t/openlca-life-cycle-and-sustainability-modeling-suite/544/6

Zum Stichwort Barrierefreiheit im Web (accessibility) gibt es noch die folgenden beiden Richtlinien:

Sowie eine schöne Zusammenfassung des Wichtigsten bzgl. accessibility im Internet:

In diesem Zusammenhang evtl. auch relevant: Jakob Nielsens zehn Prinzipien für interaction design:

10 Usability Heuristics for User Interface Design

  1. Visibility of system status
  2. Match between system and the real world
  3. User control and freedom
  4. Consistency and standards
  5. Error prevention
  6. Recognition rather than recall
  7. Flexibility and efficiency of use
  8. Aesthetic and minimalist design
  9. Help users recognize, diagnose, and recover from errors
  10. Help and documentation