Re-Imagining BlogCFC

Team CF Advance is dedicated to providing and maintaining Open Source software built in CFML. We welcome anyone to get involved, whether it's writing code, creating tests, or assisting with technical documentation, any contribution is a good one. There's already a decent list of ongoing projects that we are working on or maintaining.

On that track, how about giving us a little feedback. Let us look at a re-imagining of BlogCFC. BlogCFC was the first Open Source CFML based blogging platform, and still shares a wide install base. In that knowledge, it is important to consider not only maintaining full feature support, but also maintaining support for existing linking structures, data integrity in data migration, as well as support for multiple platforms.

There are several other ColdFusion based platforms for blogging. Mura CMS provides a way of creating blog pages. Mura is not truly a blogging platform, per se, but does make it possible. Mango Blog is also a fairly pervasive blogging platform, providing some additional level of extensibility as well. ContentBox is another platform, based largely on the popular ColdBox framework. Like Mura, ContentBox is really a CMS, so not really designed to be a blog.

Knowing that these options exist, one question then becomes "Why do ColdFusion developers adopt WordPress or Ghost as their blogging platform?" I believe this comes down to three core reasons. 1) ColdFusion hosting can be expensive, 2) the complexity of these other ColdFusion based applications, or the learning curve involved in their customization and maintenance, is more than some of these developers want to undertake, or 3) the developer was just trying to learn something different.

Issue #3 doesn't factor into this discussion. The decision of any developer to expand their knowledge base and learn new languages is a good thing. Doesn't necessarily look good to have a largely ColdFusion topic specific blog hosted on PHP, but we aren't writing this to solely serve developers. We want to build an application that anyone can deploy for their use, whether it's a development blog, a political blog, or just something to journal your trip to Istanbul. 

So, you then have two main issues you possibly need to address: 1) Hosting, and 2) simple install, usage, customization, and maintenance.

Issue #1 will still be hard to address (Team CF Advance is already in talks with a hosting provider who may offer low cost Blog hosting with everything preinstalled), but it's worth noting for future discussions. Issue #2 is more easily addressed.

Proposals For Discussion

  1. The current BlogCFC is actually two applications, one desktop and one mobile. I propose that we look at a responsive site design for a single maintainable codebase that is then viewable from multiple screen resolutions and devices. I propose adopting Bootstrap as the client-side CSS framework, to assist in that task. (One contributor has already done this with the current version of BlogCFC, so we may get a branch for this one soon...)
  2. There is currently no set style guide for skinning sites in BlogCFC. First, I think it would be extremely beneficial to build a template converter system, that could take existing themes for WordPress, and possibly Ghost, and convert them to BlogCFC themes. There is already a huge number of available WordPress themes out there, and the Ghost theme base is expanding daily as well. If we can leverage that, and make it dead simple for a user to implement, then we've covered a major hurdle to adoption. Ghost themes are the easier side of the coin, as their themes are already in Bootstrap, and already responsive designs. Second, a base template with well thought out HTML architecture and a solid CSS naming convention, that is then thoroughly documented, should make it easy for a user to upload a stylesheet that would completely customize their blog. At some point, we could even build a module for theme customization directly in the admin. And, with all of it, we heavily review page architecture to completely maximize SEO visibility.
  3. I think BlogCFC would thoroughly benefit from a server-side framework. I propose using FW/1 with DI/1. FW/1 (and DI/1) is extremely powerful and light weight, operates as a very natural extension of ColdFusion's built in application framework, and it's subsystem architecture lends well to extension/addition of new modules. I'm not positive, but we may also be able to leverage it's routing capabilities when considering legacy link support.
  4. I think we definitely need an "override" service architecture, where all instantiated objects are (at inception) blank objects that extend our base objects. This is used for individual developer customization, in a directory that never gets updated (other than the addition of new objects). Our tests should always pass, in development. Any individual overrides are the responsibility of that developer, and them running our tests should allow them to identify holes in their changes with any upgrade.
  5. I think we should employ REST services for Ajax interaction, and SOLR for site indexing and search. I do not propose the use of ORM. I think it is very important that our SQL is handwritten, well optimized, and that our indexes are carefully chosen for high availability/performance.
  6. I propose using AngularJS as a client-side JS interaction framework for the "admin" side of the blog, for data-binding and interaction. I think it best to avoid it on the front-end, in favor of generated code bits and more favorable SEO. Bootstrap should be sufficient for any "site" front-end functionality.
  7. I think we put considerable effort into the user stories centered around UI/UX, especially in terms of the admin area.
  8. I think that we generate output, where possible. Blog posts are, ultimately, static bits of page content.
  9. I think that we build in a simple plugin architecture, allowing others to contribute to furthering the platform by creating new add-ons that just be "dropped in".
    1. As with all projects overseen by Team CF Advance, we will be including tests for BlogCFC, written in TestBox. This will allow us to build out the project iteratively, testing each step along the way, to ensure that one patch doesn't break other parts of the system.

      Again, none of this is in stone. Just some random thoughts to get the ball rolling. This is just to really start the discussion, so please share your feedback. We already have a working group within Team CF Advance, who is contributing to this discussion. Ultimately these projects are community driven to fulfill a need, so knowing what you want is critical to the process. This also doesn't deter us from any ongoing patching efforts. If anyone has begun writing any patches, please let the team know so we aren't duplicating effort anywhere (or just join The Team).

