Monday, April 7, 2008

Google Summer of Code Application

Buildout Builder - An automated buildout configuration system.

Kenneth Miller
xkenneth@gmail.com
713-562-4315

Abstract

The buildout system has become an extremely useful tool for python developers and has become the de-facto method of deploying Plone configurations. For development buildout allows sand-boxing of python packages, enabling a developer to experiment with different configurations without modifying the underlying python installation and as a distribution mechanism it is useful to manage and deploy multiple configurations of Plone sites for either development or production.

A major drawback is that the underlying architecture relies on setup file based configuration, and can prove daunting to inexperienced users. In order to ease development, save time, and attract new developer's to the system I propose the development of the Buildout Builder. In it's most generic form the Buildout Builder will be a web-based graphical user interface to the buildout system and while in it's most refined form the Buildout Builder will provide pre-configured or user customizable buildout configurations of Plone.

With automatically generated buildout configurations, users can deploy software in a few commands or less. The application will target experienced developers and non-technical users alike, aiming for ease of use while maintaining the granularity of the buildout system. The Buildout Builder will exist as a web-app written in Grok. With it's simplicity, power, and active development and user base, Grok should prove to be an excellent framework for quickly deploying a rugged, easy to maintain application. The Buildout Builder will facilitate Plone deployment and ease buildout development creating an influx of new users to both technologies.

Phases of Development

Phase 1

The Buildout Builder will in it's first form exist as a way to distribute pre-selected buildout configurations for Plone. The pre-existing Plone configurations will have product software stacks tailored for different applications, such as E-Commerce, Wikis, Social Networking, Blogging and anything else that's possible with Plone. The system will draw upon the latest versions of popular recipes and products dynamically to generate configurations. All configurations will be critically selected, with user feedback generating the creation of new and fine tuning of current configurations.

Phase 2

The second phase will improve functionality to allow users more granular control over what's included in a particular Plone buildout, allowing users to assemble configurations based from selected products and recipes. The Buildout Builder will allow users to upload and use a previous configuration as a starting point.

Phase 3

The third phase of development will move away from pre-selected configurations, products, and recipes. The user will be able to include any combination of publicly available recipes and python eggs, truly exposing the full functionality of the buildout system. The Buildout Builder will interface directly to the Python Package Index, allowing users to select hand-pick eggs and recipes. If time allows, the buildout system will be extended to auto-generate installers for Plone configurations. Documentation will also be developed during this phase. Documentation will provide information for maintenance and future development.

Deliverables, Development Schedule, and Definition of Success

Success is measured by the completion of phases one and two, complete documentation, and the amount of work done towards the third phase. The time allotted should be ample to completely develop and implement all phases. The final deliverable will be a buildout configuration, accompanying recipes and eggs that compose the application. The final state of the code will be sufficient for installation in a hosting environment with little or no modification. A main goal of the project is to have an existing installation hosted, and available to the public.

A detailed schedule of deliverables is available. http://xkenneth.blogspot.com/2008/04/google-summer-of-code-schedule-of.html

Biography

Interest
Over the past year I have become more involved in developing software based on Zope and Plone related technologies and I hope to gain a very in depth understanding Zope, Plone and Grok.

Education
I'm currently a student at the University of Houston working towards a Bachelors of Science in Computer Engineering Technology. My main area of interest is digital signal processing and embedded systems design. Although my discipline is not computer science, I have always had a strong interest in the field. I have a very strong background in very low level programming with C and assembly, as well as much higher level languages such as PHP, C++, and Python. I've taken courses in subjects such as objected oriented design and data structures and hope to broaden my knowledge this summer with a course in automata theory.

Industry Experience.

Texas Instruments

I spent four years working at Texas Instruments as an applications engineer. I developed a web-based competitive analysis tool in PHP with a MySQL back-end. The tool encompassed user management, profiles, and user generated content, all written from the ground up. I developed a tool for quality and spectral analysis of analog to digital converters embedded in micro-controllers. The tool consisted of a hand written bare bones OS running on the ARM architecture that interfaced to a LabVIEW based control system and allowed users to analyze results and generate reports. I developed an application in LabVIEW for automatic detection of device validation requirements, selection, compilation and execution of pertaining test-cases, and automatic generation of results.

Teledrill

I currently work as a system design engineer for an oilfield start-up. Teledrill's primary goal is to develop a state of the art measurement while drilling tool. My projects include a python driven surface system, a web-based user driven interface that serves a number of purposes. It is used to configure the device, to receive, decode, display, and catalog the data the device transmits to it, as well as to provide the data to both other machines and humans in a number of various formats. The system relies completely on python technologies for analog data acquisition, web-based data display, protocol demodulation, data storage, and data relay. I've also taken on the task of managing our infrastructure including networking, software deployment, configuration and deployment of desktop and server systems.

Open Source Development Experience

I'm currently spear-heading an open source project titled "Python XML Serial Architecture." This is an effort to create a standard XML and Python driven interface to micro controllers and devices that use a proprietary or non-standard serial based communications protocol.

Conclusion

I've learned from my experience that I have a strong passion for automation and embedded design. The experience I have gained in the automation of complex processes allows me to have a clear view of what is required to complete this application. At its most basic level this project is the automation of time consuming repetitive tasks. An easy to use, web-based graphical user interface, will save users time, attract new developers, and spur the growth of the community surrounding these technologies.

Terminology: http://xkenneth.blogspot.com/2008/04/google-summer-of-code-terminology.html

No comments: