Proposal by Petr Spacek for Porting Monticello to Smalltalk/X

Proposed by Petr Spacek (profile, biography) Don't forget to submit this proposal to official Google Melange site too!

How will I do that project

After I have read project description and public materials about Monticello I have been thinking about How to perform tree main tasks to successfuly port Monticello to Smalltalk/X and here is my initial plan:

  • porting a Monticello's base classes

I will have to study Squeak's Monticello code-base and undestand how it works inside Squeak enviroment. Then try identify all diferences in implementation of classes that MC uses. Next step will be transfering of Monticello code-base & tests into Smalltalk/X. Last round and longest step will be fixing all differences and satisfy all tests.

  • creating usable user interface integrated to existing Smalltalk/X tools

I want to develop user interface for Monticello, based on existing infrastructure of UI for Subversion, but I know that it may not be the right way so I also want to implement UI which will be more inspirated in the one in Squeak.

  • define a mapping scheme to map Smalltalk/X package names to Monticello ones and back

What methodologies will I use

Because of wide test coverage of Monticello, a Test Driven Developement will be my methodology for all project parts I will follow the Test-driven development cycle:

1. Import or add new test

2. Run all tests and see if the new one fails

3. Import and modify some code

4. Run the automated tests and see them succeed

5. Refactor code

Repeat cycle

Suggested timeline and milestones

Acording to GSoC timeline I should start with works on project at May 24th and final-submit will be at August 16th, so I have time about 81 days. So I have defined four stages.

Stage One (days: 0-25):

  • understood Squeak's implementation of Monticello
  • transfer all code-base & test from Squeak to Smalltalk/X and collect all differences, bugs
  • design mapping between Smalltalk/X packages and Monticello ones.
Stage Two  (days: 26-50)
  • fix all differences founded in 1st milestone
  • satisfy port of Monticello tests
Stage Three (days: 51-75)
  • implement GUI for Monticelo's port
  • testing Monticello's port and fixing bugs
Stage Four (days: 76-80)
  • generate documentation

Where I see the risks

In differences between Squeak and Smalltalk/X enviroment. Projects written for Squeak and then loaded into Smalltalk/X may require some classes or modules, which are not in Smalltalk/X.

Because of Test Driven Developement is transfering of all test very important and because of diffrence described above I may have to rewrite by hand all Monticello's tests to Smalltalk/X before transfer of code-base.

How the results will look like

After successful porting of Monticello to Smalltalk/X environment the programmer will be able to
load a code from a monticello repository and commit it back right from the Smalltalk/X IDE.

Updated: 10.4.2010