[Soc-coordination] Google Summer of Code Proposal

Ian Foster mrlanrat at gmail.com
Fri Apr 3 03:24:00 UTC 2009


  *Name: *Ian Foster
*
**Email:* mrlanrat at gmail.com

 *Background:* I am a freshman college student looking to go into Computer
Science, I First learned about Linux in 7th grade and have been using it
more and more every day since (I am using 99.9% Linux now) I love the Open
source idea and want to contribute back to the community. I am not a very
experienced programmer but I want to learn as much as I can. I have most
experience in web development which is what gave me this idea.

 *Project Title:* Web Repository (maybe call it Repoman for repository
manager?)

*Benefits to Debian:* This project would allow more people to upload to
repository's and make it easier to create a new one. Along with a new way
for distributing packages.

 *Deliverables*: A new way of managing repository's through a web GUI.*
*


**
**

*Abstract*:

A PHP system that would manager a new deb repository. It would have the
ability to add, remove, update, etc.. applications from the repository all
from a web interface. The user will upload a deb that they want to add to
the repository and this program will extract the information from the deb
and place it in the appropriate location and update the packages file

The repository will be searchable just like searching for a package in
synaptic or another package manager.

Some advantages of this system are a much simpler way of creating new
repositories, and managing them. And You no longer need to keep a copy of a
repository on your local computer, everything will be web based. But there
will be nothing preventing older forms of repository management from working
too.

Once the project is finished if time permits I'd like to add a “One Click
Install” feature similar to what is found in Maemo, a distribution based of
Debian that allows the user to install a program my opening a small text
file.


*Project details:*

When installing the web repository for the first time it will ask you about
what the name of repository should be, the distribution, and components.
Using that information it will create the respective folders along with the
Release file.

 After the repository is setup the user will have the ability to upload .deb
packages. The php program would move the deb to a temp or working folder,
where it would extract the control.tar.gz file from the deb which is an ar
archive. Then it would extract the control file from /./control in the
control.tar.gz archive. It would then display this information on the screen
allowing the user to edit it if desired. After submitting the control data
back to the program it would move the .deb to a “pool” folder. Then it would
put the data from the control file into a Packages file that would be in the
distribution/component/architecture/ folder. Then it would make two archives
of this file, one .bz2 and the other .gz.

 Every time a new package is added the program will do the same as above but
add the new information to the Packages files.

 When the user wants to remove a package the program will look in the
Packages file for the “Filename: “ entry to get the packages location, then
it will delete the file, and remove the corresponding entry in the Packages
files.

The repository will also be searchable, You would be able to go to a search
page and search for a package by name, description or both. And even be able
to refine the search by architecture, etc.. The program would take the
search term and look in the respective Packages files under the “Package: “
section for the package name and the “Description: “ section for the
description.

The repository can be protected by a single password for uploading or have
multiple usernames and passwords, It will also have the ability to have
guest or public users to search the repository or only users with accounts.

Once the above is working when the user searches and selects a file they
will have two option, download it or download a “One Click Install” file.
The one click install file will be a small text file with the .install
extension. The file will have two sections a “[install]” section and a
“[catalog]” section. The install section will contain the package name and
the “[catalog]” name. The [catalog] will contain the deb line of the
repository the package is from. That way if a user wants to install a
package that is not in a repository this will add that repository for them
and install the program. This would require a program to be installed on the
computer that would know how to read the .install files. The idea of a
.install file came from Mameo and it is not my own.


*Project schedule:* I can start work immediately after My proposal is
approved, I imagine that the project will take all of the 3 months to
complete. After the Google Summer of Code is over I would still like to
continue work on the project adding new features and removing bugs.

*Other summer plans:* I have a part-time job as a webmaster, but I can work
from home which means anywhere with wifi. I also have a comp that will take
up one week. The remaining time I plan on working on this project.

*Exams and other commitments:* None.

*If you are not a Debian Developer:* I do plan on working on the project in
my free tome after the summer, I would love to see it grow and even have
other contribute to it.


-- 
Ian Foster
http://lanrat.com
http://world0.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.alioth.debian.org/pipermail/soc-coordination/attachments/20090402/d6818498/attachment.htm 


More information about the Soc-coordination mailing list