Posts in Category: Community

mojoPortal Is a Finalist in the 2009 CMS Awards

I'm happy to announce that thanks to your nominations, mojoPortal is a Finalist in the 2009 Open Source CMS Award sponsored by Packt Publishing.

So now we are in the voting stage and we need your vote. Don't be confused and think you already voted, that was just the nomination phase.

Vote For mojoPortal in the 2009 CMS Awards

The Voting Stage ends on October 30, 2009 and winners will be announced on November 9, 2009, so please vote today. The award will be decided partly by voting and partly by judges who will vote based on their own evaluations.

We are competing for the "Best Other Open Source CMS Award", where "Other" means non-PHP technology. We won this category in 2007 and were a finalist in 2008. mojoPortal has improved so much over the last 2 years that I hope we can do well again this year, but to the extent that voting is involved its an uphill battle competing against projects with larger communities who may be able to generate more votes. So I hope you all will take a minute to cast your vote.

Gravatar Joe Audette is the founder of the mojoPortal project and was the primary developer until February 2017.

mojoPortal Released

I'm happy to announce the release of mojoPortal, available now on our download page.

More Editor Improvements

The File Browser/Uploader that we implemented previously in TinyMCE is now also working in FCKeditor and CKeditor so that users have a common browse and upload experience in each of these editors. So we now have equivalent functionality in TinyMCE and FCKeditor but in CKeditor we do not yet have integration with our content template system or content style system.

New User Avatar System

We've had a lot of requests for an avatar system that allowed users to upload their own avatar. There is a new setting for Avatar System in Site Settings where you can choose User Upload or Gravatar. If user upload is enabled then an upload button will appear on the user profile page allowing them to upload an image. The image will be resized according settings in the Web.config file for AvatarMaxHeight and AvatarMaxWidth.

Image Gallery Improvements

We now have support for the Vertigo Slideshow which uses Silverlight to create a really nice slide show of images in the gallery. You can enable it from settings in the gallery. Since the Vertigo Slideshow can also consume images from your Flickr account, we also added a new Flickr Gallery  Feature which also uses the Vertigo Slideshow.

silverlight slide show screen shot

Blog Improvements

We've added support for using IntenseDebate or Disqus for the comment system in the blog. For the moment I recommend IntenseDebate because there are some issues I encountered with Disqus. Specifically, I could not get it to work correctly n IE 8 though it works reasonably well in Firefox and Chrome. But even when using Firefox or Chrome it does not work correctly if you try to post a comment as an anonymous guest. The integration steps are trivial so I don't think I've done it wrong but believe the problem can be fixed on their end. I've let them know about it and hope they can resolve it. Give it a try if you like but be aware about these issues since at the time of this writing they are not resolved. I'm now using IntenseDebate in this blog. I implemented it such that if you have existing posts with comments in the internal comment system those posts will continue to use the internal comments but new posts will use the current setting.

Its now also possible to post future posts from Windows Live Writer. Previously it was ignoring the publish date passed in from Live Writer.

Its also now possible to require users to sign in to view the full blog post when using excerpts in the main blog page.

Re-Organized Css In Included Skins and a New Skin

Based on community feedback I've re-organised the css for included skins to make it easier to find what you are looking for. Previously we had things separated a little too cleverly with colors in one css, borders in another and text related settings in another. This made the css a little less approachable and less intuitive. I've combined those files into one style.css file and renamed some other css files so they sort together in the file system and are easier to find. You can of course organize the css files in a custom skin any way you like by listing which file to include in the style.config file. Ultimately they are all combined and minified into one request by our CSSHandler. The style config file for included skins now are including the following files:

<file csswebconfigkey="YUITabCss" imagebasewebconfigkey="YUISkinImagePath">none</file>
<file cssvpath="/ClientScript/oomph/oomph.css" imagebasevpath="/ClientScript/oomph/">none</file>
<file cssvpath="/Data/style/cluetip/jquery.cluetip.css" imagebasevpath="/Data/style/cluetip/">none</file>

so we still have some separation but the main style.css has most of the common css.

We also have a nice new skin with a cool menu style thanks to Joe Davis of i7MEDIA

What Else?

Updated Polish Translation - thanks to Przemyslaw Luniewski.

Updated Italian Translation - thanks to Diego Mora.

A number of bug fixes for things reported in the forums since the last release.

nominate mojoportal for the 2009 cms awards

Gravatar Joe Audette is the founder of the mojoPortal project and was the primary developer until February 2017.

mojoPortal Released

I'm happy to announce the release of mojoPortal available now on our download page.

More Improvements in our TinyMCE editor integration

This release comes fast on the heals of our release and it is primarily focused on polishing up our Tiny MCE editor integration. Thanks to all who provided great feedback in the forums, especially Eric Stoffers who helped make our file browse layout a little prettier and more informative. Here is a screen shot of our file browser/uploader:

screen shot of our TinyMCE file browser

