Products

Solutions

Resources

Partners

Community

About

New Community Website

Ordinarily, you'd be at the right spot, but we've recently launched a brand new community website... For the community, by the community.

Yay... Take Me to the Community!

The Community Blog is a personal opinion of community members and by no means the official standpoint of DNN Corp or DNN Platform. This is a place to express personal thoughts about DNNPlatform, the community and its ecosystem. Do you have useful information that you would like to share with the DNN Community in a featured article or blog? If so, please contact .

The use of the Community Blog is covered by our Community Blog Guidelines - please read before commenting or posting.


Blog Module Reborn

I’m happy to announce a new release of the one and only “official” DNN Blog module. And it’s not just some new tweaks here, some bugfixes there. It’s a complete rewrite of this module. I know. That sounds crazy. And it is. But there were some good reasons to do this. In this blog post I’ll elaborate on those reasons and some of the highlights of the new module.

The Need for a Rewrite

The old blog module dates back to the days of DNN 2. That is: to 2004 or thereabouts. The DNN framework now bears almost no resemblance to that version. So many things have changed since then. (Static) localization, caching, url rewriting, etc, etc. In fact, besides security, the installer and data providers, you wouldn’t find many parallels between that version and the current version. In all those years the blog module has tried to catch up to changes in the framework. And from the looks of the codebase, without a rewrite. I.e. code was added, bit by bit, to accommodate new features and framework changes.

The codebase of the old module was messy, to understate affairs. I became involved in the project back in 2009. I was working on a site for a customer of mine, where I wanted to use the ease of publishing of Windows Live Writer that came with the Blog module. What was lacking was categorization which would allow me to better organize content throughout the site. So I set about adding this to the module and as a result propelled release v 4.0. As I first delved into the code I was struck by how archaic some things were done and I began refactoring the bits around where I was coding. But it was hard to refrain from refactoring elsewhere, too. The only thing that held me back was the fact that it became quickly apparent that the whole module needed reworking to bring it in line with current coding practices.

Since the 4.0 release the module led a mostly dormant existence until Chris Pattera from DNN Corp stepped in in 2012. His mission was to integrate some of the social API into the module that had become part of DNN 6. As the module is also used by DNN Corp on their main website, there was a real benefit in implementing this API in the blog module. In those days I’d often be in touch with Chris as he battled his way through the codebase. And one thing we both agreed on: the messy codebase had to be addressed. But neither of us dared go so far as to say “OK, I’ll rewrite the module”. Both of us have busy lives and a rewrite of such a module is easily underestimated. Late august he released version 5.0 with the social API integration.

But with version 5 also came some dependencies on the new services layer API of DNN 6.2. And unfortunately for the rest of us, DNN changed course with this services layer for DNN 7. Changing it from MVC to WebAPI. This meant that all old services would essentially be broken. As a result the blog module version 5 will not work on DNN 7. Ouch. And Chris, by now, had bigger fish to fry. The old blog module team had long since evaporated, so I did feel some pressure on myself to step in and repair this. But the old codebase now contained new code that was added by Chris in a manner that was also clearly more geared towards getting the job done, rather than being overly pretty and clear. So the whole issue of what to do with the old codebase became more and more pressing.

More and more calls were made as I tried to get more opinions on the matter and if just maybe I could get some funding for a rewrite ... I spoke with the powers that be at DNN Corp a couple of times at conferences to see if they would be willing to sponsor some of this. My argument: the Blog module is too important to fail. If we ever want to be taken seriously (i.e. get some download numbers of the platform) we need a serious open source blog module to go with the community edition as it was called at the time. Later in 2012 I found out that their “Nebula” project (which evolved into DNN Social, or Evoq|Social as it’s now known) might include a new blog module written from the ground up. And that kind of brought it home to me. If they were devoting resources to a commercial blog module, they’d never sponsor a free version. So I more or less gave up on the idea of sponsoring. It was clear that what had been said over and over again was true: if the community wanted a better blog module, the community should make one.

I called Joe Brinkman (a fervent user of the module and one of the most respected DNN programmers). We weighed the pros and cons of a rewrite. In the end it was he that convinced me that a rewrite was the only way. In fact something that maybe I’d known all along but just was afraid to admit. There is no other way. Refactoring that much code is just more work and the risk of old contaminations higher, than starting from scratch again. And don’t forget there is one huge advantage: it means I can really design from what I want to achieve. Not from what is already there.

The New Blog Module

Beginning with a new slate I had these bullet points in my head:

  • Fully templateable – see if it’s possible to get rid of the multi module definition
  • Cater for multilingual scenarios
  • See blogs as “folders”, i.e. containers of posts with specific permissions – get rid of child blogs

