Posts in Category: Releases

mojoPortal Released

I'm happy to announce the release of mojoPortal

This release contains some significant database schema changes, almost every table has some new columns. As with every upgrade, its important that you backup your site and your database before upgrading so that you can get back to a known working condition should anything go wrong. I fully expect the upgrade to go smoothly and my advice about backing up is no different than any other release. I just figure that since the upgrade scripts are touching so many tables it merits emphasizing this precaution.

So why were so many tables modified this time? Well its laying the foundation for some things to come.

Architectural Changes - Guids are Good

Although we are using integer ids on most tables in mojoPortal (which is optimal for performance), we have added Guids (Globally Unique Identifiers) to most tables that can be thought of as supplemental primary keys and foreign keys. Guids are guaranteed to be unique across machines. It seems almost impossible but supposedly you can generate Guids all day and never make the same one twice or conflict with ones generated on other machines. So what are the benefits of having these Guids on your tables?

One benefit is that it makes it more feasible if you need to combine data from 2 mojoPortal sites into one site. It still would require some custom query work, but the basic idea is that the imported data would not get the same integer ids as it had in the previous system, but the relationships between rows could be re-established using the Guids.

The other benefit and perhaps the more important one is that it allows flexible relationships between tables that make it easier to re-use some functionality across features. For example, I plan soon to implement some things like Content Rating and Content Versioning. So for example I will need a ContentHistory table for the versioning so I can store a copy of every change to a content instance. Instead of implementing this versioning just for the Html Content feature, I'm implementing it in a way that multiple features can use it. So instead of having joins between the ContentHistory table and the HtmlContent table, I will store the history using the Guid that identifies the Html Content instance. It will be able to retrieve its history by passing in its Guid. I could then re-use it in the Blog feature if I want because blog items have their own Guids and can retrieve their history by passing in a Guid. Same thing for the event calendar feature. So basically the ContentHistory table doesn't care which features store their history in it and doesn't have any hard foreign key relationships, but instead loose relationships by virtue of Guids. So the ContentHistory table will have a column named ContentGuid which can relate to the Guid columns of any feature specific tables.

Consider the ContentRating table, again it will have a column named ContentGuid, but I could pass in any feature instance specific Guid, or I could even pass in a page Guid and have ratings at the page level or content instance level. I'll be able to re-use it in Blogs, Html Content, Events, Forums, or anywhere else I need to use it. It will of course be up to the feature or page or whatever to know how to retrieve its ratings or history using its own Guids.

I have not yet implemented  Content Ratings or Content Versioning, but with the Guids in place I can now implement it once and use it in flexible ways across various features. You won't notice anything in the user experience yet from this addition of Guid columns, but the value of this will be more apparent in future releases. These are just examples too, there are actually a lot more things like tagging, meta data and other sub systems that I want to be able to re-use across features and the use of Guids will make that much easier to implement.

Also, this release introduces SubSonic into our architecture which will make it much easier going forward to support all the different databases. See my previous post for more information about the use of SubSonic in mojoPortal.

Blog Enhancements

Its now possible to have a google map in your blog posts by entering a location. Not sure how often you will find that useful, but its there if you need it. A more exciting enhancement to the blog is support for Odiogo, a free service that can generate audio podcasts from you posts automatically. To use it all you have to do is enter your Odiogo feed id and podcast url into the blog settings. Both of these enhancements were pretty low hanging fruit, that is, easy to implement.

Event Calendar Enhancements

Its now possible to enter a location for an Event and have a google map appear in the event details page. The google maps api key now can be stored in Site Settings for all google map enabled features.

Forum Enhancement

A small but useful enhancement is the ability to view threads by user. For any user that has made forum posts now a link to "View Posts" appears below their forum signature as well as on the member list and profile pages.

A New Image Gallery

I blogged about this new feature here.

More work on WebStore

