[Catalyst] Google summer of code proposal

Devin Austin devin.austin at gmail.com
Thu Apr 2 18:46:19 GMT 2009


Hi all,

It's getting down to the wire, but I'd like to see what you all have as far
as input on the latest revision of my proposal.

Check it out, thanks!

-Devin

Devin Austin

devin.austin at gmail.com

=3Dhead2 Refactoring Catalyst helper modules

Abstract

=3Dover 2

=3Ditem * Proposal

My proposal is to refactor for the Catalyst web framework's helpers to
make them more extensible.  Helpers date from the early days of the
framework, but have lagged far behind in development compared to other
aspects of Catalyst.  Current solutions are hackish, brittle, and
inconsistent.  The goal of this project is to clean up the previous
=93API=94, solidify it with tests and documentation, and then expand it to
add features that will give them more usefulness than just =93generating
scaffolding=94 code.  That is, to make Catalyst helpers more useful for
everyone rather than just beginning developers.

Extending Catalyst::Helper::* will include giving the user a better API to
deal
with, for example by providing standard method calls to initialize
files, write out the required files, and modify existing code generated
via the helpers.  Most importantly we want to provide the user with a
solid foundation when they want to write their own helpers.  The two
key reasons that this would be a valuable addition to the Catalyst
project are to bring the old and mostly unmaintained codebase up to
date, and using the existing code to provide a formal API.  This will
ensure that more things can be done with helper scripts, automating
tedious and repetitive tasks, and providing a flexible way for
programmers to provide scaffolding for their own ideas (e.g in-house
scaffolding for common tasks).

Stronger helpers that to the tedious lifting means more time for the
programmer
to work on interesting problems and more time to make sure that they reach a
correct solution.

=3Dhead2 Benefits to the Perl/Open Source Community

Google Summer of Code gives me a chance to dedicate my summer to giving back
to
this community in a significant way, by helping refactor an entire portion
of
the Catalyst framework.  This is something I wouldn't necessarily get to do
normally because of time constraints from school, and work.  My experience
and
ability to problem solve and troubleshoot, along with my hard working
attitude
would bring a product back to the Catalyst community that would be on par
with
the excellence of the rest of the framework, helping a big number of our
hard
working developers out, and making Catalyst users very happy people.


=3Ditem * Deliverables

The deliverables to CPAN will be the a new version of Catalyst::Devel
using the new Helper API, and a proper (non-prototype) implementation of
Catalyst::Helper::AuthDBIC.  Each sub-project will contain tests and
documentation.  I will also provide an example application(s), and a live
implementation (hosted on the same infrastructure as the rest of the
Catalyst
project).

=3Dback


=3Ditem * Project Plans

Review current code and make a well defined list of changes that need
to be made

=3Dover 5

Current list of changes looks something like this: (my goal is to have no
one task take longer than 5-7 days)

=3Ditem * Do =93triage=94 (Prioritize) on the above list of changes

=3Ditem * Analyze modules to help us get our task done, such as
Module::Starter

=3Ditem * Begin plan of attack, start refactoring API

=3Ditem * Implement new features and fixes

=3Dover 5

=3Ditem * Such features as integrating helpers into the application creation
should be considered and most likely implemented here.  Currently, there is
too much separation between helpers and the rest of the application, so in
order
to allow helpers to modify existing code, or allow for more flexibility,
interoperability must be improved.

=3Ditem * Applications have no way of being generated with a given list of
components,
so a neat feature to add would be to allow the user to specify a list of
pre-built
components to include in their application upon creation, so as to eliminate
multiple
calls to the same helper script.

=3Dback

=3Ditem * Test, test, test, test. Unit tests, whatever kind of tests we can
think
of to make sure this project ends up rock solid, or at least very fixable.
Testing helper code can be challenging, especially as we want to introduce
methods for modifying existing applications (Catalyst;:Helper::AuthDBIC on
CPAN
is a prototype based on the existing indadequate helper structure).

=3Ditem * Concurrent with implementation, document, and then make sure upon
completion documentation is thorough and complete.  I will provide examples
and tutorials for a number of common tasks (e.g using the new helper API,
best practices, and factor in RFC comments)

=3Ditem * Assess community feedback thus far, RFC for common tasks that can
use
the new API effectively

=3Ditem * Integrate community feedback into current codebase, decide what
feedback
is useful, and what is redundant/not useful.




