Project: Eve
Eve is a PHP framework and library which includes pre-built templates to be used as starting points for building Web applications.
Familiarity Breeds Contempt ... And Websites
I have created a lot of web applications and websites over the last 10 years and am thus familiar with the triumphs and frustrations of web development. In general, the tools for building a website are:
- The programming language. For example, PHP or Python.
- Libraries and such. Like PEAR.
- Frameworks. Such as CodeIgniter.
- Applications posing as platforms. Like Drupal or Joomla.
There are lots of good tools, but nothing that has actually been built with the problem domain of "web development" in mind. For example, one of the most common problems to be solved is input forms; how to create them easily either from program code, configuration or static HTML; how to validate input data; and so on.
Yet, there is no programming language that specifically addresses the subject of a form API without adding layers of interpreted code (i.e. Zend Form, PEAR's QuickForm, and others).
Furthermore, the libraries, frameworks, and platforms often come with a heavy cost in terms of learning curve and application performance.
A New Old Way of Doing Things
About a year ago I came across an article written by Rasmus Lerdorf, the creator of PHP. The topic was the problem of implementing MVC efficiently and the common issues with frameworks. Issues that I was experiencing at the time. His simple and straight-forward example altered my view of libraries and frameworks and led me to pursue the creation of Eve.
Yeah, Yeah, So What is It?
- Eve is a library. A growing collection of PHP classes and
functions grouped into discrete packages. As of this writing there
are tools for
- authorize_net - Internet payment gateway.
- creditcard - Credit card discovery and authentication utility.
- db - Database abstraction and data schema management.
- essage - Error handling, logging, etc.
- fedex - Shipping integration.
- filter - Data filtering and validation.
- geoip - Geo location via TCP/IP.
- html - Markup collection and generation.
- i18n - Internationalization tools.
- linkpoint - Internet paymenet gateway.
- lookup - Validation data.
- reform - Flexible, powerful, and automatic form creation and submission.
- settings - Configuration management.
- simpletest - Interface to the SimpleTest library for PHP unit testing.
- spyc - Wrapper for the SpyC YAML parser.
- swift - Wrapper for the SwiftMailer.
- ups - Shipping integration.
- vcard - vCard creation.
- webapp - Base for creating web applications.
- xmlrpc - Interface for the XMLRPC package.
- Eve is a template. Several templates have been created or are under development. A generic control panel, blog, calendar, and lots more that have already seen production use and customization.
- Eve is a framework. Version and configuration management is a central theme. Applications are "linked" against a specific version of Eve. Classes, functions, and more are managed and available for autoloading.
- Eve is a tool. A tool for both administrators and developers. Administrators can easily and securely maintain the Eve system and developers are given tools for creating and managing their applications and sites.
I've already mentioned the learning curve and performance issues associated with existing tools. In contrast, getting started with Eve requires you to
- learn some command line switches for a single command
- learn how to create an application configuration file
Yes, it's good to learn the overall approach as well, but with the quickstart templates, you can learn by example.
Combining the library and templates results in a fancy tool for creating websites or web applications quickly. No really. In my own development work, labor hours have been reduced by about 300% when using Eve. The framework aspect of Eve delivers a site that is ready to customize.
Do You Have One of those Roadmap Things?
Sort of. Current development centers around packages needed for billable projects. The library, templates, and tools will continue to undergo refinement and production use. Although the system is quite usable, there are many improvements and additions waiting for implementation. When the PHP version is solid, work will begin on a new programming language that will implement the same APIs, but will be developed from scratch (probably with C++ or D) to solve the specific problem areas of Web development and nothing more.
How Can I Get this Innovative and Amazing New Tool?
You can't, my impatient friend. Although Eve is being used on a number of production sites, it is not yet ready for release. When it is ready for release it will most likely be closed source, available through pre-approved hosting providers for a nominal licensing fee to the developer.
Wait a Minute, You Mean You Aren't Going to Give Away All of Your Hard Work for Free?
- No, I am not.
- I am a supporter, user and developer of open source software, but I
want to try something different with Eve.
- Eve may never be more than just a tool for my own custom development work. But if it does go prime time, I want to be paid for my effort. So there.
- Developing tools for developers is not my idea of a good "boxed" software strategy. I don't want to deal with the idiots I see frequently on the open source forums. People that have no business calling themselves programmers, much less charging money for such a service.
- I want to have more control over the quality of the packages in the library. Poor code quality is a significant problem in the open source world.