Project: Tsukuru Project Building Ontology (tsukuru) Synopsis: The main component of Tsukuru (Japanese for "make" or "construct") is to design an "ontology"--that is, the structure of ideas behind a language--for building projects. A secondary component is programming a utility to actually build projects using that ontology. Benefits to the Community: GNU Make is a 20-year-old project building tool with some serious limitations, but it is still the premiere build tool for F/OSS today. By designing from ideas to implementation with an ontology-driven build tool rather than designing from implementation to automation, Tsukuru will be a more powerful, more intuitive build tool. Deliverables: * An ontology for project building. * A commandline utility for building projects. * Documentation on installation and usage of the utility. * Documentation on the theory and design of the ontology behind the utility. Project Details: There are a number of project building tools available to the F/OSS community such as GNU Make and Apache Ant. However, all of these tools have their limitations. Many of these limitations are due to the tools being designed at first for a specific task and then generalized. Rather than using this bottom-up approach, Tsukuru would be designed from the top down. In developing an ontology of building, I will consider what basic ideas exist behind the process: ideas like an "action" to be performed, an "ordering" of actions, and an action's "dependence" on other actions. After formulating this final vocabulary for project building, I will design a syntax for expressing those ideas. This is the Tsukuru ontology. After developing the ontology I will develop a representation of the ontology in some language-- moving from the idea of an Action to a string of characters like "action", "action()" or "" which represents that idea. Once a representation for the ontology is developed, I will begin work on a program that reads files written in that representation and builds a project accordingly. As long as the ontology is complete, it will be able to describe any project building situation. I intend to use XML as the language for representing the Tsukuru ontology. This is similar to the Apache Ant project; however, since Tsukuru will be a more generic, it will not have the Java-centric qualities of Ant and will not need to be significantly altered if a new commandline utility comes along that proves essential to the building process. For example, rather than having separate and words, Tsukuru would have a single word with a number of different values for the type attribute like "chmod" or "mkdir". Each of these action types would be defined by other words in the Tsukuru ontology making them user extensible. I will use Perl and the libxml/libxslt libraries for designing the commandline utility. Since the utility is driven by the ontology, future versions of the utility may be coded in other languages, use other libraries for manipulating the "makefiles", or even use other languages to represent the Tsukuru ontology if these changes would make the project a more general and useful one. Project Schedule: Week 1 (19 June) -- design ontology, research various project building utilities Week 5 (17 July) -- Work on commandline utility Week 8 ( 7 Aug ) -- Work on documentation Week 10 (21 Aug ) -- Finish documentation, work out any remaining issues with the project Bio: I am currently finishing prerequisites to enter the Computer Science masters' program at PSU, and received my undergraduate degree in Linguistics at Reed College in 2003. I have worked professionally with web design (both page and site design) and Perl for over eight years, and with XML/XSLT/XPath for four years. I am one of the core developers and currently acting project manager for the Paperboy RSS project. I have also designed the code generating my personal website using Perl and libxml/libxslt. Links: http://www.wikipedia.org/wiki/Ontology_(computer_science) -- an article that helps define "ontology" http://ant.apache.org/ -- Website for the Apache Ant project http://www.perlfoundation.org/ http://www.perl.org/ -- Websites for Perl http://xmlsoft.org/ -- Website for libxml2 library http://xmlsoft.org/XSLT/ -- Website for libxslt library http://paperboy.sourceforge.net/ http://sourceforge.net/projects/paperboy/ -- Paperboy RSS site. Content is outdated, a website redesign will be completed before official public release. http://collab.freegeek.org/~wren/ -- My personal website.