remember me
2010-07-21 17:25
Since spring 2020 I have found time to migrate madpy cms .
It was something I wanting to do .
I have strarted developing madpy about 2006-2007.
I wanted to jump to web programming as a programmer working then with desktop , command line applications being fascinated by the new world back then .
Although my first web pages are dated back to 1998 and my first web programming 
java buttons running as java applets.
Inspiration was the new kid in town python and Plone a very sophisticated CMS (content management system) written in python ,open source with it's own web server Zope.
Plone was heavy ,and buggy and difficult to alter and comprehend.

I decided then to make my own big project.
A CMS written from scratch , that I would write in python.
The underlying platform was easy to choose.
mod_python by Trubetskoi , an apache module that embeds python in apache web server
and provides the basic infrastructure for web development. 
Sessions, redirects , cookies and a few more..
My basic thing to copy was plone.
In plone you had clean urls .
Also then url dispatching based on regular expressions started getting used.
Read some books about design patterns and chose my favorite ones that I found handy to use in my new CMS.
The Behavioral design pattern.
So I wrote madpy , then 2007-2008.
Madpy is an application that takes as input url's and sends back text(html,xml,etc)  or binary files.That's about what every cms basically does.
But on top of that just like every CMS it applies security and permissions mechanisms 
that can allow user1 to see '/url1' but not to see '/url2' if such a permission has been applied.
The behavioral design pattern is implemented in appilcations like Comments ,Votes , WhoRead ,Tags and others.
The behaviors stick to the url , for example ou have an object the most basic a generic html page , you assign to it behaviors , like this object can be voted , commented , tagged.
This means that this url can accept additional path patterns like ' vote?value=1' , 'tags/edit'  , 'permissions/edit' 
(the security behavior can also  be declared in the settings file for every object delivered by madpy .  If an object does not have a security behavior it is  public   ).
MAdpy sticks to the url , it supports creating new applications on top of it that respond to a url ,
for example toy can have a booking application on the url /book and what comes after the url /book gets handled by the application,through it's DispacthTable embedded in every MadpObject