/principles

An open-source list of principles used in software engineering

GNU General Public License v3.0GPL-3.0

principles-logo@2x 2a8f2ec701e4

Principles

An open-source list of principles used in software engineering and leadership to improve capability.

If you have your own principles, you can contribute them to the repository (see below)

This repository is also the main data source for https://principles.dev. Any changes here will be reflected on the website.

principle-capability-behavior-triangle

Creating your first principle

You can create your principle by using the Editor and what you need to include by reading how to write a principle.

Contributing

If you want to make Software Engineering better for everybody, please make a pull request. You can create a pull request and add your own principles or update others with the merge target set to release branch.

You might want to read why create a principle.

There are many ways to contribute to the project, from simple to most rewarding:

  • Correct mistakes - This could be spelling, grammar or getting the point across more clearly.
  • Edit a principle - enrich its content. Nearly all principles can be improved by adding in more information or better reasoning.
  • Copy an existing principle - Derive a principle from elsewhere. Make sure it has a permissible license (e.g., MIT, CC BY-SA).
  • Create a principle - Have a principle of your own? Please share it with the world on principles.dev.

If you're creating or copying a principle. You should at least read through the how to write a principle quickstart section before you begin. Having a look at existing principles on the site will help you understand what's required.

Will my principle be accepted?

One of the most significant sources of friction you will experience that will hold you back from contributing is whether you feel your principle will be rejected or not. No one wants to put in work for someone to turn around and say no.

It will generally be approved if it reaches the requirement for a basic principle.

Reasons for lack of approval are:

  • Low quality - The principle is unable to change someone's behavior or capability because it's missing crucial information or context.
  • Not containing what it is and why
  • The principle is offensive, inflammatory, or is generally targetted at being hostile towards a different group (e.g., don't use X language, X technology, etc.)
  • Grammar or spelling mistakes (which are easily correctable)

If you are unsure, it's ok to open an issue on this repository to discuss a principle to get some general pointers. If you create a pull request and any of the above problems exist, don't worry, the maintainers will point them out, and you'll have opportunities to correct it.

Also, try your best before reaching out to the maintainers. That means reading the documentation beforehand and understanding this project. If you've spent a lot of time on something, the maintainers will be more willing to help you.

Thank you for reading and making Software Engineering better for everyone.

Keeping in touch

Sign up for an account at https://principles.dev and follow @principles_dev to learn more about principles.

Licensing

Principles are generally licensed under Creative Commons Attribution-ShareAlike 4.0 International. But may be licensed under other creative commons license. Refer to the individual principle meta-data for license claims.

e.g. license = "CC BY-SA 4.0"

Principles may also be licensed under a dual GPLv3.0 license to allow software distribution under the same terms. Refer to the individual principle meta data for license claims.

e.g. allow_dual_licensing_to_GPLv3 = true