Design document
Posted: Thu Nov 08, 2007 5:21 am
I'm considering writing a design document before continuing with my OS. Rather than just having a rough idea in my head, and then complete one thing and think "What should I work on next?" without any real clear direction, I am going to write a design document that covers everything from the lowest level:
- Booting
- Memory Management (layout/where it'll be allocated/how/DMA)
- Drivers (APIs/layout/how they load/etc)
- Process Management (permissions, sharing time slices, etc)
- VFS
- IPC
- User Managment
- etc
To the highest level including exact UI design of each tool.
I think writing a design document and having clear defined goals will help because then you know what you are aiming for and a path on how to get there. It'll also help to minimize feature creep, code bloating, and re-writing large parts of your code to support extra features.
I will call the design document "v1" and I'll stick to the design document to the word. My OS reaches version 1 when it is a stable implementation of the design document. Once I have reached version 1 I will take a break and later write a design document labeled "v2", etc.
Once I reach version 1 I can still provide updates and add extra features not found in the design document v1 before writing design document v2. These will mostly be minor updates, and for this I'll branch the source code, one being the vanilla version 1 that I won't change and the other being a copy of version 1 that I will change. Once I have finished v2 of the design document, I will base my v2 code base off the vanilla code of v1, to reduce code bloat and to eliminate the sticky-taped-together ideas from my other branch (although most of the ideas in these updates will probably have found their way into design document v2).
Im interested in the versioning and design systems other people are using. Who else has written a design document?
- Booting
- Memory Management (layout/where it'll be allocated/how/DMA)
- Drivers (APIs/layout/how they load/etc)
- Process Management (permissions, sharing time slices, etc)
- VFS
- IPC
- User Managment
- etc
To the highest level including exact UI design of each tool.
I think writing a design document and having clear defined goals will help because then you know what you are aiming for and a path on how to get there. It'll also help to minimize feature creep, code bloating, and re-writing large parts of your code to support extra features.
I will call the design document "v1" and I'll stick to the design document to the word. My OS reaches version 1 when it is a stable implementation of the design document. Once I have reached version 1 I will take a break and later write a design document labeled "v2", etc.
Once I reach version 1 I can still provide updates and add extra features not found in the design document v1 before writing design document v2. These will mostly be minor updates, and for this I'll branch the source code, one being the vanilla version 1 that I won't change and the other being a copy of version 1 that I will change. Once I have finished v2 of the design document, I will base my v2 code base off the vanilla code of v1, to reduce code bloat and to eliminate the sticky-taped-together ideas from my other branch (although most of the ideas in these updates will probably have found their way into design document v2).
Im interested in the versioning and design systems other people are using. Who else has written a design document?