This would not conflict too much with the old data model (so migrating data should be possible). The one big change with regard to the data model would be to deprecate the link of blogs to portals in favor of blogs to modules as DNN prefers data to be contained per module.

Blog Module v 6.0

Templating

The new Blog module uses a templating mechanism based on token replace that should allow you to completely redesign the HTML that is emitted. As this includes the ability to deliver javascript and CSS files along with it, the possibilities should be virtually endless. The new templating mechanism addresses two important sought after features that token replace does not have: conditional rendering and repetition. Over the past years I've refined this mechanism and used it in various modules. My hope is that you’ll embrace its power and begin to craft new templates that make the blog module look exactly like you want. The default template borrows from various examples left and right to give the module a modern look. I’m aware it will not fit everyone’s bill, but that is impossible in any case.

Multilingual Features

In my research for this I spoke with various experts in not only DNN localization, but also bloggers in multilingual situations (specifically academics that would write in either their mother tongue or in English). The new module is what I call a “hybrid localizable” module. That is: it can be used in different ways in a multilingual site. On the one hand it can be used “classically” as a monolingual module where you’d have different module instances each for a different portal language. Alternatively you can use it as a fully multilingual module where each blog post has its own translation and you display the same module for each language, its contents adapting to the selected language. I hope this will not only address the needs of all international settings, but it will set this module (with DNN) apart from the competition and give it its own niche in blogging products out there. As far as I know there is nothing comparable out there.

Blogs as Containers

The old module forced blogging through one’s own blog in the module. If you wanted to write under a different “heading” you could create a child blog. In version 4 I tried to coerce users to categories, but I know this didn’t cover all scenarios. Frankly, we needed to look at the blogging scenarios again. For instance, on the DNN site we had mostly personal blogs. Everything was published as though you had your own blog there. Fair enough. Cathal Connelly, our security expert, had leveraged the child blog feature by creating a child blog for security. Oddly, it would sit as a subheading to his own personal blog. And it wasn’t shared with, for instance, Brandon Haynes, the other security guru on the list. It was clear that some were trying to fit a square peg in a round hole. But I didn’t want to sacrifice the “multiple blogs per module” either as this would really break many existing scenarios.

Instead blogs are now really just that, blogs. They are themes under which you add posts. Each blog has settings specific to that blog including a whole bunch of security settings. Who can add/edit posts, etc. This opens up the possibility to many more blogging scenarios. There’s a new module permission “Create Blog” meaning “those that can create blogs” in the module. Posting to the blog is set at blog level, not module level.

Other Features

Here is a bullet list of other features of the module:

  • Windows Live Writer integration
  • BlogML import and export
  • Add image for each post and each blog
  • Threaded commenting
  • Leverages friendly url provider
  • Simplified UI through several key buttons
  • Implementation of new WebAPI services means many functions can be reached with JS

Where Do I start?

The module is available on Codeplex

https://dnnblog.codeplex.com/releases/view/111284

If you’re upgrading an existing blog module, then please follow the guidelines and backup your installation. Test and only when finally satisfied continue. Otherwise try to find out what went wrong and roll back. A help file is also integrated into the module and available as PDF on Codeplex. You’ll find it under the documentation icon at the top of the module when logged in as module editor or blogger.

The Road Ahead

So is this it? The definitive blog module? Hardly. I think it is a great start on a completely new path for this module. What should happen now is that several people start making awesome templates. Currently there is no way to upload these yet through the module’s UI. That will come. For now you’ll need to create a new folder under DesktopModules/Blog/Templates and begin editing there. Ultimately I’m thinking along the lines of a “template exchange”: a centralized place where you can upload templates to and download them from. An exchange that is accessible from within the module. That would allow us to create a database of templates.

Comments

Joe Brinkman
Awesome work Peter. I am glad to see this release as I know it has been something you have been very passionate about for a long time. Easily the most anticipated release of any DNN module in a long, long time.
Joe Brinkman Monday, August 26, 2013 9:00 AM (link)
Reto Cossalter
This release puts the 'Ah' into awesome! Congratulations, and thank you for your work! Very much appreciated.
Reto Cossalter Monday, August 26, 2013 10:08 AM (link)
Jordan
Thanks for all the hard work peter. The community/platform edition is where the majority of us get started into DNN and I could not agree more that a open source blog module is not only needed but essential. Great work.
Jordan Monday, August 26, 2013 10:23 AM (link)
jerone vw
Great. Can't wait to try it out. Is there a demo online?
jerone vw Monday, August 26, 2013 10:24 AM (link)
Francisco Perez Andres
Great, great, grea news, Peter ;-)
Francisco Perez Andres Monday, August 26, 2013 11:04 AM (link)
Ralph Williams
Fantastic! I have been waiting for an update to this module. Especially one that includes templating.

