May 2002
Projects
The project is a manageable group of objects. I am not sure what the meaning of a project is yet, but here are some of the attributes I am looking for:
- Permissions are assigned to projects. Permissions also define code visibility and replace the "public" "private" hacks.
- Projects define assumptions made about an application. Most static programs make assumptions in the language model and imported modules. The DBOS requires a dynamic system so must handle these assumptions explicity.
- Refactoring is a change in assumptions. Refactoring is the act of generating bijections between projects to facilitate code transformation between the said projects.
- There is an important interaction between recursion and projects that I do not understand. My most complex programming bugs involve the use of recursion, maybe projects can expedite the identification of the bug.
- Definitly use projects for structural refactoring.
Here are some more thoughts I am not sure of:
- Listing every object and the projects it belongs to would take too much memory. We will partition the objects into explicit members of a projects and implicit members of a project. Garbage collector logic will be used to determine implicit members.
- By having implicit members, project inclusion will need an indicator of what objects to include. Including the explicit objects results in effectively including an interface, including all allows for reflection.
- Each object uses the data format of the project it belongs, conversion is used to see the same object in different formats