Summer of Code 2012 Project Ideas
Table of Contents
- Why hack on Bazaar?
- Tighter integration
- Smarter operation
- More flexibility
- What next?
There is fierce competition in the distributed version control space right now with Bazaar, Git and Mercurial all rapidly advancing. All are very good tools with their own strengths and weaknesses. Bazaar has an active and passionate community around it united by a common goal: provide the best end-user experience through a continual focus on usability, performance, adaptability and flexibility. You can choose whatever workflow makes the most sense and organize your workspace how you want to. It's an exciting project to be working on and you get to improve a critical tool that many programmers, yourself included, rely on every day!
Below is a list of ideas you may wish to base your proposal on. The proposal are grouped by theme and most of them can vary in complexity to be matched with your ability and interest. Please treat these are starting points and don't be afraid to propose projects not listed below, provided they are suitably scoped to the time available. In every case, integrating early and often will be a key to success. Therefore, think about a road-map of features for your project, from basic integration to features that will really rock!
Bazaar has a strong focus on Just Working and staying out of your way. Tight integration into user's existing environments and toolsets is a core part of our vision.
If you have an editor or IDE you love, help us integrate Bazaar with it in a way that fellow users of that editor/IDE will cheer about.
The complexity of this will vary greatly depending on what's been done already (http://bazaar-vcs.org/IDEIntegration), if anything, and on how ambitious you want to be. Be sure to look at the APIs used by your editor/IDE to integrate external applications. Also take a look at how bzr has been integrated with similar tools.
A large number of Subversion and CVS users only ever interact with their version control tool using a shell extension or GUI front-end. Bazaar has several offerings in this space (http://bazaar-vcs.org/3rdPartyTools) and most of them have plenty of room for improvement! Perhaps you'd like to tackle integration with a File Explorer we don't yet support like Dolphin (KDE 4.x) or Finder (OS X)?
Once again, the complexity of this will vary greatly depending on what's been done already and on how ambitious you want to be. Be sure to look at the APIs used by the shell to integrate external applications. Also take a look at how bzr has been integrated with other shells or wrapped by existing GUIs.
We'd like to see Bazaar integrated with more bug trackers, testing tools and continuous integration tools. Once again, pick a tool you use every day and think about how better integration with Bazaar would help you collaborate with your peers.
Tarmac (https://launchpad.net/tarmac) is a continuous-integration tool based on Bazaar, that automatically tests and merges branches based on code review results. It's still fairly new and more can be done to make it more solid, make merges more flexible and to give a better view of what's going on.
Bazaar has basic support for using alternative algorithms for diffing and merging different file types. However, very few such algorithms have been written to date and made available, either in the core system or in plug-ins. It would be really useful to users if running diff and merge on:
- XML/HTML files
- OpenOffice documents
- Python and Java code with import conflicts* ...
Just Worked far more often.
The complexity of this project will vary depending on what file types you choose to support.
Bazaar has a number of tool for exploring history including the log command and the bzr-search plug-in. We would like to see these extended with a common search language and integrated better together. Tools like the Loggerhead web UI can then leverage this capability to provide fast, smart searches for end users.
It would be nice to extend and better integrate the bzr-grep plug-in as well, time permitting.
Another option would be to integrate bzr-search further with Unity.
This project is of moderate complexity.
Bazaar is yet to support file copies and we'd like to soon. While a simple implementation could be done quite quickly, we want copy support to Do The Right Thing and that's trickier than it sounds, particularly making merge act sensibly when a file is copied in order to be split into multiple files.
See http://bazaar-vcs.org/BzrFileCopies for an outline of what we're thinking of. It should be possible to achieve most of what we'd like here in the time available, without necessarily solving all the merge issues.
bzr gannotate and bzr viz give a pretty good view of history, but more could be done to allow people to understand the broader context of why a change was made: what else changed then? Who merged it and integrated it? When was code deleted, or what replaced it and why? This project would be good for someone with creative ideas about GUI design and familiarity with GTK+ or Qt.
bzr shelve has an interactive command-line mode that lets you select particular files or hunks. It would be good if this was generalized to more commands, so that you could interactively commit, pull, push, merge, and resolve conflicts. Some of this is done in the http://launchpad.net/bzr-interactive plugin, but it can be improved.
Bazaar currently doesn't have a way to edit commits done in a hurry. It would be good to add functionality similar to that provided by interactive rebase in git and histedit in hg.
Bazaar has a clean architecture with working trees, branches and repositories nicely separated. It would be good to support "cloud" repositories by integrating Bazaar with Tahoe. See http://allmydata.org/trac/tahoe/ticket/663 for details.
Bazaar currently only runs on Python 2.X. It would be nice to port it to Python 3.
Doing the above will require a good knowledge of the differences between CPython and the alternative platform. It will also require a good understanding of writing portable code which is efficient and enhancements to our test suite.
Post an email to the Bazaar mailing list soon outlining what project you're like to take on and why. An experienced mentor will be selected for you from the Bazaar community to assist you in scoping the work. The mentor selected will typically have 2 or more years experience working on Bazaar.
If you have any questions, please contact firstname.lastname@example.org (jelmer on #bzr).