Posts in Category: Development

Open Source Project Hosting Options- Should we move?

Currently the source code repository and file downloads for mojoPortal are hosted on Novell Forge. Several years ago I chose Novell Forge because they were offering Subversion aka svn repositories and at the time SourceForge was limited to cvs. Over time my satisfaction with Novell Forge has declined and now I am considering whether to move the project to a different provider. The current options to consider are:

1. Stay with Novell Forge, its been fairly reliable but there was a week long outage last year and currently I am not able to add a user to the project due to some issue in their system and when I send a message to the mailing list I get nothing but crickets chirping. Novell Forge seems almost abandonded and certainly a very low priority effort by Novell though I'm a big fan of Novell and their work with Mono and openSuse. I don't really blame Novell as it seems like providing this kind of infrastructure is a cost center with little if any benefit to their bottom line. The whole Novell Forge plan seems to be in flux maybe it will eventually settle down but if you look at the 2 newest news items on the old Novell Forge, they migrated everything to Media Wiki in 2006, so that site is here and now they seem to be in the throws of moving to yet another wiki engine here which you can only get to with a Novell login. Presumably there will be some benefit to it but it looks a lot like the current wiki and there wasn't much response on the mailing list when the new beta site was announced so it makes the impression on me that the Novell Forge community is not exactly a thriving one. Staying with Novell Forge would be the easiest choice in terms of effort but I don't seem to be getting any help adding a user to my project so staying may not be a viable option.

2. Google Code - I'm a big fan of Google and I wish it were an option but unfortunately the company that would do no evil has an agenda when it comes to open source licenses and does not offer Common Public License as an option so moving there would require a license change which is not something I'm inclined to do as it would require permission from all previous contributors. It also rubs me wrong that they have this agenda which would coerce me into changing my chosen license. I understand their goal of reducing the proliferation of open source licenses but their list is too short and leaves out established OSI approved licenses. No-one should have to change their license just to get project hosting.

3. CodePlex - Microsoft is putting a lot of effort into hosting open source projects and CodePlex seems to be gaining popularity in the .NET world. There might be some benefits to mojoPortal if it were a member of the CodePlex community, we are still very unknown compared to things like DotNetNuke which everyone knows about. I'd like to be able to consider Codeplex but they use Team Foundation I believe for source code. They have a client side utility called svnbridge that allows users to access the repository using svn and they are working on a server side svn bridge so no client bridge is needed. If that were ready today I'd seriously consider going with Codeplex but I'm less inclined at the moment because I don't want any difficulty checking out the code on linux and I really like svn and not sure I would like it as much if its not working the same in the back end as svn.

4. SourceForge - the first major player in open source project hosting and probably still the biggest. They have long since added svn to their list of services. They seem very committed to what they are doing and they seem to have a thriving community. This is the option I'm leaning towards. It would be a bit of work moving the code but it would probably be worth it in the long run.

Any thoughts or opinions?


UPDATE: Since posting this I did get a response from Cory Aitchison from Novell on the Novell Forge mailing list and he is helping me with the immediate problem of adding a user so for now I think we will stay with Novell Forge and see how things look after the new migration. In hindsight my comment about no reply except crickets chirping was probably not fair. I did get a response to the message I sent today and I fear it may have been my own fault that I did not get a response yesterday because I sent it from gmail but my message may have bounced because I'm registered on the list with my yahoo mail account. It all forwards to my gmail but I think I forgot yesterday that I needed to specify my Yahoo account in the from box. I applogise for that and thank Cory for his help.

Achieving the Single Sign On Dream with Open ID and Windows Live ID

I've just updated this site with the very latest code and have enabled authentication with Open ID and also with Windows Live ID. It is now possible to register or sign in to this site using either of these services.

Tip: If you are already a registered user of the site and you want to associate your Open ID with your existing site account you can do so on the My Profile page after you login with your current credentials.

For those interested, a good place to get a free Open ID account is at

I really think single sign on is a huge thing the web has needed for a long time. I hope it catches on so I can use the same password at most sites. Now mojoPortal makes it easy to setup sites that support these single sign on services.

