I was calling my juneberry.org system a "micro" content management system, but after doing a search for micro content managment systems, some of which are quite elaborate even including code for searching, in-browser editing, user management, and using ajax, I realized that "nano cms" might be the better term. Anyway, juneberry.org isn't a static site, that is, a collection of html pages delivered up each as requested. Instead it's a set of php pages that when requested, set three variables: 1) some behind-the-scenes html document head information like page title and keywords; 2) the header/title information for showing at the top of the page; and 3) the actual content of the page. In other words, only the stuff that changed from page to page. Its a bit more complicated than that, as some of these php pages do xml processing and data validation. But ultimately, the requested php file then calls a bit of code that sticks the information into an outline in appropriate places and adds more html head information (links to styling information and javascript code to include,) and the footer information (same for all pages,) and most importantly, the navigation section which is stored in a separate php file. There is also a rudimentary settings/ini file just to keep things honest and some other files, only one of which would appear in a static site. When you sit down and count all the files you find that instead of the (currently) 5 files I would need for a static site, I now have 9 plus. What????

Well here is the thing. Html, a markup language, has a lot of stuff going on behind the scenes in order to make the content look...well, fancy. Wonderful and amazing stuff can be done! But html+css, even the new and improved html 5+css 3, doesn't address groups of web pages, only individual pages. So if you build a site out of static pages, you end up with a lot of pages that have information that has to be the same in each page mixed up information that is different in each page. Like the navigation information, which is can be a very convoluted block of information behind the scenes and is necessary in every page. If I decide to change the name of one of my pages I suddenly have to track down that information in every one of my static files and change it: the more pages the more work and the more potential mistakes. At some point you go: "dude, why don't I put that block of information in another file where I only have to change it once." Turns out you can do it and get the web server to stick the pieces together whenever the page is requested. In fact, there are a Lot of ways to get the web server to do that, php being one. But the point is that you have just made your first step toward a CMS. After the first step, you will encounter "The Web Designers Dilemma" about what needs to be where exactly, and then you might become erudite: "certainly behavior should be separate." Or not, but later you probably will start thinking about editing the pages directly in the web browser instead of downloading-editing-uploading so editors, and who then gets to edit the pages so user management, and undoing edits so version control, and then you have users so subscriptions, so subscriptions for customers, so customer relations systems, and so on and so on.

Fortunately you are not the first to notice and attempt these things. And, in the continuing spirit of sharing that was the original intention of the internet, there are hundreds (and thousands) of open source content management systems available for you to use to get on with building your flexible web site rather than coding the next killer app.

As you might have guessed, I am only using open source (another definition) and free software (not freeware which is often neither open source or free software) systems because I think that open source software is better than proprietary software in the same way and for the same reason the science is better than opinion. And by better I mean easier to use, faster, more stable, and not least of all more fun. I started testing linux years (and years) ago but for various reasons didn't have time to really get a system working. I wish I had, because now that I finally sat down and learned it I am rediscovering why I got into computers in the first place: its fun. If you're not familiar with the term open source, or with the linux revolution currently going on, you can check out the wikipedia open source or linux articles.  Oh, I still use my old windows sodware for games since I'm not comitted enough to buy a console. But for any serious work I turn to my Ubuntu linux system without which I probably wouldn't even be doing this. Thanks to all the wonderful programmers of the open source community who have and who continue to do this amazing work and to all those who support them.