=3Dhead2 Project Schedule

=3Ditem * Week 1 (May 23rd-30th)

=3Dover 5

=3Ditem * Get familiar with Catalyst::Helper API, draw out path of execution

=3Dhead2 May milestone:

Have a comprehensive understanding of helper API.  Be
fairly comfortable with giving in depth feedback i.e. users that need help
on IRC

=3Dhead2 June


=3Ditem * June milestone: Have enough working code to being alpha testing a=
nd
attempt
to stabilize the API.

=3Dhead2 July six is midterm evaluation


=3Ditem * July milestone: Have a stabilized API, and a decent test suite
together.
Community feedback will be the next step, so begin advertisement.

=3Dhead2 August

=3Ditem * Testing should hopefully be the only thing left at this point, or
perfection testing, rather, polishing tests, polishing code, getting
alpha/beta
testers, preparing releases, tying up all loose ends

=3Ditem * August milestone: Finish project!

=3Dhead2 Zero Week 10th-17th (August 10th-17th is very last week)

=3Ditem * Package everything up, final test runs, and ship it.


=3Ditem * Put in to production.  I think it would be very useful to get a
Catalyst application in the wild using this as proof that this Really Works.

=3Dback

=3Dhead2 References and Likely Mentors

My co-mentors Kierent Diment and Matt S. Trout are authors of the Catalyst
book
due out in July of this year.  Both are accomplished perl programmers in not
only
the Catalyst framework field but many other aspects of the programming
language.
Also, Jonathon Rockway will be a co-mentor as well. Jonathon is also very
accomplished in his programming endeavors, he has written the Angerwhale
blog
software and the original Catalyst book.

=3Dover 3

=3Ditem L<
http://dev.catalyst.perl.org/repos/Catalyst/Catalyst-Helper-AuthDBIC/trunk/>

(the motivating and example helper for adding code modification features to
helpers)

=3Ditem L<http://dev.catalyst.perl.org/repos/Catalyst/trunk/>

(the subversion repository for Catalyst and Catalyst helpers)

=3Ditem L<
http://search.cpan.org/~mramberg/Catalyst-Devel-1.10/lib/Catalyst/Helper.pm>

(the base helper class, currently)




=3Dback


=3Dhead2 License

This library is free software, you can redistribute it and/or modify it
under
the same terms as Perl itself.


=3Dhead2 Bio

I've been programming in Perl nearly as long as I've been programming.  I've
always had a very strong passion for computer programming and more recently,
web development, so I relish any opportunity I have to work on projects that
allow me to further my knowledge in the field.


I really feel Google Summer of Code would help me get on my horse with
regards
to my career after school.  It would give me a personal portfolio of an
extremely indepth and complete project I've worked on, and give me direct
references from the people I work under.  Also, the knowledge gained would
be
invaluable to me. I'd also like to make mention that my two co-mentors
Kierent
Diment and Matt S. Trout are authors of the Catalyst book due out in July of
this
year.  Both are accomplished perl programmers in not only the Catalyst
framework
field but many other aspects of the programming language.

=3Dhead2 Accomplishments

=3Ditem L<
http://search.cpan.org/~hkclark/Catalyst-Manual-5.7020/lib/Catalyst/Manual/=
Tutorial/MoreCatalystBasics.pod
>

Helped rewrite tutorial so it uses Template::Toolkit for views instead of
TTSite

=3Ditem L<http://www.boyosplace.com>

Wrote a web application using Catalyst for boyosplace.com
which is a web site for my parents to upload pictures of their puppy
litters.
It runs on nginx + fastcgi, with a MySQL database backend, and varnish as
the
http proxy/caching engine.

=3Ditem L<http://www.mojomojo.org>

Rewrote part of the configuration to allow switching between Textile and
Markdown
for wiki entries

=3Dhead2 Eligibility

I am a junior at Metropolitan State College at Denver majoring in Web
Programming
with a minor in Computer Science.  I will be graduating in 2010, and have
the
proper papers showing this.

-- =

Devin Austin
http://www.codedright.net
http://www.dreamhost.com/r.cgi?326568/hosting.html - Host with DreamHost!
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.scsys.co.uk/pipermail/catalyst/attachments/20090402/4a093=
3f7/attachment.htm


More information about the Catalyst mailing list