File tree 1 file changed +30
-0
lines changed
1 file changed +30
-0
lines changed Original file line number Diff line number Diff line change
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.
You can’t perform that action at this time.
0 commit comments