Thank you so much for your hard work and the time that you have volunteered to this module!
Ralph Williams Monday, August 26, 2013 11:41 AM (link)
Matthias Schlomann
Very good work Peter. The blog module is one of the most used module in a long time. I like the new Features that the module come with. As an european user I have to blog in 2 languages, my mother language and of course in english. Now it is possible and I have to say thank you!

Matthias Schlomann Monday, August 26, 2013 11:49 AM (link)
Scott Willhite
Really excited about this, Peter! Many kudos and thanks to you for both the effort and the perseverance to see it through. Your commitment is a great example of the abundance mentality on which we are founded. I hope that other would-be open source developers will be encouraged by your example and follow your lead!
Scott Willhite Monday, August 26, 2013 12:08 PM (link)
Harald Fichtner
This is great news! Thanks Peter...
Harald Fichtner Monday, August 26, 2013 1:46 PM (link)
Marcio Maciel
AMAZING! Thanks, Peter!
Marcio Maciel Monday, August 26, 2013 8:54 PM (link)
Tony Valenti
This is great!
Tony Valenti Tuesday, August 27, 2013 4:30 AM (link)
Darrin Addams
Good news and great work - really looking forward to seeing it in action!
Darrin Addams Tuesday, August 27, 2013 8:37 AM (link)
Leslie Turner
Thank you so much for your unwavering commitment to this project. You are a pillar to the community, an excellent module developer not allowing any open source or commercial release to happen without 110% of donker passion and killer precision everytime you execute one. Well done and congratulations on this one, it would have been easy to just let it lie. It is a fundamental and basic part of any website, cms, platform, etc., that I cannot fathom why DNN Corp has addressed by now (commercial reasons aside). Community is where it began and that should not be forgotten!!!
Leslie Turner Wednesday, August 28, 2013 5:33 PM (link)
Peter Donker
Thanks for the kind words Leslie and everyone else!
Peter Donker Thursday, August 29, 2013 2:51 AM (link)
Berney Villers
Without a community there is no DNN. Ask the folks at Telerik Sitefinity :) DNN trumped SiteFinity because DNN had an active community.

Thank you very much for this much needed contribution!

Side note: Shame on DNN for charging a $3000 ransom for basic functionalities whilst offering no affordable package for the small businesses that made DNN happen.
Berney Villers Thursday, September 5, 2013 3:23 AM (link)
Erik van Ballegoij
Berney, I am not sure I understand your last comment. We offer a very affordable package for the small businesses, and that is called DNN Platform. Also, the features in Evoq Content are more geared towards larger organizations, such as granular permissions, workflow, document library, web farm support etc. Anyway, thank you for comment, and I am looking forward to your next open source contribution :)
Erik van Ballegoij Thursday, September 5, 2013 8:10 AM (link)
Berney Villers
Erik. I'm not sure I understand your comment.

From the blog article: "And that kind of brought it home to me. If they [DNN] were devoting resources to a commercial blog module, they’d never sponsor a free version"

I don't view blogging or many of the other features now missing from DNN Platform as "geared toward larger organizations".
Berney Villers Thursday, September 5, 2013 10:35 AM (link)
Erik van Ballegoij
So what you mean is that this blog module should be part of the platform, instead of a separate download? IMO, one of the benefits of not having the platform loaded with all kinds of modules is to keep it light weight, and really let the end user decide on which functionality they want to load. Should we make it as easy as possible to add free or commercial extensions to your DNN installation: yes, absolutely!. Anyway, if you have suggestions on how we can make DNN Platform better, please add your suggestions to the community voice here: http://www.dnnsoftware.com/voice
Erik van Ballegoij Thursday, September 5, 2013 10:48 AM (link)
Berney Villers
I'm saying that many of the only modules now available to small business (once key components of DNN) are now collecting dust and are no longer viable.

Thankfully the Blog module was brought back around by Peter, but many of the essential modules that you declare as "geared toward larger organizations" like Q&A, Forums, Basic Store, etc. are part of a $3000 package unobtainable by small business.

