Project description

Name

Eden - Event Driven Evaluation Nodes.

Licence

QQuick licence, see www.qquick.org.

Purpose

Eden is a library that allows rapid declarative construction of applications.

How does it work

All program logic and processing is specified by functional dependencies between Nodes.
Dependencies can be cyclic and exception handling by rollback is provided.
Nodes can be used in any situation, for console apps, batch apps, or apps using any GUI library that has a Python API.

To make life easier, a set of Views is available.
Each View is a thin layer on top of a GUI Widget class from the underlying GUI library.
Views can be connected to Nodes using Links.
Typically a View will be connected to multiple Nodes, but also a Node can be connected to multiple Views.
In this way a complete GUI app can be “wired” together.
Layout is dynamic.
Both data and layout are persistent.

Practical experiences using Eden

Using Eden in everyday practice has proven a pleasure.
Eden has been in use for multiple years now by multiple people working on diverse engineering projects.
The resulting applications involve dozens of modules, most of them with dozens of nodes, some nodes carrying many megabytes of data.
A characteristic of both projects is that requirements rapidly evolved during the project.
With Eden it proved remarkably easy to follow the changing requirements.
In spite of the fact that requirements changed frequently and deeply, application structure has remained lean and clean.
Unfortunately these projects, that otherwise might have very well served as coding and style examples, were all proprietary.
One of the people working on a project remarked that with Eden, coding clean, flexible and maintainable program logic was as easy and routinely as drawing up a shopping list.

Learning Eden

Although the tutorial examples are simple for anyone to comprehend, they by far don’t cover all the features.
Moreover they are too small to reveal issues of overall program organisation, like the use of the Module mechanism.
Using Eden in an effective way for a non-trivial app has a steep (but short) learing curve.
It has proven feasible to get a “fresh” developer upto speed in a few days of side by side tutoring. There’s a real need for freely available elaborated example, though.
Currently I concentrate upon the CPython + Kivy version, since mobile- and tablet platforms are most of the action is. One public domain application that uses the IronPython + WinForms version is Wave (see www.qquick.org).
It is, however, not yet complete and to specialistic to serve as an example.
A killer app would help. As soon as the CPython + Kivy version has some body, I hope to come up with a free multiplatform app that proves the point as well as is suitable as an elaborated example.

Status

Eden for IronPython + WinForms has been used for production programming for multiple years now by several people.
Eden for CPython + Kivy is in the early stages of development.

Getting started

Using IronPython + WinForms

Using CPython + Kivy

Compatibility

The IronPython + WinForms version has been tested and used extensively on Windows from XP to 8.1.
It has never been tested on Linux + Mono.

The Views of the CPython + Kivy version will reflect the particularities of Kivy and of the diversity of platforms it should run at.
So, although there will be many common elements, there will be no one to one correspondence between Views based on Kivy and Views based on WinForms.

The essence of the matter, the API of the underlying Event Driven Evaluation Nodes pattern, however, is the same. Only the GUI part differs.

Future

Plans are to build out and fully document Eden and stay committed to it for a long time to come.
However not any, even implied guarantee is made with respect to its continuity.
Time will have to prove whether they acquire mindshare.

There exists a proprietary commercial port of Eden to Qt using PyQt.
It runs on Linux and Windows and was made and is owned by a third party.
It is not available as open source software, but its existence has proven the portability of Eden.

Some work has been done on a TkInter version, but it has been abandoned in favor of Kivy.

Co-Development

The code of the Eden project is hosted by GitHub.
The plan is to involve more developers as soon as possible.
Completing the TkInter version e.g. would be great…
Coding for Eden requires solid mastery of the Node/Link/View concepts, including rollback and cyclic dependencies.
The essence is in the Node library module.
Although it is a small, extensively commented module, it is quite hard grab the nifty details.
A very concise description is what I’ll have to come up with…

Enjoy!

qQuickLicence

This license governs use of the accompanying software (“Software”), and your use of
the Software constitutes acceptance of this license.

You may use the Software for any commercial or noncommercial purpose, including
distributing derivative works.

In return, it is required that you agree:

Not to remove any copyright or other notices from the Software.

That if you distribute the Software in source code form you do so only under
this license (i.e. you must include a complete copy of this license with your
distribution in a plain text file named QQuickLicence.txt),
and if you distribute the Software solely in object form
you only do so under a license that complies with this license.

That the Software comes “as is”, with no warranties. None whatsoever. This
means no express, implied or statutory warranty, including without limitation,
warranties of merchantability or fitness for a particular purpose or any
warranty of title or non-infringement. Also, you must pass this disclaimer on
whenever you distribute the Software or derivative works.

That neither Geatec Engineering nor any contributor to the Software will be liable for any
of those types of damages known as indirect, special, consequential, or
incidental related to the Software or this license, to the maximum extent the law
permits, no matter what legal theory it’s based on. Also, you must pass this
limitation of liability on whenever you distribute the Software or derivative
works.

That you will not use or cause usage of the Software in safety-critical situations
under any circumstances.

That if you sue anyone over patents that you think may apply to the Software for a
person’s use of the Software, your license to the Software ends automatically.

That your rights under this License end automatically if you breach it in any way.

That all rights not expressly granted to you in this license are reserved.