The most significant improvement is that we now have automatic image size adjustment for the web. Its optional, users may uncheck the box and no resizing will occur for cases where you are uploading images that you have already optimized for the web. The default resizing options come from the Web.config but users are able to override them by setting the Max Width or Max Height according to their own preferences. We've all seen our users upload huge images right from their 10 mega pixel cameras then just set a width and height on the img tag to make it display the right size. But the result of that is a page that loads very slow because it has the mega large images and disk space is consumed rapidly as well. So, our new solution is designed to make it easy to do it right but not take away control from more savvy users.

Also requested was an option to configure the skin used by TinyMCE. We now have a setting in Web.config that you can override in user.config to set the skin for TinyMCE. 

<!--- valid options for the TinyMCE skin are: default, o2k7default, o2k7silver, o2k7black -->

<add key="TinyMCE:Skin" value="default" />

To my eyes the default skin looks the best and cleanest of them.

I purposely remove some toolbar items from the editors because they are not suitable for a skinnable content management system. Items for selecting fnt size, font face, font color and background color, are all things that put hard coded styles into your content and then the content is not subject to skinning. In order to be able to completely change the look of your site by changing skins you need to avoid hard coding any kind of style into the content itself and always use CSS. Our style template system allows you to create items in the style drop down of the editor that corresponds to css classes in your skin. So you can make some pre-defined styles to help your users rather than let them hard code styles. Now I'm not trying to force this on anyone, I'm just trying to make it easy to do the right thing and a little more difficult to do the wrong thing. If you really want those hard coded style toolbar items in your editor you can enable it in Web.config/user.config with by changing this setting to true:

<add key="TinyMCE:IncludeHardCodedStyleTools" value="false" />

but, my opinion is that one day you will regret it when you decide to re-design your site with a new skin and none of this hard coded content looks right in the new design.

After switching to TinyMCE here on I had noticed that the forums were starting to get juinked up due to things users paste into the editor. In FCKeditor I was already forcing paste as plain text in the forums but now I have implemented the same thing in TinyMCE. This helps avoid page validation problems when users copy and paste from word or html pages. You can get invalid markup and missing closing tags that can mess up the page. This was very common when pasting errors or code fragments.

Also there were two bugs reported about our TinyMCE integration and these have been fixed. The first was that although our file browser was always using urls relative to the root of the site, TinyMCE was changing them to relative to the current page and this could make links incorrect if you viewed the content on a different page like in the content manager. It also could prevent us from correctly restoring the absolute url on outbound feeds for images or links that were posted in the blog. This was merely a configuration issue, it is the default behavior of TinyMCE, but it was easily disabled once I realized it was doing that. The second bug was that when running mojoPortal as an application in a sub directory instead of as a root site, the file browser was incorrectly resolving the root for uploads at the root of the main site rather than the root of the mojoportal application. This has also been fixed.

This release also includes a minor enhancement in our content manager. It now shows the use count of content instances making it easy to spot content that is not published anywhere.

There was also a bug fixed in the search index where page titles and content instance titles were not causing a match in search results unless the content itself also had the search term.

A Note About Our Versioning Scheme

In a post on, Bryan Ruby commented that

Although you wouldn't expect an application with the version number of to contain anything but bug fixes, in the world of mojoPortal almost every release contains new features for the CMS.

I thank Bryan both for the coverage and the comment. I suppose my use of versions is a bit different than many other projects so its worth mentioning what my versioning strategy is based on and clear up any confusion about what if anything is implied in the version number.

For most projects I think versions come down to and often features are targeted for a new major version number. We use the same kind of format like but our versioning is simply incremental and is based on our upgrade system. Any time we need to run a new script for any of the db platforms we increment the version. We only use a single digit between each . so we never have versions like, its just simple incrementing. So as soon as I need to run a new script I will create the next script file named (different script with the same name for each db platform). I may not need to run a script against every db platform but I keep the versions the same and create an empty script file if needed since we have different sets of upgrade scripts for each db platform. I then change a version variable in the code also to version and this is how mojoPortal determines that it needs to run upgrade scripts, because each script increments the schema version stored in the db itself, so if the code is a higher version than what the current schema shows it knows it needs to run upgrade scripts to get the schema to the same version as the code. This scheme makes it easier to sort the script files correctly to run them in the right order. Sometimes the version will increment several times between releases but it does just increment linearly and really has no special significance for implying some magnitude of release or major milestone. This corresponds to our incremental short release cycle. We target a few things for the next release, make a development sprint, and as soon as we feel its stable we make a new release.

Probably the biggest problem we have with our short release cycles is release fatigue. People do get tired of upgrading but its really up to them how frequently they upgrade. If the new release has new features or fixes that you're dying to have then you have the choice to upgrade. I think that is better than making you wait a long time for features that are ready or bugs that are already fixed. I don't sleep well at night if I know people are still downloading a version with a bug that I have already fixed. I mean some bugs are trivial but if its something that I think is causing a nuisance to people on a daily basis I like to get the fix out as quickly as possible.

