Macropis - web development with some of the batteries included

There is quite a lot of information on the bitbucket page and on the screenshots page that I won't rehash here. Instead I will focus on a comparison with the GUI.

First of all why should you use PicoLisp and its object database for web development at all? There are three specific things that stand out:

  1. You have an extremely easy way of traversing connections between objects, finding the hair color of a frend of a friend of the current user could be as easy as (; User friend friend haircolor). Consider the equivalent SQL query... So if you've got a problem or database with a lot of joins and connections between things then PicoLisp is definitely for you.
  2. A typical example of where you start to run into problems with an RDBMS for instance, is with financial applications. You fetch a customer with the intent of making a cash balance change, but between retrieval and update another process gets there first so you end up with a negative balance and a transaction that should not have happened. The answer is to introduce row locks with all the problems that that type of locking might bring. With PicoLisp you handle this situation with ease, the customer object if fetched into RAM where it is then locked for the update. The change is then automatically propagated to the other process that wants to update the balance. This process will then in turn notice that the balance is zero (not automatic but you get the picture, at least you're able to do the check in your application code) before committing so the whole situation is avoided.
  3. It's a lisp. And small, clean and simple to boot, unlike some other more mainstream lisps.

Over to the comparison. The big difference is that in Macropis session information is propagated by way of a session id stored in a cookie. In the GUI it is propagated in the URL/port. If that is not a problem then you should probably use the GUI. If that is a total no go then go for Macropis, in case you need more info to decide, read on.

At the time of writing Macropis has only been used in the making of itself whereas the GUI has been used in production for years, long before names like Django and Ruby on Rails even existed. On the other hand its foundation is the same code that the GUI is using, more on that below.

The GUI includes more batteries, you will have to do more heavy lifting with Macropis to achieve the same results. Validation is one example of a TODO for Macropis.

The purpose of Macropis is to first get you up and running with an environment that resembles what you have when you start out with PHP (this is pl-web). Macropis then adds page routing, menu handling, ACL, localization of content and a kind of MVC separation where the model is the entity / relation files, the controler is the app code / router and the views are the block elements. You pick and choose what you want, none of the batteries depend on any other except menus and blocks which depend on the pages.

However, nothing stops you from mixing and matching, the http server in Macropis is basically just one big copy and paste of the http server that the GUI is using, followed by some small modifications and additions.

There is also a third alternative if you're into something more like Clojure's Ring and that is web.l. Simple URL dispatch.

20sep13    hsarvell