SourceForgeProjectRequest

 Edit this page
On 2003-10-17 I submitted a project request to SourceForge. Here are the details submitted:
On 2003-11-06 Our project request was granted. We have a project page, but there is almost nothing there yet.

License

Wheat will be initially licensed under the Academic Free License v. 2.0.

Public Description

This is the short description that will accompany the project.

Wheat is a language and environment for creating dynamic web sites like blogs and portals: Every object has a URI, the virtual machine is a web server, and the development environment is a Wiki!

Registration Description

This is the project description that is submitted for review by SourceForge admins.

Wheat is a programming language, library and environment for creating internet programs. Its target audience is developers of small to medium sized dynamic web sites. Wheat's goal is to be the kind of environment you'd write Wiki or blog software in.

Wheat takes a fundamentally different approach to web programming than common web scripting systems. In Wheat, all objects exist in a single hierarchical name space, which in turn maps onto the URI name space. Hence, all objects in Wheat have a URI, and are accessible via the web. The Wheat virtual machine is in fact a web server. Requests via HTTP are mapped to objects, which are then rendered via XML templates, usually to XHTML, and then returned.

These concepts are deeply embedded in the Wheat language and implementation: Object containment, and hence the hierarchical name space is fundamental part of the object model and the only pointer-like construct is the link, which is a reference to another object via a URL. This is done so that the developer can stay entirely in the mind set of putting live objects on the web. It also means that cross-internet programming is easy: An object can inherit from a class in a library on another server just as easily as it can from a local library as the inherits-form pointer is just a URL!

The development environment for Wheat is written in Wheat. Programming Wheat means interacting with a web site running on a Wheat server, and is therefore easily collaborative. The experience is like writing on a Wiki, only authoring objects and code, not prose. The environment also provides Webdav access so that Wheat objects can be easily coded and edited using existing tools such as text editors, XML editors and HTML authoring applications.

Major Features


Interactivity

Wheat makes extensive use of XML. Wherever possible, XML is used in the implementation:

In addition, reading and writing external XML formats is a major focus: XML documents can be easily transformed to and from trees of objects with matching classes and features (rather than a generic DOM tree). Object trees can also be transformed into XML documents via a templating engine, which makes generating XHTML documents especially easy.

The Wheat virtual machine is fundamentally a server. It supports HTTP and Webdav directly. In addition, when Wheat servers interact, they use XML-RPC.

Implementation

The low level Wheat virtual machine is written in C++. The libraries and frameworks of Wheat are written in a combination of C++ and its own programming language.

At present, Wheat makes use of two open source libraries: PTypes and Expat, both hosted on SourceForge. Wheat also incorporates an XML templating engine and simple eXtreme Programming unit test framework. These parts may be spun out into separate projects at a later date.

Wheat is expected to work on Linux, most Unix-like systems, Mac OS X, and Windows. The platform list is basically tied to the platforms that PTypes supports.

Obstacles

The biggest obstacle will be getting enough of an environment built to make programming web sites as easy, or easier, than other current methods. There is a critical level of tools that need to be present to get developers to use it.

Another concern is making the language run fast enough. The Wheat language is very high level and what seems simple to write in the language may in fact be rather complicated to execute. There are several areas that will provide opportunities for technical innovation:

Current Work

Wheat has been in design for over a year. Some of the design has taken place on a publicly accessible Wiki, with the participation of about a dozen people:

There was a trial implementation, based on some earlier language work, that was put up live this past Spring. This code is mostly throw-away and was simply to explore some implementation issues. It does include the XML templating engine, the small test unit framework, and worked out the interaction with the Expat and PTypes libraries. The threaded web server framework comes from PTypes. All enhancements to the base web server have been, and will continue to be, passed back to that project.

Currently, there is an implementation of the low-level object system and XML store. This code is almost ready for first public release, though it is really of interest only to current and potential project developers.

All code to this point has been the work of one developer, working on both Mac OS X and Linux. The developer previously created a complete programming language and environment implementation that is similar and much of that system can be mined for library code.

Names

Descriptive Name: Wheat
UNIX Name: wheat

References:


There is no comment on this page. [Display comments/form]