Hello,
I'd like to participate as a student in this year's GSoC program with
Turbogears. Since TW seems to be a highly demanded area where TG2 wants
to see progress made I think I'm a good candidate to fill that gap :)
I think it's too late to sign myself as a mentor but I would also like
to offer my help to any student who ends up working in something related
to TW, feel free to drop by at the mailing list (preferred) or drop me a
private email if need any help.
Anyway, here's a draft of my proposal. I would appreciate any feedback,
even any help on the grammar or areas which need clarification or
anything in order to improve it before I submit it tonight at 00:00 UTC.
Thanks!
Alberto
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"TurboGears Trunk" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at
http://groups.google.com/group/turbogears-trunk?hl=en
-~----------~----~----~----~------~----~------~--~---
Google Summer of Code 2008 - TurboGears
+++++++++++++++++++++++++++++++++++++++
DBSprockets User Interface
--------------------------
Applicant
=========
Name
Alberto Valverde González
Contact information
alberto toscat net
Experience
- Part-time Computer Science student at the U.N.E.D in Spain.
- Contributed a significant ammount of original code, patches and
bugfixes to TurboGears in the past.
- Former TurboGears BDFL
- ToscaWidgets original author and current co-maintainer.
- 3 years experience developing web applications with several Python
web frameworks (Turbogears, Pylons, web.py, Django and CherryPy)
- moderately proficient with Javascript web-browser development
- Succesfully completed GSoC 2007.
Background
I've been involved with the Turbogears project since early 2006 and
co-authored the widget library which I sprung out as seperate library
(ToscaWidgets) usable outside TG in other python web-frameworks.
ToscaWidgets gained some traction among patient developers who stood
up to the challenge of learning an almost documentation-less library
until finally it was picked up by the DBSprockets library to serve as
a gui building tool for its DBMechanic app.
A big part of this project will involve cleaning up ToscaWidgets,
documenting it; bring it into shape so it is easily accesible to new
users and developers and finally fully embraced by TG2.
Project details
===============
Abstact
This project will attempt to database CRUD application (similar to
Django's Admin) using the DBSprockets API, TocaWidgets and Pylons/TG2.
Mentor
The ideal mentor for this project would be DBSprockets author,
Chris Perkins, for gudiance on the dbsprockets API and implementation.
Description
The final deliverable produced by the end of the summer will be a WSGI
application that can be plugged into a compatible framework to manage
the data contained inside a database or used stand-alone.
This includes the ability to create
new objects, edit them, delete them and list them with the possibility of
applying filtering criteria and executing searches.
The database access and introspection will be provided by DBSprockets. Code
written that is general enough will be contributed back to this project.
The controllers will be implemented using the lightest library/framework
possible so it can be easily integrated into any WSGI framework. Ideally
this would be WebOb and Routes although Pylons might be considered if the
former turns out to be too low-level.
The external HTTP API will be modeled after the Atom publishing protocol and
will allow to obtain HTML and JSON representations of the resources.
Four different clients will be implemented:
1) A light javascript-less client using tw.forms to allow widgets to be
easily customizable.
2) A javascript enhanced version of 1) which uses AJAX techniques to
provide paginated and sortable listings, quick access to other objects
to add to many-to-many and many-to-one associations, etc.
3) A heavy JS client which communicates with the server in JSON exclusively
4) A client python library which allows scripted access.
ExtJS and jQuery are the chosen javascript libraries to implement 2 & 3.
All widgets implemented will be packaged separately and documented so they
can be reused easily in other projects. A tutorial will be written for each
complex widget so it serves as documentation
Test coverage should not drop below 90% at any stage. Every public and test
function should have a docstring.
Hooks to allow an authorization library to be plugged in to control access
as a bonus if time permits.
Milestones
==========
May 1st:
ToscaWidgets new website will be launched to host documentation,
bug-trackers, repositories and a widget browser to showcase available
widgets. I will collect and expand all the ToscaWidgets documents that
live in docs.turbogears.org and wiki.pylonshq.com so there's an official
point of reference for users and other GSoC students who will be
working on TW related projects.
This infrastructure will be available for other widget authors to
host their widgets in.
May 26th:
Big ToscaWidgets clean-up. The main goal of this milestone is bring
TW closer to the 1.0 version so there's a stabler base to build upon and
neccesary documentation available to attract more users and developers.
This includes:
* Cleaning up all cruft that has been developed inside TW that
doesn't belong there (eg: feeder.py)
* Remove all C extensions that TW depends on, namely RuleDispatch
and PyProtocols. peak.rules might be considered as an alternative
although ideally generic functions will not be required at all
since some users don't feel confortable with them. Fortunaltely
peak.rules can extend ordinary functions so power-users will still
be able to use them if they like.
* Remove other "soft" dependencies, like PasteScript which is not
absolutely required to use TW.
* If feasible, TW should be made Jython compatible at this stage.
* Improve the static resource handling code which currently has
a critical bug (#1777)
* Improve current docstrings since some might be outdated and their
grammar is questionable.
June 21st:
First prototype heavily based on DBMechanic which should be decoupled
from TG2 and possibly Pylons too. Will be released to gather feedback
and stories regarding the wanted features of the user interface. Little
or no javascript at this point.
July 11th:
By this date the server-side API should be almost frozen and HTML and
JSON representations be available.
A Paginated/Sortable/Filterable datagrid widget will be implemented and
a tutorial written described how it was created and the rationale behind
the design decisions.
August 1st:
First prototype of the heavy JS client released to gather feedback and
steer towards the first beta.
August 11th:
First beta release of the heavy client released for wider testing. No
more features will be implemented under the sponsorship of the GSoC.
August 18th:
Documenatation and docstrings will be brushed up and possible bugs
fixed.
A tutorial will be available to introduce new users to the CRUD app.
Communication channels
======================
I will post to my blog once every 10 days to keep the community informed of my
progress.
All formal discussion with my mentor and community shall be public and
maintained over the toscawidgets-dicuss, dbsprockets and turbogears-trunk
mailing lists.
Notes
=====
The features assigned to each milestones are not yet definitive and might vary
if future discussion over the features the community needs demand it.
The dates however are unvariable in order to keep a steady rhythm of releases.
I will only be able to work 25 hours a week since I'm employed part-time. To
compensate I will start working on April 14th on polishing up ToscaWidgets.
I will probably be one week on vacations somewhen in July.
All code will be released under the MIT license.
Ideally the application written could be integrated into DBSprockets if the
later could be refactored to have fewer dependencies on TG2 and possibly
Pylons. Ideally this app should be pretty self-contained so it can be used in
custom WSGI frameworks.