Today, I make my first act as a contributor to the open-source community. I've always had a quiet admiration for those software engineers who have the time and energy to not only keep a business or day job, but also contribute to projects like LINUX, jQuery, and the like. I never thought that I had any special software idea that I wanted to share with the world until recently. Jeff Atwood said, "I have seen the future of programming, my friends, and it is terrible CRUD apps running on Wintel boxes!" I've worked on a number of CRUD applications during my time as a software developer, and it seems to me that one thing in particular that makes for so many terrible CRUD apps is the tedious repetition of tasks when it comes to making CRUD applications.
I believe that DRY is probably the single most fundamental precept of software engineering. However, the creation of CRUD applications is very un-DRY, in my experience. If asked to create a CRUD application that does so much as provide a web interface to a single SQL table, I have to create a page that displays an index of rows. I need to create a page that displays a form, with code that reads the form, possibly with special controls involved. Furthermore, each developer has his own style and preferences for coding. The result is that each CRUD web page, even in the same application, is slightly different from every other CRUD web page. Furthermore, each line of code written to create these pagess poses the opportunity for a bug or security problem.
At the moment, I am between jobs, so I set about to create a framework that would make all the "default" assumptions about how a CRUD web page should operate and allow the developer to specify anything out of the ordinary. So far, I believe that it works really well. I have an "Index" page that displays a list of records and I have an "Editor" page that allows for records to be created and updated. However, I believe that there are a number of important functionalities that need to be implemented in order to make this a system that developers (including myself) will want to use in production. Chief among these are making the index page work with various AJAX frameworks and making the system work with two SQL tables at once.
I have released an early version of my web development framework. I call it, "Express Forms 0.5." It is currently hosted on github at https://github.com/DanielLangdon/ExpressForms.
I have two major goals that I wish to accomplish by open-sourcing this software.
You can see the framework in action with a few examples here: Express Forms 0.5 Example
You're very welcome to try out this early release version. Any feedback is welcome.