site logo Software Design by Example

  1. Introduction
  2. Systems Programming
  3. Asynchronous Programming
  4. Unit Testing
  5. File Backup
  6. Data Tables
  7. Pattern Matching
  8. Parsing Expressions
  9. Page Templates
  10. Build Manager
  11. Layout Engine
  12. File Interpolator
  13. Module Loader
  14. Style Checker
  15. Code Generator
  16. Documentation Generator
  17. Module Bundler
  18. Package Manager
  19. Virtual Machine
  20. Debugger
  21. Conclusion
  1. License
  2. Code of Conduct
  3. Contributing
  4. Bibliography
  5. Glossary
  6. Credits
  7. Index

Appendix C: Contributing

Contributions are very welcome; please contact us by email or by filing an issue on this site. All contributors must abide by our Code of Conduct.

Making Decisions

This project uses Martha’s Rules for consensus decision making:

  1. Before each meeting, anyone who wishes may sponsor a proposal by filing an issue in the GitHub repository tagged “proposal”. People must file proposals at least 24 hours before a meeting in order for them to be considered at that meeting, and must include:

    • a one-line summary (the subject line of the issue)
    • the full text of the proposal
    • any required background information
    • pros and cons
    • possible alternatives
  2. A quorum is established in a meeting if half or more of voting members are present.

  3. Once a person has sponsored a proposal, they are responsible for it. The group may not discuss or vote on the issue unless the sponsor or their delegate is present. The sponsor is also responsible for presenting the item to the group.

  4. After the sponsor presents the proposal, a “sense” vote is cast for the proposal before any discussion:

    • Who likes the proposal?
    • Who can live with the proposal?
    • Who is uncomfortable with the proposal?
  5. If everyone likes or can live with the proposal, it passes immediately.

  6. If most of the group is uncomfortable with the proposal, it is postponed for further rework by the sponsor.

  7. Otherwise, members who are uncomfortable can briefly state their objections. A timer is then set for a brief discussion moderated by the facilitator. After 10 minutes or when no one has anything further to add (whichever comes first), the facilitator calls for a yes-or-no vote on the question: “Should we implement this decision over the stated objections?” If a majority votes “yes” the proposal is implemented. Otherwise, the proposal is returned to the sponsor for further work.


This material uses Ivy with some custom extensions. Run make in the root directory to get a list of available commands. Some of these rely on scripts in the ./bin/ directory. Please see our Git repository for up-to-date instructions.