guile-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Hi! Interested in GSoC. Feedback on these ideas?


From: Paul Raccuglia
Subject: Re: Hi! Interested in GSoC. Feedback on these ideas?
Date: Fri, 8 Apr 2011 00:36:16 -0400

Here's the raw text of my application. The deadline is in about 11
hours, but I'll try to take into account any feedback.
Thanks,
-Paul


Your name
   Paul Raccuglia
Your email address
   address@hidden
   address@hidden
The name of the project
Guile – Implementing a user-friendly package manager and repository
Summary
Guile lacks a centralized, easy-to-use system for installing packages.
In the vein of apt-get and CPAN, this project will simplify the
process of distributing and acquiring packages in Guile. There exist a
number of code bases that could be very useful for this implementation
(notably including http://nixos.org/nix/ and
http://home.gna.org/dorodango/ ). I will implement an online
repository and a local client to acquire, install, update and manage
packages and their dependencies.
Benefits
   This project will benefit users of Guile by making it easy for them
to incorporate packages into their software. This is a vital feature
of a number of widely adopted projects, notably PERL, PHP and Python
(http://en.wikipedia.org/wiki/List_of_software_package_management_systems#Application-level_package_managers).
A robust, easy-to-use package manager and repository would help Guile
achieve wider adoption: ideally, easy-to-install packages would
attract a wider audience, and a good distribution mechanism will help
developer’s packages gain wider adoption.
Deliverables
There will be some alterations to existing Guile code, but most of
this project’s code will be new features.  The project will rely on a
set of fundamental sections of code: client code that acquires and
verifies the package and any dependencies (or updates to installed
packages); code that manages the packages locally (installing and
uninstalling, storing, unpacking); and code that merges upgrades into
installed packages intelligently. The client code will likely draw
from other projects.
In addition to the fundamental parts of the project, a web based
repository browser will be needed. The project will establish a set of
conventions for how this repository functions, and provide an
implementation of a repository browser.
Once the core functionality of this project is in place, it should be
structured so that adding features is relatively painless. My goal is
for the code to be easy to improve and maintain in a way that does not
depend on my involvement.
Additionally, this project will need to establish an easy-to-use but
robust set of conventions for packages, which will require clear
documentation. Packages should be acquirable from an official
repository, but unofficial sources should be allowable if the user so
chooses.
Plan
Proposal Timeline:
Before April 25:
-Begin to work with the guile-devel mailing-list and irc to establish
the project's design and conventions
-Do self coding with Guile to explore it more fully
-Discuss the project with friends and professors in addition to the
feedback I get from the guile community

April 25 - May 23: (before coding begins)
-Work to finalize the working design and conventions of the project
with my mentor, based on my conversations with the Guile community
-Continuing to work with the mailing list and irc throughout this period
-Review other projects that have tackled similar problems, make
decisions with the help of my mentor and the Guile community on what
to incorporate into the project
-Revise this plan as needed based on feedback, have a finalized
timeline prepared by May 23



May 24 - June 7: (Step 1: basic functionality)
-Write a client interface to Dorodango that handles acquiring packages
-Work on the basic manager to install / uninstall acquired packages
-Finalize preliminary design documents related to the structure of a repository
-Send a progress report / summary to the guile-devel mailing list once
this stage is finalized
-Acquire feedback from the community

June 8 - 22: (Step 2: distribution)
-Begin work on implementation of a repository
        *Implement a website that handles a browsable list of available
packages and provides details, dependencies, links, etc.
        *Write rudimentary administrator interface to add/edit packages
        *Handle communication of the client with the repository to identify
the appropriate package's location
-Continue work on client to interface with the repository to find packages
-Send a progress report / summary to the guile-devel mailing list once
this stage is finalized
-Acquire feedback from the community

June 23 - July 3: (Step 3: flesh out functionality)
-Flesh out the functionality of the client and the package manager to
include dependencies, handle updating, and sketch other essential
features. Have a list of essential features to be implemented after
the midterm evaluation
-Handle issues that have cropped up in the interim
-Code should be functional by the end of this period


July 4 - July 14: (Step 4: Clean-up for review)
-Clean up code, write documentation, fix any outstanding issues, and
complete evaluation
-Send a progress report to the guile-devel mailing list

July 15 - 17:
-Take a break, compile a list of issues, and write a revised plan for
the rest of the summer

July 18 - August 1: (Step 5: Finish functionality)
-Work on the client and manager, have all essential features working
-Work on the web client for the repository

August 2 - 8: (Step 6: Make sure it is accessible to other developers)
-Modify the client and manager code to facilitate adding nonessential
features easily

Aug 9 - 16: (Step 7: Finish up)
-Resolve outstanding flaws

August 16 - 22: (Step 8: Clean up)
-Test things, write documentation, clean up the code

September onwards:
-Continue to help maintain and support the results of the project


Communication
Communication depends on the time zone of my mentor. Email, IRC, and
phone conversations would be the main channels of communication.
Additionally, I will use git to upload my progress to a personal
(publicly-viewable) repository preferably on a daily basis and at
minimum a weekly basis. I will upload progress to github.com or
gitorious.org to facilitate inline conversations about the code.
I would like to note that I know Noah Lavine, a contributor to Guile.
If I ended up working with him in some fashion, I would be able to
communicate easily with him because he is in the same time zone, and I
am comfortable working with him.
Qualification
I am a CS/Math student at Haverford College, in Pennsylvania. I have
been coding on my own for about 10 years now. My older brother is an
experienced developer who gave me a lot of guidance as I was learning
to code.
This project appeals to me because it is a vital feature that Guile
lacks, a feature which will be important in Guile’s wider adoption. I
think Guile is very exciting, and hope that easing the barrier to
installing packages will help it grow.
This project also appealed to me compared to other projects I looked
at because it is made up of a set of relatively distinct, quantifiable
parts, which gives me confidence that it was a problem I could tackle.
I am suited to this in part because I have a pretty good understanding
of the general issues at hand, am a quick learner, because I am
comfortable working in C or Scheme, and because I have been coding and
learning and reading for long enough (approximately 10 years) in
enough languages (Python, PHP, C, C#, plus some work with Scheme and
Perl) to be acquainted with principals and processes of software
design. Plus, my older brother is an experienced developer who
continues to give me a lot of guidance in both general best practices
and giving me specific feedback on my code.
I already have a lot of the fundamental programming skills. The most
important things for me to improve will be to thoroughly familiarize
myself with the problem (over the course of the summer) and to develop
a strong relationship with the Guile community.
Once the project is “finished”, I hope to be able to steward and help
others to expand it. Ideally, the project will be easy to help
maintain and expand, so that I can focus my efforts on a different
issue (I am interested in working on a JIT compiler for Guile).
I have not worked on any serious Free Software projects before, only
used them; I am excited to start giving back to a project.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]