My suggestion is monetize rather than alienate small businesses and before doing so consider a brief reality check about the landscape that small businesses compete in these days. Most of us have a simple store or forum or blog :)
Berney Villers Thursday, September 5, 2013 11:39 AM (link)
Erik van Ballegoij
Q&A is part of Evoq Social, Forums is deprecated (but available open source), we do not have a basic store in any of our commercial products (the Evoq Commerce module is more like a pluggable shopping cart, but is definitely not a store solution by itself). There are a lot of simple store modules available both open source or on the DNN store. Same for forum modules and blog modules. So all in all.. again, I do not understand where you are going with this. Let's not continue this discussion here, as this is not really the right medium for such a discussion. I am more than happy to get on a call with you to discuss this further though (or meet you at DNNCon in October). You can email me at erik@dnnsoftware.com to set up such a meeting.
Erik van Ballegoij Thursday, September 5, 2013 12:25 PM (link)
Robert Fulop
This is very nice, thank you Peter!
Robert Fulop Thursday, October 3, 2013 12:29 AM (link)
Baldwin Sun
@Berney, basically agreed with your some points - with DNN, we have to complete something manually ourselves some time in the some scenarios. :) And just would like to share you that we just launched a new customized forum project for the original DNN Forum module here - https://github.com/sunblognuke/DNN_Forum. Maybe you will get something there what you need. Thanks a lot.
Baldwin Sun Wednesday, November 13, 2013 9:01 PM (link)

Comment Form

Only registered users may post comments.

NewsArchives


Aderson Oliveira (22)
Alec Whittington (11)
Alessandra Daniels (3)
Alex Shirley (10)
Andrew Hoefling (3)
Andrew Nurse (30)
Andy Tryba (1)
Anthony Glenwright (5)
Antonio Chagoury (28)
Ash Prasad (37)
Ben Schmidt (1)
Benjamin Hermann (25)
Benoit Sarton (9)
Beth Firebaugh (12)
Bill Walker (36)
Bob Kruger (5)
Bogdan Litescu (1)
Brian Dukes (2)
Brice Snow (1)
Bruce Chapman (20)
Bryan Andrews (1)
cathal connolly (55)
Charles Nurse (163)
Chris Hammond (213)
Chris Paterra (55)
Clint Patterson (108)
Cuong Dang (21)
Daniel Bartholomew (2)
Daniel Mettler (181)
Daniel Valadas (48)
Dave Buckner (2)
David Poindexter (12)
David Rodriguez (3)
Dennis Shiao (1)
Doug Howell (11)
Erik van Ballegoij (30)
Ernst Peter Tamminga (80)
Francisco Perez Andres (17)
Geoff Barlow (12)
George Alatrash (12)
Gifford Watkins (3)
Gilles Le Pigocher (3)
Ian Robinson (7)
Israel Martinez (17)
Jan Blomquist (2)
Jan Jonas (3)
Jaspreet Bhatia (1)
Jenni Merrifield (6)
Joe Brinkman (274)
John Mitchell (1)
Jon Henning (14)
Jonathan Sheely (4)
Jordan Coopersmith (1)
Joseph Craig (2)
Kan Ma (1)
Keivan Beigi (3)
Kelly Ford (4)
Ken Grierson (10)
Kevin Schreiner (6)
Leigh Pointer (31)
Lorraine Young (60)
Malik Khan (1)
Matt Rutledge (2)
Matthias Schlomann (16)
Mauricio Márquez (5)
Michael Doxsey (7)
Michael Tobisch (3)
Michael Washington (202)
Miguel Gatmaytan (3)
Mike Horton (19)
Mitchel Sellers (40)
Nathan Rover (3)
Navin V Nagiah (14)
Néstor Sánchez (31)
Nik Kalyani (14)
Oliver Hine (1)
Patricio F. Salinas (1)
Patrick Ryan (1)
Peter Donker (54)
Philip Beadle (135)
Philipp Becker (4)
Richard Dumas (22)
Robert J Collins (5)
Roger Selwyn (8)
Ruben Lopez (1)
Ryan Martinez (1)
Sacha Trauwaen (1)
Salar Golestanian (4)
Sanjay Mehrotra (9)
Scott McCulloch (1)
Scott Schlesier (11)
Scott Wilkinson (3)
Scott Willhite (97)
Sebastian Leupold (80)
Shaun Walker (237)
Shawn Mehaffie (17)
Stefan Cullmann (12)
Stefan Kamphuis (12)
Steve Fabian (31)
Steven Fisher (1)
Tony Henrich (3)
Torsten Weggen (3)
Tycho de Waard (4)
Vicenç Masanas (27)
Vincent Nguyen (3)
Vitaly Kozadayev (6)
Will Morgenweck (40)
Will Strohl (180)
William Severance (5)
What is Liquid Content?
Find Out
What is Liquid Content?
Find Out
What is Liquid Content?
Find Out