The code has already landed in svn in my sandbox and I will be merging it to trunk in the next few hours. Any testing would be appreciated. I would like to make a new release with these features very soon.


New Setup System landed in svn trunk

Heads up to anyone working with the sourcecode from svn trunk. I've just merged the new Setup system. The new system provides a lot more helpful information during setup and is designed such that if an error happens, the process can continue if the cause of the error is corrected. When doing a clean install, all you have to do is create the database and set the connection string with a user that has sufficient permission to create the schema and the Setup will do the rest including creating all needed database objects. The only data layer where I have not got it working correctly yet is Firebird, but it fails gracefully and tells the user where to find the scripts that need to be run manually. I think I may yet be able to get this automated in Firebird but it looks like it will not work using the same approach as all the other data layers so I will have to try to make it work a different way than the others do.

In addition to the new automated schema creation, the new Setup system installs features based on xml configuration files so it will be easy for third party developers to package their own features into the setup process as well as the ability to leave included features out if they want to. You can even make a custom header file so the setup screen shows your own custom branding during install.

The system also allows configuration of pages that will be created during setup. You can specify pages in the xml and which features to put on a page. Currently it is limited to just putting an instance of a feature on a page and setting its title, it cannot set any properties on the instance except for the included Html Content module. For the Html Content module you can specify a content template so that actual html content is on the page. For all other features like the Blog for example, it can put a blog on a page and give it a title but it can't currently put a post in the blog. Maybe I can come up with  design to do things like that later if they seem important.

I am still refining and testing a little bit and would appreciate anyone testing this from svn trunk and letting me know any issues so I can fix them and then can make a new release.

Other improvements that also landed in svn trunk.

  • Automatic Google Site Map you can submit to google using yoursiteroot/SiteMap.ashx
  • Page Settings now has settings for Search Engine Optimization, ie, you can configure the changefrequency, and the priority within a site for each page. This determines how it will appear in the Google Site Map.
  • Feature Names are now localizable
  • A simple log viewer has been implemented in the Admin section to allow viewing the error log without having to download via ftp.
  • Improved the Child Page Menu so it now renders more like the Site Map page, showing all pages below the current page
  • Fixed a bug that was happening when creating new pages using SQLite

I would like to release these improvements soon so any help in testing would be great.

SiteOffice UI work in svn

Just  a quick post that will only be of interest to those building and running mojoPortal from svn.

I've been working on the UI for the Site Office feature. I started on this feature almost a year ago and got side tracked but am picking up where I left off.

I had done a UI prototype before using jsObjects, but wasn't entirely satisfied with it. It would not work right if the doctype was xhtml.

I've now started reworking a protoype that uses dojo for the resizable panels and Rico for the accordian panels. So the result is kind of like outlook.

If you're working with the VS Solution from svn/trunk, after you update and rebuild, set these to true in either Web.config or user.config:

<add key="UseSiteMailFeature" value="true" />
<add key="UseOfficeFeature" value="true" />
<add key="UseExternalMailFeature" value="true" />

Now when you login you'll see the Site Office link in the top nav. Click that to see the new UI protoype. To see the old one using jsObjects change the url from Office.aspx to Default.aspx

Let me know what you think.


ps: Sorry this is not in the MonoDevelop Solution yet, once it solidifies a little more I will add it in there.

Google Gears Looks Interesting

Google just released a beta of a new product called Google Gears. They've combined a browser plugin and a javascript API to enable local storage of data so that web apps can work offline. This is similar in concept to Smart Client, or so it seems to me, but with the desktop application replaced by the browser extension an the UI all handled by the browser rather than having the desktop UI installed on the client machine.

So I think for example you could implement something like for a travelling salesman who gets to connect from time to time but is not always connected. You might implement his contacts and product catalog as a web site but when he is disconnected the contacts and product catalog come from a local database via Google Gears. Whenever he connects the contacts and catalog would be updated and any orders he has entered can be pushed to the server.

The developer page for Google Gears is here: