Announcing cwBlog!

Before I even start talking about cwBlog, or telling you what it's all about, I want to say a big Thank You to Ray Camden for writing and maintaining BlogCFC. It's a great piece of software and a perfect example of how ColdFusion applications can rock! *sheds a tear*. But, there comes a time in every relationship where you just have to sit down, take a couple of minutes and wonder: is it all worth it? Do I really need to put up with all of the shortcomings? Of course, I jest. However, there have been occasions where I find myself wanting to tinker with the inner workings of BlogCFC and thinking: what happens to my changes when a new update comes out? This is where cwBlog comes into play.

cwBlog is going to be my attempt at writing up a complete blogging application in ColdFusion. I know it's ambitious, and also probably stupid, but I'm not known for making smart decisions. I've prepared a list of some of the key features that I'm planning on:

  • User management : this will allow multiple users to post to the same blog;
  • Categories management : other than the standard uses, the admin will be able to give users write access to the categories of his choice;
  • FCKEditor support built-in, with configuration management straight from the admin;
  • Easily skinnable layout, preferably also for the admin;
  • Interactive code snippets : links to view the code in a separate window and for download;
  • Modules support, or plug-ins;
  • And other standard features, like RSS feeds, archives, stats page and links to popular bookmarking sites.

The entire project is going to be open source : every single snippet of code will be freely available for viewing and distribution. I will also be posting details of how work is advancing, issues I'll be facing and interesting milestones as I reach them. Help is obviously welcome, so if anyone wants to join in on the fun just let me know. You can also simply sit back and enjoy the show. EIther is fine by me.

Related Blog Entries

Comments
ike's Gravatar
Hey Francois. Sounds like a fun project to work on. :) A while ago there used to be a sample application for the onTap framework -- for a much ealier version -- that was a blog. It handled several of the items you mentioned, multiple users, categories, tinyMCE (WYSIWYG), easily skinnable from the admin (actually to manage multiple individual blogs), and modules / plugins.

Your mention of giving users write access to specific categories is even very similar to something I'd done with the framework's rule managers in which the blog owner could assign rules to determine who would be allowed to compose or even comment on the individual blog. It happened purely by coincidence that you could do some really powerful things like allow comments with a time limit, merely because of the introduction of the rule manager.

Of course the problem was that with it being so feature rich, it turned out to be a bad sample application for the framework because so much of its code had nothing to do with the conventional workings of the framework. You would have actually had to dig to find where the framework came into play in many cases.

Anyway I've always had this notion of being able to customize an application entirely through add-ons or "plugins" in such a fashion that customizations never edit any existing code. The problem of apps that are "easy to modify" is that they later become "impossible to upgrade". Which costs people money in the long run. It's a primary aspect of the framework that, much like basic OO principals, you should be able to customize basically anything without ever editing someone else's code. And so since you never edit someone else's code, you always have the ability to upgrade to new versions later, including your modifications and you don't end up losing all that time and money you spent modifying it.

The reason I mention it here is that it seems like if you're going to create an application like this blog and you want it to be really extensible, you might want to have a look at the framework as a potential starting point. :) You may not end up using the framework as a basis for the code and that's fine, but you may also find ideas or techniques in it that are helpful in designing your own extensible architecture. And being open source of course you're free to take whatever code you find useful.
# Posted By ike | 9/7/08 4:52 PM
Henry Ho's Gravatar
Are you planning to use any of the CF8 ajax tags?
# Posted By Henry Ho | 9/7/08 5:55 PM
Gary Fenton's Gravatar
It's a good idea to create your new app to work with plugins... so users can create a TinyMCE plugin if they think FckEdit is inferior [raises hand], or they want the RSS feed formatted differently, or if someone writes a better pingback module, etc.

I have a request, Francois. Can you make the user account system accessible to plugins so webmasters can use an existing database of users? For example, if you have a community or business website with user accounts it would be very useful if blogging can be added to the site without having to have a second login prompt for user. I guess somehow sessions would need to be shared so if a logged in user went to the blog page then your new blog app would notice they're already logged in to the parent website.

Can you add tags to improve blog searches, then someone can write a plugin that shows "Other blog entries that are about xyz...". Implanted keywords produce a very high level of relevance rather than just searching blog titles and body text.

Good luck with the project. Competition creates innovation! (Just look at the different CFML engines and web browsers and the cool things that have come out from that)
# Posted By Gary Fenton | 9/7/08 6:00 PM
Gary Fenton's Gravatar
"Are you planning to use any of the CF8 ajax tags?"

I hope not, use jquery please! :-) It's a less bloaty framework, just 15KB. Luckily for anyone using CF8's ajax tags Google Chrome seems to be compatible with it, but imagine if it wasn't. CF developers would have to wait until Adobe release a hotfix for CF. At least with independent js frameworks the developers are free to upgrade to the latest version whenever they like - for bug fixes or new features. Sorry for the rant. :-)
# Posted By Gary Fenton | 9/7/08 6:11 PM
Francois Levesque's Gravatar
@all,

Thanks for all the comments. I never expected to get this much feedback so quickly!

@ike,

