Web Publishing Toolset. I’ve spent countless hours on bushchang.com trying to bend Active Server Pages, SQL Server, Passport, and IIS to my will. After much angst, I’ve finally given up. My newest toolsets are all open source: PHP, MySQL, and vBulletin. All installed on my Win 2K/IIS box without a hitch. I had to tweak MySQL a little to add it as an NT server running from d:mysql. You need to add a file called my.cnf to the root of your C: drive (c:my.cnf). MySQL looks here to find its installation and database directories. PHP has built in support for MySQL so it all just works.
Content Management System. In all of my years hacking web sites, the content management system always came last. This was true at Microsoft.com, MSN, and my home web site. A content management system (CMS) packages the web site up for the average user so they can use rich tools to publish content, news, and images. By definition a web site is dynamic and it’s incredibly hard to build a CMS that is flexible, easy to use, and powerful. To implement flexibility in terms of page layout, styles, and functionality you need a good content and code architecture. The fundamental rule is that code, data, layout, styles and content must be keep separate. To be easy to use, a CMS needs to provide the user with a high level abstraction for layout and rich editing tools optimized for each content module in a layout. A content module is a unit of functionality within a page (eg. weather section on my.msn.com). Each content module combines code (render weather based on zipcode) and data (zipcode) to generate an HTML presentation.
Individuality. Everyone on the web wants to express their individuality through their web site. How do you interject individuality into web publishing: Cascading Style Sheets (CSS) and “rendered” templates. Templates built using CSS allow a user to change the “look and feel” of a web site by altering a style sheet. CSS is as powerful as style sheets in Word but much harder to use because you have to do everything manually. However, once set up properly they allow you to quickly change the look and feel of a web site (color, font, backgrounds, etc).
Page Rendering. A “rendered” page combines code and data to “render” HTML back to the user. A rendered template uses preferences (eg CSS, directives) to coerce how the template gets transformed into HTML. Two models exist for “rendered HTML”: server and client rendered. Server rendered HTML is accomplished through a server side scripting language like ASP or PHP. A developer writes code that runs on the server and controls how the page gets rendered back to the client. Client rendering like a mail merge in word. You combine a source file and data to generate a static HTML page which you “publish” to the web server. Radio Userland and FrontPage are examples of client applications that manipulate HTML before publishing them to the server. The key benefit of HTML rendered on the client before publishing to server is that it’s fast. The server doesn’t have to run code to render the HTML pages before streaming them back down to the client. The key disadvantage is that the HTML is the same for every user unless you use client side JavaScript to alter the pages after they’ve downloaded to the user.
Ideal Web Publishing. So, what’s the web publishing solution. It has to be easy, flexible and powerful. It has to work for the power user (me) yet be simple enough for my wife to use. It needs to build community yet restrict portions of the web site to close family and friends. All of this needs to be packaged into a single solution and made EASY. More on this later…