|Good if student knows||Tcl|
|Benefits to the student||Learning Tk, GUI programming, review and evaluation of existing code, ...|
|Benefits to Tcl||Improved GUI to an application used to manage the Tcl/Tk core, and many other Tcl projects|
The Fossil distributed software configuration management system is used in many Tcl-based projects. Its ease of installation and use, and comprehensive features making it an attractive alternative to the more complex systems like Git and Mercurial.
Although Fossil comes with a built-in web interface, the objective of this project is to make a Tk-based GUI interface, and in doing so kill several birds with the one stone (so to speak)
One of the existing Tk GUI's (such as TkCVS/TkSVN or GiTk) should be used as a basis, and the first part of the project would be a review of these programs and an assessment of their suitability.
SSL support already exists in the Fossil server and Unix clients, but building the SSL-enabled Fossil client on Windows has proven problematic. So this project, if successful, is likely to achieve wide visibility amongst the Windows Fossil users.
The client could include a macro facility (scriptable in Tcl, of course) that would allow new functionality to be added by aggregating existing Fossil features.
Gain experience in reviewing and evaluating existing programs, learn about Tk programming and User Interface and User Interaction Design, learn about Distributed Software Configuration Management, learn about interfacing to C libraries via Critcl, learn about simple crypto concepts via TLS, learn about Starkit deployment.
Provide an improved GUI interface on all platforms for the many Tcl projects already using Fossil, and an easy to deploy SSL-enabled client on Windows in particular.
Some URLs here
Wouldn't it be more useful if we created a client that works with multiple SCM's? The only extra work would be in defining an API that could be used to plug in drivers for various back ends. Of course, the first plug-in could be for fossil. It could be limited to only distributed SCM's to make the project a bit easier since distributed and centralized systems work in fundamentally different ways. I think creating a GUI where different SCM back ends could be plugged in would be a very worthwhile project for a student to undertake.
escargo 2011-03-16 - For testing purposes and for scripting purposes, such an API should have command line interface as well. That would allow the plug-in drivers to be tested without requiring a working GUI. It should even be possible to have tcltest scripts that automate the testing of the drivers.
This also makes it possible to more easily measure progress or divide the work among more workers, since there would more discrete work products visible.