<meta http-equiv="CONTENT-TYPE" content="text/html; charset=utf-8">
        <title></title>
        <meta name="GENERATOR" content="OpenOffice.org 2.4  (Unix)">
        <style type="text/css">
        &amp;lt;!--
                @page { size: 8.5in 11in; margin: 0.79in }
                P { margin-bottom: 0.08in }
        --&amp;gt;</style><span style=""><b>Name:
</b>Ian Foster</span><br><b><br></b><span style=""><b>Email:</b>
<a href="mailto:mrlanrat@gmail.com">mrlanrat@gmail.com</a></span>
<p style="margin-bottom: 0in;">
</p>
<p style="margin-bottom: 0in;"><span style=""><b>Background:</b>
I am a freshman college student looking to go into Computer Science,
I First learned about Linux in 7</span><sup><span style="">th</span></sup><span style="">
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.</span></p>
<p style="margin-bottom: 0in;">
</p>

<p style="margin-bottom: 0in;"><span style=""><b>Project
Title:</b> Web Repository (maybe call it Repoman for repository manager?)</span><br>
</p>
<p style="margin-bottom: 0in;"><span style=""><b>Benefits
to Debian:</b> This project would allow more people to upload to
repository&#39;s and make it easier to create a new one. Along with a new
way for distributing packages.</span></p>
<p style="margin-bottom: 0in;">
</p>
<p style="margin-bottom: 0in;"><span style=""><b>Deliverables</b>:
A new way of managing repository&#39;s through a web GUI.<b><br></b></span></p><p style="margin-bottom: 0in;"><br><span style=""><b></b></span></p><b></b><p style="margin-bottom: 0in;"><b>Abstract</b>:</p><p style="margin-bottom: 0in;">

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</p>

<p style="margin-bottom: 0in;">The repository will be searchable just
like searching for a package in synaptic or another package manager.</p>

<p style="margin-bottom: 0in;">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.</p>

<p style="margin-bottom: 0in;">Once the project is finished if time
permits I&#39;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.</p><p style="margin-bottom: 0in;"><br></p>
<p style="margin-bottom: 0in;"></p><span style=""></span><b>Project details:</b><br><br>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.
<p style="margin-bottom: 0in;">
</p>
<p style="margin-bottom: 0in;">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.</p>
<p style="margin-bottom: 0in;">
</p>
<p style="margin-bottom: 0in;">Every time a new package is added the
program will do the same as above but add the new information to the
Packages files.</p>
<p style="margin-bottom: 0in;">
</p>
<p style="margin-bottom: 0in;">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.</p>

<p style="margin-bottom: 0in;">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<span style=""> Packages files
under the “Package: “ section for the package name and the
“Description: “ section for the description.</span></p>

<p style="margin-bottom: 0in;"><span style="">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.</span></p>

<p style="margin-bottom: 0in;"><span style="">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.</span></p><p style="margin-bottom: 0in;"><span style=""><br></span></p>

<p style="margin-bottom: 0in;"><span style=""><b>Project
schedule:</b> 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.</span></p>

<p style="margin-bottom: 0in;"><span style=""><b>Other
summer plans:</b> 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.</span></p>

<p style="margin-bottom: 0in;"><span style=""><b>Exams
and other commitments:</b> None.</span></p>

<p style="margin-bottom: 0in;"><span style=""><b>If
you are not a Debian Developer:</b> 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.</span></p>
<br clear="all"><br>-- <br>Ian Foster<br><a href="http://lanrat.com">http://lanrat.com</a><br><a href="http://world0.com">http://world0.com</a><br>