Debian Control Files Parsing and Editing Library

Blurb

This project proposes a common library for parsing and manipulating Debian Control files, including control, copyright and changelog. Main ideas include validating and parsing of these files, with both Strict and Quirks modes for the parser. The second idea is a new frontend for Debconf using Qt4 (for which Perl bindings will be written).

Introduction

Currently, there is no common software based interface for handling debian/control files. Maintainers usually just edit these files manually, which should not be strictly necessary. Tools like dh-make-perl build new packages by transforming Perl modules and accompanying metadata to the debian/control files, but without a common software interface to do so, it becomes difficult to handle these files.

There is a module called Config::Model for Perl. What it allows one to do is model configuration files (which debian/control files really are) as Perl objects, which will thus allow any Perl code to modify the model.

One useful application of such a model is to update the debian/control files once new versions of a module are released. There are any number of possible applications for it. One idea which would be based on this model system is a Debian Perl Package autobuilder, which can download packages and automatically create the Debian files necessary to build them.

Project Ideas

  1. Build a programmatic model of debian/control, debian/copyright and debian/changelog files. This model will be able to validate and parse the files.
    • Perhaps separate Strict Mode and Quirks Mode parsers will be necessary
  2. Write a new frontend for Debconf using Qt4
    • Once phase I of this project is complete, then users can be prompted with debian/control data or similar in debconf. For example, if the copyright or licensing terms change, then the user can be shown this. Changes can be detected easily and elegantly with the Config::Model

Proposal

Deliverables

Supported Languages

The library will support calls from the following languages:

Others? Please add them. Once the C code is built, then creating bindings for other languages should be trivial, as many of them (I know Perl and Python in particular) support foreign function interfaces with C.

References

RFC: Better formatting for long descriptions (lists.debian.org)

Likely Mentors

So far, it seems difficult to find a mentor from the pkg-perl team. In terms of help and resources, Dominique Dumont has offered assistance with Config::Model; however Dominique is not a Debian Developer and so cannot be a mentor for the project.

If you are interested in mentoring this idea, please edit the Wiki and list your name here.

Aside from that, the members of the pkg-perl team have always been pretty friendly and helpful, so I don't anticipate real problems developing what is necessary.

License

I don't mind releasing my code under any license. Some of my other distributions have been released as Public Domain. I will release my code under whatever is preferred by the committee in question, be it the BSD License, the CC0 License, or the Artistic/GPL combination. I'm totally flexible here.

Bio

My name is Jonathan Yu. I am a 3rd year Electrical Engineering and Computer Science student, completing these two undergraduate programs concurrently. I'm not sure I'm the best person to work on such an undertaking, but I definitely have the passion to do so. I spend most of my free time contributing to open source projects and publishing modules on CPAN (as FREQUENCY). I have spent a few years coding Perl, doing Java/C/C++ for school... Basically I think I will be able write Perl 5 code to do it, in a maintainable, extensible way. I've also got experience programming Perl XS code, so I can optimize anything if necessary to make it run really, really fast :-), which should be helpful since there's such a huge package load.

I develop on Debian Linux with a variety of tools... I'm not sure what to list here, so I won't be too specific. I keep up on industry developments by reading reddit's programming board and blogs. The projects I have done have been smaller, but I see this proposal as a series of small projects rather than one large monolithic undertaking. As a result, I am confident I can deliver on all of my promises before the summer concludes.

I'm really just learning, and am very grateful for the community's help in getting me where I am today. I consider myself a decent coder, and while I'm learning new things all the time, I feel I know enough to make a significant positive contribution to the community. The problem I face is that I do not have much free time on my hands, since I spend most of the year in school (8 months) and then the summer working a full-time job. If I am granted this opportunity, then I will be able to focus one hundred percent of my time and energy to these projects, which I'd really like to see in the near future.

Eligibility

From reading the guidelines I believe I'm an eligible student and meet Google's legal requirements. I have all of the necessary paperwork for Google's proof, and am willing to produce copies of my transcript or whatever else are necessary. I don't anticipate there being any issues if and when my project is selected.

Debian Developer

I'm not a Debian developer (at least I don't think so, being that I still have -guest appended to my alioth userid). However, I am a pkg-perl member, and a Debian user. It's something I enjoy spending my time doing, and would just like some more time to do.

Related