Caught By The Bug

The dreaded BlogCFC curse. After 30 days without a post you see the message 'Sorry, no post' (more or less).

I'm busy. Way busy. Several side projects, fun at work with servers, and a few hush-hush things...I'm beat. I can't go into a ton of particulars on anything, but there are things coming. I am working on a custom asset manager written in ColdFusion and Ext, that I'll be open sourcing, but it's taken a side burner for now. Ext is a blast, and I hope to continue to create and release Ext custom components, but I will always be using ColdFusion for my server-side code examples.

Speaking of code, I still owe everyone my sample code from my WebManiacs Presentation. With all this activity, I am way behind the eight ball on rolling some of this up. I hope to get it out sometime within the week. I'm also hoping to get a chance, soon, to re-record the presentation. I had done it once before WebManiacs, for the Nashville ColdFusion User Group, but the recording was a wash. We'll try to get that scheduled soon, and get it out there for everyone.

And, speaking of NCFUG, Mark Mandel is presenting Thursday night, July 31st on Transfer. Details can be found on the NCFUG Meeting page.

That's all for now. I'll try not to let it go so long between posts this month.

Why Can't I Comment?...

I've been so head down, on several projects professional and personal, that I only just noticed a few weeks worth of error messages in Cutter's Crossing's email box. A very odd error about missing a captcha-hash-variable kinda thing (don't have one handy). So, I get my next door co-worker to pull up my blog and ask him to post a comment, any comment. Low and behold, in place of the captcha there was a broken image icon. That wonderful clear box with the red X going through it, that we all know and love. Simply reinitializing BlogCFC took care of the issue, but I realize I've missed out on valuable feedback.

If you're reading this, and you tried to comment earlier, please try again, and I'm sorry for the trouble. I'll try to keep a more vigilant eye.

In the meantime, I'm looking for some really outstanding (public) examples of a drag-and-drop page content editor interface. Some experimenting with some of the Ext (2.1) sample code says I should be able to do it, but I'm looking to see some clear cut, and tested, solutions. BTW, if you haven't looked at the extended examples that they put out with the 2.1 update, then you should. There's some very nice stuff in there, particularly dealing with layouts.

Find This Character, Please!

OK, if I had hair I would have pulled it out by now. For several months I've been getting this error from BlogCFC, but I can't track the true source to remove the offender:

Script Name: /rss.cfm?mode=full&mode2=cat&catid=9856ECF2-3048-71C2-17879EB46D54D46F Detail: An invalid XML character (Unicode: 0x19) was found in the element content of the document.

I can't find this character anywhere. No clues at all. But, it's playing havoc with some RSS readers, apparently, and loading my inbox. So, anybody have some suggestions how I might find this?

Up To The Latest And Greatest

OK, last night I upgraded to BlogCFC 5.9, which Ray released the other day. Pretty heavy update, with over 30 file changes in the readme, but very smooth when using WinMerge (thanks to Mark Drew for that little tip).

One item of interest, though. Ray mentions in the readme that he's stopped logging the changes in the document headers, stating that it's redundant to place them there and within the readme doc. He also states "I decided I'd skip that since BlogCFC 6 will have new files." I also noticed, while reviewing the changes, that he has code in place for checking the server version. CF 8 specific changes on the way? We'll have to wait and see.

Moving On Up

OK, well I've made the jump to BlogCFC 5.5.002. Can I tell you that it is almost impossible to keep up with Ray Camden. The man is a fiend. I have no idea how he finds the time to manage his job, family, side work, and tons of open source projects. The guy is truly amazing. Thanks again, Ray, for everything you do for the CF Community.

As some of you can tell, I will have to look into a few changes now. I'm using the 'liquid' layout here, so some adjustments will be needed to handle the graphic at the top of the page. But that, my friend, is for another time.

I'm also going to incorporate a new 'about' pod that Charlie Arehart has sent to me. We've been going back and forth in email on some common interest stuff, and he pointed out to me that I don't have any sort of 'identifier' on my blog. This new pod will be great. Thanks a lot Charlie!