Hi,
I would like to propose the following project for the Google Summer of Code. Can you please review it and give me feedback?
Developing a package model
Squeak, as well as Visual Works, was not historically designed to be package-aware. It was designed with classes in mind and packages were added later as a new layer. This resulted in the following shortcomings:
- No Package entity, instead there are strings. - No meta information for packages (comments will be really useful for example). - No simple API to access package content (class definitions, class extensions...). - No way to add instances variables to classes outside of the defining package. - No dependency mechanism which leads to very difficult deployment problems. - Each tool redefining the notion of package: browsers, SqueakMap, Monticello, Universes... - No refactoring support (renaming, moving a definition from a package to another...).
The aim of this project will be to:
- Create a new extensible model which contains meta information for packages. Each package will be able to define dependencies, recommended packages, comments... Each package will contain a set of class definitions, class extensions and class modifications. - Improve the current tools to support the new model.
Identified risks ----------------
I will have to take care of not changing everything at once. The problem will be to devise a solution that can be implemented and released slowly. If this is not done correctly, the system will be too difficult to integrate into Squeak.
The tools must be modified the right way to keep backward compatibility.
Proposed development plan -------------------------
During all the project, I will take care of informing the community and asking for its wishes and feedback. I plan to release often and test a lot.
Here is a possible development plan to realize this project:
- Study SqueakMap, Monticello, PackageInfo and Alexandre Bergel work (http://wiki.squeak.org/squeak/5613) - Establish a model - Invent and implement a way to port current categories to the new package model - Change OmniBrowser Standard to support the new model - Enhance the packaging tools
Benefits for the community --------------------------
The Squeak community really needs a packaging system. Tools should stop implementing things that must be in the system. Once Squeak will have a new packaging system, tools will be simpler, smaller and then will contain less bugs and more features. This system will help maintainers and will allow for a more modular Squeak.
Il giorno mar, 20/03/2007 alle 14.49 +0100, Damien Cassou ha scritto:
Hi,
I would like to propose the following project for the Google Summer of Code. Can you please review it and give me feedback?
Looks good. I have only one addition to suggest:
- No meta information for packages (comments will be really useful for example).
License info would be useful, too.
Giovanni
soc@lists.squeakfoundation.org