evapporate 0.1.0 Will Drewry Copyright 2007 License ------- lib*/ and include/* are all currently licensed under the LGPL v2 skel/* is licensed entered into the public domain scripts/event_rpcgen.py were modified but not written by me. This code is licensed as per its header. scripts/* all other script files are under the LGPL v2 for now. This licensing is tenative as this is the first release. If anything is not clear, consider it "All Rights Reserved" and contact me for clarification. Summary ------- A basic C web application framework which relies on asynchronous I/O and a high speed backend for serving web applications in a single threaded environment with maximal performance. Evapporate supplies the basics for creating a database-backed web application without the overhead of a scripting language or almost anything else. You don't get to choose your database or your templating engine. Nor do you get to use something other than C. This framework is all about getting things done. As much overhead as possible has been peeled back while still providing a pleasant programming interface. Installing --------- Not pretty, but here's what I've got: sudo bash -c 'PREFIX=/usr/local/encap/evapporate-0.1.0 ./install.sh ' sudo epkg -i evapporate-0.1.0 You'll cmake, make, bash, and python to get this monstrousity going. Setting up a new evapp ---------------------- * Create the skeleton: evapporate create myapp * Create an event_tagging schema: cd myapp vim schema/schema.rpc * Try it out: # Build make # Create some place to store the database mkdir /tmp/db # Load it with the default templates evapporate load /tmp/db # Starts it with scaffolding in debug mode ./appd -D -d /tmp/db # Browse to http://localhost:8080 # To quit: curl -i http://localhost:8080/quit Notes and Warnings ------------------ This framework is still very immature. More work will be coming in the near future regarding automagic object association and perhaps some authentication utility functions. (Also support for "read-only" mode, etc.) WARNING WARNING I don't know how to use BDB. It may not be properly WARNING WARNING It may not be properly writing out except on shutdown WARNING WARNING Please...help...me. Oh yeah, also the ids in the scaffold are derived from the time with high resolution. If you run with multiple writers, these could collide. You might want to use something with a low chance of collisions if you'll be splitting up the writer work. Tips and Tricks --------------- The scaffolding will provide the quickest way to get your evapp-based web application going. However, you will probably want to use a frontend with evapp, like nginx, lighttpd, plb, etc. This will give you the ability to scale transparently (1 process per cpu, multiple readers/one writer, multiple server). In addition, you can take advantage of existing server to dish up static content.