Skip to content

Commit 33c736e

Browse files
authored
Add a document for project principles (#1069)
This PR adds a document under `/docs` for project principles as we discussed in #56. This closes #56.
1 parent 9f0c218 commit 33c736e

File tree

1 file changed

+30
-0
lines changed

1 file changed

+30
-0
lines changed

docs/contribute/principles.md

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
# Development Principles
2+
3+
These define how we deal with code.
4+
5+
## Why we need principles?
6+
* They keep the project focused on the right direction.
7+
* They keep the project disciplined.
8+
* They make users' expectation for the project clear.
9+
10+
## Principles
11+
12+
* **Enforcability**
13+
* Meta-principle. We enforce the principles in a systematic way. We use automated checks to enforce the principles as much as we possible.
14+
* **Performance**
15+
* Our goal is to build high performance memory management systems.
16+
* We need to have the tools (for measuring performance) that allow us to create high performance systems.
17+
* **Flexibility**
18+
* Flexibility is a prerequisite to creative, ambitious engineering, and is thus a key principle.
19+
* The design should maintain clear abstraction.
20+
* Flexibility should not be at odds with performance. Our motto (from Ken Kennedy): _abstraction without guilt_.
21+
* Encapsulation is our key weapon in ensuring flexibility.
22+
* **Clarity/Accessibility**
23+
* Our goal is to provide a toolkit that is widely used. Consequently:
24+
* The code should be clear and easy to understand.
25+
* A good programmer (with no GC expertise) should be able to understand the code and make changes.
26+
* Use standard coding styles, use standard license, support standard IDEs, etc.
27+
* Systems need to work 'out of the box'.
28+
* **Security**
29+
* Our system must be secure.
30+
* We should be a platform for research into memory management security.

0 commit comments

Comments
 (0)