Name: Christopher Baines
Background: I am a student currently in my last year at secondary school studying Mathematics, Further Mathematics, Chemistry and Physics in the UK, I hope to go to university next year to study computer science. A few years ago I taught myself Java for competing in Robotics competitions, however since then I have done tiny amounts of programming in python, c, c++ and perl as well.
I have already done some work for Debian through Google in the Google Code In, triaging a few bugs and fixing a wish list bug in dpkg-dev , I also maintain a small java package in Debian and hope to upload more packages soon .
Project title: Apt Ordering Code Improvements
Synopsis: Improve apt's approach when manipulating packages by improving the ordering and and adding the ability to fetch and install packages in parallel.
Benefits to Debian: Quicker, more efficient package management.
- Improved package ordering.
- Testsuite for ordering code.
- Package fetching and installing working in parallel (no guaranties on full implementation)
- Relevant documentation for the above.
Project details: I plan to follow the description given in the idea proposal, however I will definitely attempt to implement parallel package fetching and installation.
I intend to modify the ordering code in libapt (centred around apt-pkg/orderlist.cc), to enable better customisation of the ordering process according to more parameters for instance "order-for-minimal amounts of dpkg invocations", "order for minimal amount of broken packages at any point during the install". I will attempt to clean, and improve the in-line documentation. I also hope to modify libapt so that it can fetch and install packages in parallel, I hope to finish of much of this last objective in the coding time, but can't guarantee it, I definitely will endeavor to continue working on this after the end of the program.
I will also write a testing suite, as I believe this will need a set of test packages, I will create a set of test packages that have a complex dependency structure, so that they can be used to easily and quickly check for regressions and problems with apt. However I have not yet checked if this is a feasible or appropriate approach?
Project schedule: I will begin working slowly as soon as I am accepted on to the program, I have exams between the 13th to the 21st of June so once these are over I will begin working full time on my project. During the time before my exams I hope to:
- Meet and get to know the Mentors.
- Look in more detail at exactly how the libapt/apt system works.
- Brainstorm and finalise my plans with my Mentor and others.
- Start coding snippets of code.
- Create the package set for the test-suite (if needed).
- Possibly attempt evaluation and fixing of some of the many bugs in apt, to get a good basis for programming within the package.
- Brushing up my programming, c++, and learning how to use the bzr vcs.
After my exams are finished I will be free to work on coding full time, I hope to finish off all the changes to libapt within a few weeks, this could be just the ordering changes, or the beginnings of the parallel downloads, or a working parallel download system, depending on how conceptually and programmatic hard is will be to implement. I hope to know this before my exams so that I can inform my mentor and better target my work afterwards.
I also hope to be testing the code with the test-suite before and at least at this stage. Much of the time-scales mentioned depend on the difficulties I am sure to find out about integrating the new changes mentioned in to libapt so this schedule is not concrete.
Exams and other commitments and other summer plans: I have no plans for other work but as explained my exams do interfere with the standard timetable of work. I hope also to continue my Debian packaging efforts.
If you are not a Debian Developer: I hope to try and get to DebConf to get more involved with Debian development and get my GPG key signed so that I can begin the process of becoming a Debian Maintainer.