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.

Reply via email to