Saturday, November 8, 2008

Why No Standard DNN Module RSS Generator?

by Phil 'iwonder' Guerra

(Mission, KS) - Ok, I'm bringing up a old can of worms, I admit straight away, but it's a topic that really gives me a royal pain in the a**. Of all the support questions I get about DNN and news feeds the one that seems to always at the top of the list: 'Why does the newsfeed module fail to render my site's syndicated content?' Well, the answer depends on which module you are using and how the syndicated content is generated.

A long time ago, in a far-away galaxy, I was a member of the DNN Core Team, and ever so briefly was the News Feeds (RSS) project's Team Leader. In that capacity, one of the first assignments I tackled was to begin the process of improving the internal RSS syndication methods. Now, the difficulty here was that the syndication process is tied to the internal search mechanism, which we all know by now, is constantly changing, and seems to never work the way you would suppose it to work. That being said, I could only address the internal process in a very controlled and limited way. I could improve certain aspects, but adding needed features, including the use of custom namespaces was vetoed. The wisdom of the sages was at a point in DNN evolution that wanted to delay these efforts as not to 'break' anything that would negatively impact the spread of DNN to bigger and larger stakeholders. It was probably a wise choice not to let some newbie upstart impact such a central area of DNN.

Now, the ages pass, and DNN is firmly established as a well known and well received entity among the large and respected houses of the Internet applications world. Maybe, it's time to wonder about why there is no standard RSS syndication generation API that is required by all DNN projects. Some projects have gone their own way with generating syndicated content for their projects, while others just use the in-bred methods. Which is best? In a word, neither!

The losers in all of this patchwork of syndication generation is the DNN community at large, who probably don't even realize that the ability to transform and present syndicated content varies with which module and version is being used. Of course, this most often shows up when the poor RSS Newsfeeds (RSS) module is being used by folks expecting things to work correctly out of the box. Sorry Virginia, but the DNN Santa Claus is not well and won't be addressing your needs in this version! There simply is no guarantee that the default news module will present your DNN site's syndicated content. In fact, even so-called improved custom RSS generators contained in some project modules do not even adhere to the syndicated format specs they supposedly follow.

Just like other non-DNN syndicated content, the appearance of a a specs version in the feed does not always guarantee that the spec used is faithfully followed. Elements like dates, author, and others my not follow the spec used and it's up to the consumer or their application to make provision for any errors in syndication. Pretty terrible situation. Imagine if you had the same lack of conformity with the automobile manufactures.

I come from the old school that requires no negative opposition to existing methods and procedures without presenting plausible alternate solutions. So, here's my plausible alternative.
DNN should commit to syndication method that holds developers to using it. In the simpliest transition possible, there could be at minimum, an indentification tag added to their custom methods that indicate which rss generator is being used. In RSS specs there exists an optional channel element tag 'generator', which can effectively identify at bare minimum something like this:

<generator>DNN v4.0.9 Internal RSS Syndication Generator v1.0.x<\generator>
or
<generator>DNN Blog v4.0.x Custom RSS Syndication Generator v2.0.x<\generator>

Inclusion of this information would at least help those who provide 'FREE' support for the benefit of the DNN community a way to quickly troubleshoot the issues being reported daily. Some of us do support and help the DNN community because we believe in the open source project. Can't the DNN Core Team and DNN Corporate members take this small step? We will see.

I'm not even going to go into what improvements in the internal syndication methods are needed, but would love to provide my views sometime when someone is actually going to listen.

Wednesday, November 5, 2008

Forward to the Past

by Phil 'iwonder' Guerra

(Mission, KS) - Well, just a quick note to let folks know that my old fix to the News module actually does work. I can display Atom feeds with my modified News module. Unfortunately, my mod works with the v4.0.0 module, but not the new v4.0.1 version. I'm still trying to understand why. More later, as I step through the code.

Tuesday, November 4, 2008

News v4.0.1 Not Rendering Atom Feeds...

by Phil 'iwonder' Guerra

(Mission, KS) - Had some time to play around with the new release of the News Module. Unfortunately, this release will not render Atom feeds, at least the many that I tried. I'm getting the all-too-familiar 'failed to download' error.

Just wanted to post about it here, and I'll have to look into the code more. Even the 'fix' I had made prior to this release does not help, so I'm lost at this point as to what the duece is going on.

Ah, well, I'll get to it, in the morning...

Monday, November 3, 2008

Updated News Module Released...

by Phil 'iwonder' Guerra

(Mission, KS) -The update to the News module was released. The new version v04.00.01 fixes some of the reported issues with the initial release.

  • Add accept and user agent for web request
  • Remove email address constraints
  • Add option to not use Ajax rendering in module settings
  • Reorganized and rewritten Javascript to allow rendering of multiple News modules on a single page in Ajax mode
  • Fix for XHTML issue (div ending with span)

However, you should note that while several issues were fixed, many others persist. Including support of non-standard pubDates, and transformation of Atom feeds. Some will find that their feed still will not download.

The option pending review of these issues and subsequent fixes is to use the XML/XSL module with a custom XSL. This option is not welcome news for novice users, who are inexperienced in writing their own custom xsl transformations.

More on this release as more folks post their issues. My own issue is that the Atom feed for this very blog cannot be rendered by the latest DNN News module. During testing I found some issues with with DNN's method of 'sanitizing and transforming' Atom feeds into RSSv2.0 DNN specific format. I've fixed the issue in my code, but since the release was 'in the tracker' this fix could not be added to the update. That's a sad reality of the way things move in the development world. I didn't have the source to the v04.00.01, so I could not confirm that the issue persisted in that version until today.

Ah, well, all in due time I suppose. Meantime, I'm fixing it in the latest version and will submit it to Peter for review and hopefully inclusion in the next release.

As always, please test any new release in a non-production area. You'll be glad you did.