I've been working a lot recently on getting the WebStore feature working on MySql for two reasons. One is so that I can demo it at the MySql Conference. The other is so that I can open up a store on this site to sell premium features. Its very challenging making a living as an open source developer when you give away your products. I do ok when I get consulting work but that is sporadic and not all the work I get has any benefit to the mojoPortal project so sometimes its actually slowing down progress of the project when I take consulting work. Most of the actual progress is still happening when I'm working for free on my own time. So I'm hoping that I can come up with some premium features that you would be willing to pay for. The core of mojoPortal will always remain open source but I need to get some revenue stream going so that I can afford to keep working on improving the core features. I'm also going to roll out a corporate benefactor program soon to make it easier for companies who are building their infrastructure on mojoPortal to get involved in supporting the project financially and influencing the direction of progress.

The WebStore feature should still be considered very experimental, but as I get it running on this site and begin to use it in actual commerce, it will get polished up more quickly and soon be in a condition for others to use.

This release also includes fixes for various bugs posted in the forums since the last release.

As always, be sure and backup your site and database before upgrading, and if you run into any problems post in the forums and I will try to help.

New Tutorial Videos

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

mojoPortal Released

I've just released mojoPortal, its available now on the download page.

Nothing changed in the core schema thats why the version only changed to -b. However there are some changes that make it worth the effort to upgrade.

The Poll Feature by Christian Fredh and the Survey Feature by Rob Henry have been revamped to make them a little more user friendly and more consistent with other features. These are 2 very cool features which up till now I haven't used much myself because this site is running on MySql and they were only implemented for MS SQL. Rob actually implemented most of the MySql layer for the Survey recently so I picked up where he left off and finished it then went on and implemented MySql for the Poll as well. You can try them out on this site, the Poll is here and the Survey is here. Go ahead and try them, I'd be interested in your answers to some of the questions I created.

Another new feature is the link browser in the FCKeditor is now implemented so you can browse and link to pages in the site or files in the file system more easily.

As always back up your site and db before upgrading. You'll want to be sure and get the new Web.config file, don't try to keep the old one, just restore any customizations from the old one to the new one.

Although the core schema didn't change you still need to visit the /Setup/Default.aspx page after uploading the new files so it can upgrade the Poll and Survey.

Other than these new features there are only a couple of minor bug fixes. The SQLite blog bug is fixed and it was the worst one reported since the previous release.

Also wanted to mention as noted in Miguel's blog, mojoPortal is also available in rpm format for a few flavors of Linux. The root folder is here, you can drill down through the different distros to find the correct package. This is all thanks to the magic of the OpenSuse Build service and Joseph Hill who initially set it up for mojoPortal. The rpms don't have the very latest release but they are easier to install. I plan to get involved in keeping them up to date after I learn how.

mojoPortal Released

I'm happy to announce the release of mojoPortal

Its been over 3 months since the last packaged release which is a bit longer than usual, my general motto is release early and release often but I had set a goal for this release to include the Newsletter which took a little longer than anticiapted. I was also side tracked on some other projects and of course we had several major holidays and family events to sidetrack me too. As a result this is a significant new release with a lot of new goodness.

Whats New?

Newsletter is a feature that a lot of users have been asking for. Now I hope you will all login to this site and opt in to our new mojoPortal News. I plan to send newsletters about once a month but I suppose it will depend on how much news we have each month. Thanks to those of you who signed up for the testing list and provided feedback!

Google Maps is one of the things I got sidetracked on as a need for it came up in a customer project. After meeting the customer needs I dressed it up a little more and made a new mojoPortal feature that makes it easy to put google maps in your site with various options for showing satelite, hybrid, and driving directions.

A feature to allow banning ip addresses is now included. I periodically review my logs and see evidence of malicious traffic and decided it was time to block some of those. A new feature has also been added to capture users ip addresses so that if a site has any troublesome users they can be banned.  Of course they may come back using a different ip address but every little bit of defense helps. Another benefit of capturing ip addresses is that there are ways of determining approximate logitude and latitude based on ip addresses and this presents a possibility to create cool features to plot community members on a map. So this will lead to some other cool features in the future.