Some of you may find it better to wait a bit after a new release and keep your eyes on the forums for bug reports, but then if everyone does that it just delays the feedback cycle so its helpful to me if many of you do try each new release. I'm always dogfooding the latest release and new builds in between releases on this site to try and find any bugs before making a new release. I don't have a team of Quality Assurance testers other than the testing that comes from the community. Those of you working with the latest releases and especially those of you working with the code from svn trunk and making your own builds and providing feedback in between releases are a huge help and I thank you for that.

Gravatar Joe Audette is the founder of the mojoPortal project and was the primary developer until February 2017.

Super Secret Meeting at Microsoft via Channel 9

Woot! I'm in a video on Channel 9

Having fun in Redmond!

UPDATE 2009-07-09

Thought I should update this post since it was really more like a tweet than a blog post.

So as you see in the video I was invited out to Redmond for a meeting at Microsoft. I had thought maybe I would be able to talk about it when I got back but I can't talk about it yet. For sure I will be able to tell all about it but not yet, probably in a month but there is not a specific date so don't hold me to it. For now you can be sure that I will talk about it at some point and lets enjoy the mystery and suspense for a little while ;-), but don't expect something really earth shaking or you may be dissappointed. 

I think I can say this without getting into trouble. Microsoft wanted to talk with a number of people about something they thought might interest us, they wanted to know if it does interest us and they wanted input and feedback. There are others that were not in the video or the meeting that are providing their feedback as well so don't over interpret the combination of people in the video. This was during a restroom break so some people were out of the room as well. For my part I can say I am interested in it and indeed excited about it.

Other than that, for the moment I can only share how much I enjoyed this opportunity to meet some folks I've followed in the blogosphere like Scott Hanselman, Phil Haack, and Bertrand Le Roy, as well as some other Microsoft folks who are very brilliant but I had not known of them before. I also got to meet some great folks involved in the Web Application Gallery which was very nice.

You may also be interested in my impressions of the experience visiting the Redmond campus. It turns out they do not all ride around on jetpacks as I had supposed ;-) Nor do they all think with one hive mind, it seems they are all quite individual and have opinions in common with one another and also differing opinons among them just like most cases where there are lots of people. A meeting at Microsoft did not strike me as much different than meetings at other companies. I did not see the entire campus of course, the parts I saw were newer from what I understand. It seemed a lot like a nice college campus appended to a classy mall and food court. I saw the company store and even got to poke around on a Surface in the little museum they have.

I also got to meet Shaun Walker and Scott Willhite of DotNetNuke. You may wonder what was it like fraternising with the competition. While we acknowledged that we do compete I found them to be really nice guys who I have a lot in common with and I felt some sense of kinship with because of our common heritage in IBuySpy and because it was easy to talk with them about our experiences as open source developers in the .NET world. I have always admired and respected what DotNetNuke has accomplished as a succesful open source project and now that I know what nice guys they are I admire and respect them even more. I would even say that their success has been a model which gives me hopes that I can achieve my own aspirations for mojoPortal. They proved it was possible to build a business around open source in the Microsoft stack and I'm not sure I would have thought it possible enough to pursue it myself had they not done it first.  I was very glad to become friends with them. I have not yet achieved the business success that I'm hoping for with mojoPortal but I feel I am making progres and will get there.

dinner with Microsoft

Bottom row Bertrand Le Roy, Phil Haack, and Bradley Millington, top row myself and Shaun Walker, this was at dinner, not the greatest photo, my iPhone is not the new model so the camera is not so good especially in dark lighting. 

Gravatar Joe Audette is the founder of the mojoPortal project and was the primary developer until February 2017.

mojo Rising! Got To Keep On Rising

Thought I would make a brief post to share the progress in growth of the mojoPortal community and other statistics and milestones of interest.

In recent weeks we reached 5000 commits in our svn source code repository, actually the most recent revision as of this writing is r5086.

We are approaching 5000 voluntary site registrations and could possibly even reach that milestone this month. The chart below is as of 2009-05-09.

graph of site registrations

Web Traffic is doing well and showing steady growth.

web traffic chart

And best of all, downloads have suddenly gone way up from the exposure we have received in the Microsoft Web Application Gallery. You can see, we went live in the gallery on April 6-7 and its been like a tidal wave raisin our 30 day downloads from 3500-3800 previous average to over 18,000  downloads on the current live stats chart.

download chart as of 4-22-2009

download chart as of 5-2-2009

A little love from Microsoft goes a long way as you can see! Huge thanks to Microsoft and especially the IIS Team for their support and help in getting mojoPortal into the gallery.

The interesting thing to me is that the site registration chart was already going parabolic before we got into the gallery. We got into the gallery around April 6-7, and site registration actually dipped a little in April compared to March. It will be interesting to see where it goes from here. Note that we have never required registration to download or even tried to fool people into thinking they can't download without registration like DotNetNuke does. Our registration numbers mean more because they are strictly voluntary.


Gravatar Joe Audette is the founder of the mojoPortal project and was the primary developer until February 2017.