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 [email protected] =head2 Refactoring Catalyst helper modules Abstract =over 2 =item * 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 “API”, solidify it with tests and documentation, and then expand it to add features that will give them more usefulness than just “generating scaffolding” 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. =head2 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. =item * 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). =back =item * Project Plans Review current code and make a well defined list of changes that need to be made =over 5 Current list of changes looks something like this: (my goal is to have no one task take longer than 5-7 days) =item * Do “triage” (Prioritize) on the above list of changes =item * Analyze modules to help us get our task done, such as Module::Starter =item * Begin plan of attack, start refactoring API =item * Implement new features and fixes =over 5 =item * 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. =item * 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. =back =item * 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). =item * 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) =item * Assess community feedback thus far, RFC for common tasks that can use the new API effectively =item * Integrate community feedback into current codebase, decide what feedback is useful, and what is redundant/not useful. =head2 Project Schedule =item * Week 1 (May 23rd-30th) =over 5 =item * Get familiar with Catalyst::Helper API, draw out path of execution =head2 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 =head2 June =item * June milestone: Have enough working code to being alpha testing and attempt to stabilize the API. =head2 July six is midterm evaluation =item * July milestone: Have a stabilized API, and a decent test suite together. Community feedback will be the next step, so begin advertisement. =head2 August =item * 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 =item * August milestone: Finish project! =head2 Zero Week 10th-17th (August 10th-17th is very last week) =item * Package everything up, final test runs, and ship it. =item * 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. =back =head2 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. =over 3 =item L< http://dev.catalyst.perl.org/repos/Catalyst/Catalyst-Helper-AuthDBIC/trunk/> (the motivating and example helper for adding code modification features to helpers) =item L<http://dev.catalyst.perl.org/repos/Catalyst/trunk/> (the subversion repository for Catalyst and Catalyst helpers) =item L< http://search.cpan.org/~mramberg/Catalyst-Devel-1.10/lib/Catalyst/Helper.pm> (the base helper class, currently) =back =head2 License This library is free software, you can redistribute it and/or modify it under the same terms as Perl itself. =head2 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. =head2 Accomplishments =item 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 =item 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. =item L<http://www.mojomojo.org> Rewrote part of the configuration to allow switching between Textile and Markdown for wiki entries =head2 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!
_______________________________________________ List: [email protected] Listinfo: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst Searchable archive: http://www.mail-archive.com/[email protected]/ Dev site: http://dev.catalyst.perl.org/
