Author: Gabriele Santilli
Date: 7 July 2004
The purpose of this paper is to illustrate the idea behind the “Your Values!” project. The results of the project will be released under the GPL.
Your Values! is meant to bring innovation to database applications. It should also serve as a CMS/Wiki kind of things. (Your Values! is expected to support both traditional (/View based) and web user interfaces.) Its purpose is to manage and edit data; but in Your Values!, programs are also considered data, so we can also say that its purpose is creating and editing programs; more specifically, Your Values! programs are programs that are capable of editing themselves.
The first step in the development of Your Values! is the development of persistent REBOL values: that is, persistent counterparts to REBOL’s datatypes. For the storage a database backend will be used (support for MySQL and RebDB are expected at the beginning). To the usual REBOL types we will add a number of other types either for legacy reasons (i.e. TABLE!s to handle tables in RDBMS) or for efficiency reasons in specific problem domains.
One important ability of the persistent values layer is also to provide the ability to associate values to form a graph. A relation associates three persistent values forming ordered triplets. Given a value, the engine has to be able to find all the relations where it is associated with other values.
The starting point in the graph will be the USER! value corresponding to the current user. This is the value that is initialized at the start of any Your Values! program (i.e. by asking the user for a username and password, or by any other means depending on the application). The user will so be able to reach all his values by navigating the graph starting from his USER! value.
Persistent values will then need to be editable visually. The visual values is what the users will actually see and consider his values. The user interface of Your Values! should not only be able to edit any persistent value and any relation, but it should also be able to edit itself. This way the UI will be extensible and adaptable quickly to user needs.
The development of such a UI is one of the most interesting parts of Your Values!. We will be creating programs that evolve together with their users.
To be able to quickly create programs using Your Values, users not only need to be able to edit values, but they need to be able to define how values should be processed or validated and so on. Common operations such as printing and reporting should be always readily available.