How will I do that project
The project will be divided in three major parts
The problem of Namespaces has been attacked for different Smalltalk in different ways. Looking a simplistic solution with no backwards incompatibility issues is a major task that includes:
- Full understanding of the different approaches
- Identifying the tradeoff of those solutions
- Add the advances of the todays technology
This will be the bases of the next parts of the project.
After the research, I will have a full view of the actual panorama. In this part I have to define the best way to interact with the user and the best way to code it.
Some question I need to answer are:
- From the user view:
- How I'll like to write code that includes some repeated class name?
- How to resolve any conflict?
- How to maintain the code clear?
- From the implementation view:
- Where I'll put the solution to make it less couple of a particular Smalltalk dialect?
- How to make a solution with backwards compatibility?
In this phase I will have concretized the ideas of the previous parts. The main goal is obtain a running solution in Pharo Smalltalk.
Some of the possible tasks (this mean that some of this points are really dependent of the solution) I will have to do:
- Modify the code parser
- Edit some of the exporting/importing mechanism
- Add new tools to the environment
What methodologies will I use
In the first parts I just need be on the schedule proposed, taking the advices from the mentors.
In the implementation phase also, I'll use a iterative methodology.
Where I can do it I'll use TDD because this will leave my code tested and give me trust when I have to do a major refactor (if it needed).
Suggested timeline and milestones
For the Researching & Designing I estimate an effort of a month and for the Implementation two
Researching (Estimated: 05/24 - 06/07)
- Detecting the tradeoff of the approaches researched
Designing (Estimated: 06/07 - 06/21)
- Define the components of the implementation
- Create a documentation of the solution (this is a non-specific Smalltalk solution)
Implementation (Estimated: 06/21 - 08/16)
- Make a rough implementation
- Make the GUI aggregates
- Make the new tools and edit the existent
- Document the changes or variations from the non-specific Smalltalk solution
Where I see the risks
Finding the "best solution" is always complicated, understanding for "the best" the solution that will achieve all of the objectives and satisfy the community.
Regarding to the implementation phase my knowledge of compilers and parsers is minimal and I will have to put and extra effort on this part. But, with the guidelines of the mentors I think it not will be a risk.
How the results will look like
The results will be available in a Pharo image and also in a squeaksource project
The completion of this project will provide a way to define two or more classes with the "same name", this solution will be transparent and have full backwards compatibility.
One of the main goals is add a new feature without changing the way we use Smalltalk.
For the programmer that doesn't want to think in namespaces this feature will do not bother him. But, will be available when someone needed and will let him choose a good name for all of his classes improving his intention revealing and the expressiveness of his code.