Update: Are you looking for my old article about version control? It can be found here: Version Control: Why pessimistic locking of source code is a very bad idea
In the last weeks I have been thinking a lot about framework design. I will give a talk called “Framework Design Principles” at Mathema Campus. While preparing the slides I found out that when thinking about framework design, I care a lot about 5 topics:
- Readability - How easy is it to read the source code using the framework?
- Usability - How easy is it to write code using the framework?
- Abstraction and Simplification - Does the framework contain leaky abstractions? Do I have to think about them a lot?
- Extensibility - How easy is it to extend the framework?
- Succinctness - Does the framework allow me to write succinct code?
Update: Because some feedback I’ve got after my talk in Erlangen I wanted to add: Most of the principles shown in this mini series (and the talk) are a good idea for most software projects, not only for frameworks and libraries. Anyway, everything here was created with a focus on frameworks, and all the examples are from existing frameworks or libraries.
Also, I will not give specific advice like “In this situation, use a factory. In that situation use a generic super class”. This series is about general principles, but I will also give concrete examples for good and bad implementations of these principles.
Here are the slides I used for the talk. But beware: Most of them are German. [/Update]
I decided to start a mini series about this topic, so I will turn the list items above into links as soon as I write the corresponding articles. This mini series will cover the topics of my talk, but with a little bit more detail here and there. Stay tuned ;)