Good Software Manifesto
A practical manifesto defining what good software should be
Overview
Good software is more than features. It is freedom, trust, quality, and long-term usefulness.
This manifesto defines a practical baseline for software that respects users and stays maintainable over time.
Manifesto Points
- Prefer FOSS whenever possible: inspectable code, auditable behavior, and user control.
- Avoid lock-in subscriptions for core usage: donations, support, grants, or one-time payments are healthier.
- No forced registration for local/core features.
- Telemetry must be transparent and opt-in.
- Build for compatibility: formats, APIs, and cross-platform interoperability.
- Build for maintainability: clear names, modular architecture, and documentation.
- Build for portability: software should run in different environments with low friction.
- Build for performance: responsive, efficient, and without bloat, ads, or junk bundles.
- Build for reliability and scalability: stable behavior under load and growth.
- Build for security: no spyware, no hidden backdoors, and responsible patching.
- Build for usability: easy to learn, easy to use, easy to remove.
- Use strong licenses that protect user freedoms and project integrity.
- Maintain a healthy community with clear rules, respectful moderation, and contributor guidance.
- Proprietary software is not inherently bad: if it respects these fundamentals, it can still be good software.
- Keep workflows replaceable: use open tools when viable, proprietary tools when they clearly deliver value without violating core principles.
- Keep data portable across web, mobile, and desktop ecosystems.
Open standards remain the safest long-term choice for interoperability, transparency, and independent review.
Open-source already proves this model at scale across kernels, compilers, servers, browsers, virtualization, and frameworks.
Open-source also does not automatically guarantee security or privacy. Backdoors and disguised malware have existed in open projects too. The key advantage is that open code is easier to inspect and audit independently, which makes abuse harder to hide over time.
AI Principle: Deterministic by Design
AI should reduce repetitive work, not increase dependency.
- Define tasks as scripts, templates, or reproducible pipelines.
- Use AI to generate or refine deterministic models from those scripts.
- Execute predictable workflows with minimal prompting.
Use AI to automate systems, not to create constant chat-based overhead.
Final Definition
Good software is software that:
- Respects user freedom
- Respects user time
- Respects user privacy
- Stays maintainable and secure
- Remains useful without lock-in
If software cannot be trusted, maintained, or exited, it is not good software, no matter how polished it looks.