We have a new Simplified Chinese translation as well as updates to the Russian, German, and Swedish translations contributed by the community. Thanks to all!

In the Blog, as soon as you create a post with a future date a new "Edit Drafts" link appears to make it easier to keep track of posts you are working on but aren;t ready to publish.

This release contains updated version of FCKeditor (v2.5.1) and ExtJs (2.0) toolkit.

The Site Settings, Page Settings, My Account (User Profile), Manage Users pages have all been updated to use Tab Panel layout provided by ExtJs. I'm also using the ExtJs grid in several places. I've been writing .NET wrapper controls to make it easy to use these things.

Rob Henry and I both did a bunch of work trying to fix FxCop violations to bring the code into FxCop rule compliance. Very few projects pass all the FxCop rules. Not passing them doesn't mean the code is bad but following the Framework guidelines developed by MS is a good practice. We used CodeIt Right to help identify and fix a lot of them but there is still a good ways to go. I spent 2 solid weeks on it. Some of the changes were breaking changes so those of you with custom features that haven't been working with the code from svn may need to revisit your code and compile against the new version. The breaking changes were just due to renaming some things and can be fixed easily by careful find and replace of .SiteID with .SiteId, .PageID with .PageId, and .ModuleID with .ModuleId. Does the code work any different or better due to these changes? No but it makes FxCop happier and I think adherance to the framework guidelines is one metric of code quality that is easy to measure. I would not overwieght this as the most important thing though.

I also noticed Rob recently implemented a MySQL data layer for his Survey feature. I haven't had time to test it yet but plan to soon.

I spent a chunk of time working on performance improvements using RedGate Antz Profiler and MS ACT load tester. ANTS is a great tool for finding slow places in the code. So I was finding such methods to optimize then load test to verify performance improvement by the optimization. I was able to make some significant gains in requests per second on my test machine using this process.

I'm including the e-commerce feature in the MS SQL release this time. It still needs a lot of work on the customer facing side but it can sell download products processing credit cards through Authorize.NET. I'll be doing more work on this in the near future and plan to implement Paypal and Google Checkout providers soon. For now consider it experimental but if you want to experiment with it feel free.

It is now possible to make skins with up to 5 content sections as illustrated in the 5contentpanes skin.

Things are working a bit better on Mono as of late. We still have to compile a special build without WebParts but the MS AJAX Update panel works so we're back to one code base again whereas at the time of the mojoportal release we had to keep the version for Mono due to lack of MS AJAX. The biggest problem we currently have is the lack of support for CSS Control Adapters, but the good news is my friend Dean Brettle has taken on the task of implementing the needed support in Mono. Dean is an awesome developer and the author of NeatUpload and NeatHtml both of which are used in mojoPortal. I think its just a matter of time now and all the mojoPortal skins will look as they should on Mono. I know a number of mojoPortal users who are eager for this so its very exciting.

As always, be sure and back up your site and database before upgrading. Report any problems in the forums and we will try to help.

If you like mojoPortal please help spread the word. We've got a lot of exciting plans for 2008 that I'll blog about soon.


mojoPortal Released

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

I was going to wait and try to get finished with the Newsletter feature I'm working on for this release but since I'm getting side tracked with some customer work (which is a good thing) I thought I should go ahead and make a release to get the new skins out there.

This release contains a few bug fixes and 7 new skins as mentioned in my previous post.

mojoPortal Released

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

This release contains bug fixes since the last release, and the 3 new skins I implemented recently. Since these skins are much better looking than most of our existing skins I wanted to go ahead and make a release so people can use them.

I still plan to implement more new skins in the coming weeks.

As always be sure and back everything up before upgrading, read the upgrading tips, and post in the forums if you have any difficulties and I will try to help.

We did not release a new build for Mono, and probably won't do that until Mono 1.2.6 is released.