[dev] Summer of Code application: Wandering Books

Luciano Ramalho ramalho at gmail.com
Wed May 24 08:44:40 PDT 2006

Hello, I am very glad to have been accepted by Horde for Google Summer
of Code 2006.

For those who don't know me and my proposed application, below is the
project idea I sent to SoC.

I am looking forward to hear form my mentor and get started!


Luciano Ramalho
Stand-up programmer and LibSci student

Please describe your proposed project in detail:


The goal of this project is to create a web application to allow
anyone to turn their personal book collection into a lending library.
There are some commercial and free implementations of the basic idea,
but WANDERING BOOKS will take the concept much further: it will not be
a personal library manager, but rather a distributed community library


It's simply the collection of all books belonging to you and to your
friends which are available for lending. The catalog of such a library
is the union of the catalog of each user's personal collection plus
her/his friends personal collections. This is the 'union catalog', and
it is different for each user who has a different set of friends.


- catalog her books, by typing or scanning ISBNs
- invite friends, who will have access to her books
- search her union catalog
- tag, comment, recommend and rate books in the union catalog
- ask to borrow a book
- approve lending of a book
- get e-mail remembering to return a book, or to ask for a book which is overdue


Users will be able to liberate some or all of their books. A liberated
book becomes the property of the community and available to all users
of the system; it is immediately tagged as being 'held' by its
ex-owner. A liberated book can be held by anyone as long as no one
else wants to borrow it. If you are holding a liberated book and
another person asks for it, you are required to give it up within a
certain number of weeks (proportional to the number of pages?).


Since a distributed community library has no building, users must meet
to exchange books. This can be done at their workplaces, cafes, pubs
etc. The system will help arrange such meetings, providing each user
with a list of books to take. The need to personally meet other users
is seen as a feature of the system, providing a good excuse for


Metadata for the books will be obtained on-demand in on-line sources
(such as Amazon.com and local bookstores in different countries).
Older books, without ISBN, will be cataloged by the users themselves,
but the system will try to help by fetching likely titles or authors
from on-line sources given partial or approximate spellings, and
provide facilities for the peer-review of such records. A component
architecture will be developed to allow easy implementation of new
data sources to suit local needs.


The system will be developed as a model application for programmers
learning to develop for the web using a modern framework and a
relational database. All modules will be well documented and have unit
tests. The architecture will be described in a narrative style in a
separate document explaining how the pieces fit together.


Development will be split in 4 phases. Odd phases will focus on new
development; even phases will focus on getting user feedback,
observing users and improving usability of existing functionality.

phase 1 (May/23-Jun/09)
- infrastructure set-up
- database modeling (take 1)
- cataloging screens - with ISBN (take 1)
- data source component architecture (take 1)
- first catalog data source (Amazon)
- catalog navigation
- catalog search
- book tagging, tag navigation
- messaging (confirmations and reminders)
- registering users

phase 2 (Jun/12-Jun/30)
- site is open for testers by invitation
- get user feedback
- log and analyze system usage
- enhance usability
- visual improvements
- inviting friends
- second catalog data source (Livraria Cultura)
- statistics: popular books, popular personal libraries, prolific reviewers etc.

phase 3 (Jul/03-Jul/21)
- user testing continues
- database modeling (take 2)
- cataloging screens - with ISBN (take 2)
- related tag navigation, tag cloud
- third catalog data source (Brazilian National Library)
- data source component architecture (take 2)
- existing catalog data sources refactoring
- cataloging screens - without ISBN
- statistical book recommendations

phase 4 (Jul/31-Aug/18)
- user testing of new and enhanced features
- final improvements and bug-fixing
- RSS of key reports
- developer documentation published
- site version 1.0 is open to anyone

Why are you well suited to complete this project?

- I am an experienced object-oriented web developer and instructor
- I am self-taught and motivated
- I am savvy about usability and user needs assessment
- As a Library Sciences major I am well prepared to do information
architecture and metadada handling

Please describe your usage experience/familiarity with the project you
are applying for:

- I know PHP and OO but have no experience with Horde; my goal is to
develop and document a significant yet simple app to inspire Horde

Please describe any open source development experience:

- I was half of the team who developed the Incubadora Virtual, a
GForge and Plone hosting platform funded and operated by Brazil's
foremost public R&D funding agency (Fapesp), currently hosting about
300 research projects (http://incubadora.fapesp.br)

Have you applied (or plan to apply) for any other 2006 Summer of Code
projects? If so, which ones?

- Google, Ubuntu, Python, OhioLINK, Ruby, Horde and Django

What school do you attend? How many years have you attended there?
What is your specialty/major at the school?

- I am a Library Sciences student at the Universidade de Sao Paulo
(http://usp.br), I've enrolled in 2004 and have completed more than
half the credits.

Any professional/resume or personal/blog URLs you would like to list?

- I am currently the only Brazilian authorized by Zope Corp. to
deliver their official courses here. I am an active member of the
Brazilian Python community, having written a popular on-line Python
tutorial for non-programmers and spoken about Python, Zope and Plone
on several national and a few international FLOSS conventions
(including OSCON2002 in San Diego).

How much time do you expect to have for this project?

30 hours/week for 6 weeks (May/23-Jun/30)
40 hours/week for 6 weeks (Jul/03-Jul/21; Jul/31-Aug/18)
total: 420 hours

Please list jobs, summer classes, and/or vacations that you'll need to
work around:

In Brazil our school semester ends in late June, so I've set aside
some time for academic work. I will travel for a week in late July. I
am back to school in August, but then the load is very light. All my
classes are in the evening. I am also a freelance programmer and
instructor, but I will suspend all such activities until September if
this application is approved.

Please describe any experience you have with:

- C/C++ development: only toy programs
- Scripting languages: I've been a professional Python programmer and
instructor since 1998; I've also used Perl and PHP, and played with
Tcl and Squeak
- Windows development: I developed client-server corporate apps in
Visual Basic in the 1990's
- UNIX development: I've written Python and Expect scripts for system
monitoring and automated data transfers
- Web development: I've been a professional web developer since 1995;
I know how to use CSS and JavaScript very well; I've also written Perl
CGIs, PHP and Java (Applets and Servlets).

More information about the dev mailing list