[SoC] Project proposal: Developing a package model

Damien Cassou damien.cassou at gmail.com
Tue Mar 20 13:49:00 UTC 2007


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.


-- 
Damien Cassou


More information about the Soc mailing list