EvivaA declarative programming language, limited to concepts and structures.
If it turns out good, it can revolutionarize how we develop applications.
Initial thoughts are being shaped and a prototype is being built here on Google Code. Development began fall of 2009. Expect 2+ years to pass
... [More]
before anything useful appears, and 5 years before something really mature surfaces.
Development status: Halted work on version 1 "The first scream", while I study Spring Framework. Results so far includes a draft of an application configuration file.
Example codeConcepts {
Person: Name, Userid, Password, Phone, Email Address, Birthday(date)
}
Forms {
Login: Person.Userid, Person.Password
Edit details: Person
}
Displays {
Welcome {
Welcome {Person.Name}!
}
Main { Menu, Welcome }
}
Flow {
Login -> Main
Main -> Edit details
Edit details -> Main
}ScenarioImagine you write an application code, mainly consisting of minimalistic conceptual and structural definitions. You put this code into one or more containers in different environments, like web, desktop or mobile. These containers might have different presentation and processing patterns unique to them. Installation phase includes a configuration run where the containers ask you for info to successfully know how to operate the application. This is followed by an automated test run, finalizing setup by greeting you with "Application ready to operate, Sir".
Expected benefitsFirst, increase application development speeds by making software development require dramatically less coding compared to what it is today.
Second, democratize application development by less cryptic code syntax so many more people can enjoy the fantastic feeling of shaping their own creations.
Third, empower each individual to tailor his or her own IT toolkit by making minor changes to a provided common IT toolkit.
First and second benefits will hopefully be realized by the creation of the Eviva language. Third benefit will be realized by creating an application using the Eviva language which will function as a platform for each individual IT toolkit.
In other words, I'm bored with spending days and weeks implementing data transfer, data transformation, storage facilities over and over again. Why should all applications be tailor made when there are common patterns in applications? Common patterns exists for administrative applications, web applications, desktop applications, web service applications, and more.
A solution can be to move up a language generation or two. Using a high degree of abstraction will make applications easier to write. This gives less control over details. But if that is what we really want, we can always tailor it using third generation code, although at a much higher cost. Imagine science fiction programming. Imagine taking the high-level mechanisms of database, web and desktop platforms to a new platform. Focus on handling real world concepts and ignore field details for now.
The King's ThoughtBy finding and utilizing common application patterns, and code in a higher abstraction level, we will be able to construct applications by a fraction of their costs today.
Initial solutionThe basic plans for the initial system is to read a concept model and then knowing the major data flow, where to read, where to write, where to listen, where to call other systems. All details of how to view and arrange it on display as well as details of how to bind different data models together will be left to the system with the assistance of the user doing the initial tuning.
With extensive Java background, I code the system in Java. This project will start small to cover my own personal needs for an application environment, which is highly motivating and with a high potential for personal payoff. I am starting off in nov 2009, so you know how fresh it is when you read this.
Frame choicesApache License is logical for an open source project that aims to be further developed. I have used Apache products for a long time and I admire what they have achieved. Open source is fully satisfactory because if I will ever earn money from this, I expect it will be from contract work or councelling, not from selling the software.
Google Code repository is chosen because I think the project will be safe and accessible to a lot of good programmers and along the way it will have adequate tools.
Hopefully the project will become a spark for others on new projects or even some to join this project.
Thor Hovden
November 2009
Bergen, Norway [Less]