You're giving me alot to think about. The only experience I've had with frameworks up until now was Coldbox, but I will definitely take a look at onTap now before starting ;). I also agree that the application should be extensible through plugins, rather than through the code itself. I'll have to think long and hard on how I want to implement that before getting too far ahead.

@Henry,

As much as I praise Adobe for putting in the new AJAX tags in ColdFusion 8, I also find jQuery to be a much lighter, stable and faster library for creating interactive applications. Although jQuery is a little harder to learn, I believe the added benefits are worth the steeper (just a little) learning curve.

@Gary,

Thanks for the info on TinyMCE. I had only worked with FCKEditor in the past but will take a look before getting started. As for the user account system, I'm considering creating the login system as an actual plug-in, so it can easily be customized without affecting the actual application's basic functions. Tags are also a great idea and shouldn't be too big of a challenge to put in ;).
# Posted By Francois Levesque | 9/7/08 6:47 PM
Gary Fenton's Gravatar
Francoise, there's a good ColdFusion spellchecker plugin for TinyMCE. It can use either the Google API or A-Spell for the dictionary and the incorrect words are underlined like in MS Word or the Chrome/FF3 spellchecker. The last time I looked at FckEdit it was up to IE end users to download a spellchecker which sucked.

If you use a framework like Cold/FuseBox then how easy would it be for people who don't use frameworks to a) install, and b) understand? Not having used frameworks I tend to avoid apps/tools which depend on them. Sure, it may be down to lack of understanding on my part.

Login as a plugin - excellent. Other plugins people could create - YouTube video embedding, send to my Facebook, comment filtering (basic swear/spam words or compare in real time against a spammers database).

Something to think about - when subscribing to a blog it will either email you *everytime* someone else comments or will only email you once until you click on the emailed link to view the comments. I prefer the latter method to save a build up of emails if the blog is popular. Might be cool to give commenters the option on which format to subscribe to.
# Posted By Gary Fenton | 9/7/08 8:26 PM
Francois Levesque's Gravatar
Gary, that's a really strong selling point for TinyMCE. As for installing/understanding ColdBox, most frameworks are very easy to install, often requiring only to be placed in the webroot (or elsewhere with a mapping configured in the ColdFusion administrator).

I've also found it fairly easy to pick up, since it is heavily documented on the main site. Since I've started using it I've found that I my code is more organized and the tedious parts of scaffolding applications is much easier/faster.

I also like your suggestions for the plug-ins and the comment system. I'll definitely try and make both options available to the user :).
# Posted By Francois Levesque | 9/7/08 8:46 PM
Jim Priest's Gravatar
It's late and I'm a bit punchy but blogCFC is also open? Just tinker and commit your changes back to Ray? Why re-invent the wheel?
# Posted By Jim Priest | 9/7/08 10:29 PM
Nick Tong's Gravatar
I agree with Jim - can't you try and get involved with CFC6. Also I've used CFC Blog with multiple users?

With a few blog systems already on the OS market should one not support them rather than make others?
# Posted By Nick Tong | 9/8/08 3:14 AM
Francois Levesque's Gravatar
@Jim and Nick,

I agree with you, in theory at least. cwBlog will be open source, so there'll be nothing stopping Ray or any other developper from taking "inspiration" from it's development ;).

My purpose here is not to replace BlogCFC (I wouldn't dream of it). I especially want to try my hand at creating a complete application, maybe throw in some OO concepts in there, and see where I can go from there.

Other than that, if people want to pick up cwBlog for their blogging software that's fine, but that wouldn't be the main goal.
# Posted By Francois Levesque | 9/8/08 7:35 AM
Michael Sharman's Gravatar
Agreed that re-inventing the wheel is often what you try to avoid unless you have good reason or just feel like being creative in your own environment :)

Don't forget the most excellent mango blog, as well as mach-blog and farcry blog who's users sing their praises.

Perhaps changing the "core" of blogCFC would be a lot of work; you might want to move to a more plugin type architecture as well as a stronger OO back-end etc.

I certainly wouldn't say that just because there are 4 (at least) cf blogs out there that you shouldn't build your own, but at least make sure that your feature set covers what has already been provided to the community and/or you add your own features.
# Posted By Michael Sharman | 9/8/08 11:00 PM
Francois Levesque's Gravatar
Thanks for the comment Michael, I think you've nailed my exact reason for doing this: being creative in my own environment :P. I want to see what I can do with what I know.
# Posted By Francois Levesque | 9/9/08 7:41 AM
sban's Gravatar
good idea!would you like to use ajax or flex in it?
# Posted By sban | 9/9/08 10:02 PM
Francois Levesque's Gravatar
sban, I'd love to use Flex, but I haven't had the opportunity to work with it at work yet (stupid corporate images with their slow plug-in updates). I'm not planning on making a highly ajax-intensive app either, although there will be some where I think it might improve the user experience.

However, since the app will be plug-in based, it should be fairly easy for someone to develop a different UI without affecting the core functionalities. Only time will tell ;).
# Posted By Francois Levesque | 9/10/08 7:20 AM
BlogCFC was created by Raymond Camden. This blog is running version 5.9.1.002. Contact Blog Owner