DemoNine will be an open-source library, eventually with an IDE, for developing web-applications. These applications will require a server running Ruby 1.8, and clients with browsers supporting JavaScript 1.6 or later. Actually, the framework will also seamlessly render sites that work without Javascript, but there will be limited functionality where client side events are concerned. Namely, the only client-side events that will work without Javascript are onSubmit and onClick events. The good part is that DemoNine will handle Javascript-less clients automatically. We may figure out a work around for more events, like onFocus, but for the moment we are at a loss as to how to do this without Javascript.
The important thing to remember is that the DemoNine framework will provide a high level of abstraction that will allow rapid software development similar to that of Java or C#--both with a plethora of built-in libraries. However, DemoNine's power is that it will unify all the common system layers in a web application--HTML, server-side scripting language, Javascript, MySQL, XML, etc. By "unify", we mean eliminate all but a single language.
Best of all, elegance will be a driving force in the layout and implementation of the DemoNine framework. Frameworks that require excessive or repetitive coding in order to make new modules compliant with the framework's standards are not nearly as useful. Also, they make for clumbsy code that looks terrible. DemoNine will accomplish this elegance and simplicity by abstracting and exploiting some of the amazing core features available in Ruby. For example, think of the trace functions' power. In this sense, think of DemoNine as an extension to the Ruby compiler--an extension to the Ruby language itself rather than simply a bunch of functions that you can call.
What does all this mean? Imagine being able to build a web application with Ruby in the exact same way you would build say a Qt application with Ruby. Programmers will be able to develop applications delivered through a web page in the exact same way they develop applications for Windows or Gnome Desktop. This is something many web applications already do, such as Amazon.com, GMail, Facebook, etc. But, the production frameworks used by those systems are not entirely available to the public, if at all, and they still do not eliminate the need for writing HTML, Javascript and annoying SQL statements. We know what you are thinking--"That's witch craft!", or "Hey, there is already a project that does that!" If your thinking the latter, please send a link via e-mail so we can review the project. But we warn you, if it is not written in Ruby, it probably can't do what DemoNine can, and it certainly can't do it as elegantly. If it is Ruby or Ruby on Rails based, then it probably comes close to DemoNine, but still falls just a bit short. Nevertheless, send us the links. Our contact info is at the bottom of this page.
The first pre-alpha release of this framework (palpha 1.0) is slated to be released in the second quarter of 2008. The framework will contain support for the at least the following:
Event systems which will trigger system wide events which can call code via Javascript on the client side, in Ruby on the server side, or both. For example, an onClick event can trigger both Javascript functions and Ruby functions on the server-side. A function in Ruby can trigger functions in Ruby on the server or in Javascript on the client. Enough library tools to build a generic website with forms, tabbed forms, drop down menus, vertical menus, basic content management, etc. Ajax forms and UI controls that can be used and extended without ANY knowledge of Javascript or HTML at all! Ajax controls which can trigger events in the browser and on the server, such as deleting a record from list or changing the site theme, or even simply triggering a word count box to update it's display. Ajax data tables which can show generic data in rows and columns, similar to Ruby on Rails. Database abstraction layer which internally handles normalization and de-normalization of data automatically. Extendable libraries to customize and expand built in functionality, while maintaining the built in support for existing Ajax and event systems. User log in and account management, with group level permissions. The ability to nest groups within other groups, and put users in multiple groups in order to create an abstract ACL hierarchy. And, expect anything else we can get implemented by May of 2008.