Last Updated 2008-11-16 by Joe Audette
Economic Drivers
I began the mojoPortal project in my free time in the summer of 2004. In the fall of 2006 I decided to take a leap and start my own business, Source Tree Solutions, LLC. My primary goal in starting my own business is and was to find a way that I could work on improving mojoPortal full time. In my first year of business I focused on consulting projects but was very selective about which projects I would take on because I prefer to work on projects that actually improved mojoPortal for everyone, not just projects to solve specific customer needs, usually the projects I took on were a mixture of both. I've also had a few customers who sponsored significant features in mojoPortal and all of it was directly beneficial to the project.
I've also had to be careful not to take on projects doing "work for hire" (meaning that the customer owns the resulting source code and I do not). Given the similarity of my code across projects I cannot take the risk of getting into a situation where someone sues me for copyright infringement over code I may have written for them that is similar to existing or future code I've written for mojoPortal. In the corporate world pretty much every .NET developer keeps a copy of any code he has written and if he needs to do something similar in a future project he copies some code from previous work. Though some of these corporate developers may be under contracts where their employer owns the code they write, working in a closed environment means your next employer is never going to see your previous work and your current employer is never going to see the work you do for your future employer. So unless you're taking code that is the secret sauce of the business and giving it to your next employer or competing against your former employer with it, there isn't a lot of risk for corporate developers who may write or copy the same code from one project to the next.
Having embarked upon the world of open source development, its much different for me, I know everyone can see my code past and future. All it would really take to get into trouble is one disgruntled customer who can point to 10 lines of code in mojoPortal that is similar to 10 lines I wrote under a "contract for hire". They could sue me and even if I'm able to defend myself its going to cost money. So, I don't do "work for hire", you can hire me but you cannot own the copyright to any code I produce. When I explain this to potential customers it often spoils the deal.
In 2008 I decided a better strategy to make revenue in order to be able to continue working on mojoPortal full time would be to sell some add on features. If I can get a sustaining revenue stream from product sales it will give me much more freedom to choose what to work on than a consulting based business will. Consulting will remain a part of my business model in the long run, but currently I'm passing over most consulting inquiries and focusing on product development. I completed 2 products and also completed enough work in the mojoPortal WebStore feature to be able to sell them here on this site. (btw, the WebStore feature is free and open source not a paid add on product). So far sales are just a minor trickle, only a few units per month and I am living primarily on savings. I can go about another year on savings so the fundamental goal I have is to build a sustaining revenue stream before my savings runs out. To grow revenue I need to grow the popularity of mojoPortal since only users of mojoPortal are potential customers for my add on products. Only some very small percent of customers who use the free mojoPortal will buy the add on products, so my best chance for success is to drive the popularity of mojoPortal. I also need to keep improving my existing add on products and produce a few more compelling add on products, but I think growing the popularity of mojoPortal is going to be the most important thing I can do to attain success.
Below I have set out a lot of ambitious goals that I think will be the most important improvements to build on mojoPortal's growing popularity. These are the things I will be working on and trying to complete as quickly as possible. In addition to the things listed below there are many other things I would like to work on. I stated these economic drivers here so you can understand what is driving my choice of things to work on. Once I achieve a sustainable revenue model economic factors will have less influence on what I choose to work on. I will be more free to choose things to work on or respond to feature requests from the community and I will also be in a better position to coordinate the efforts of others who wish to contribute development effort to the project.
Near Term Project Goals:
Open Source Road Map
- completed v 2.2.7.9 -
301 Redirect System - when pages are renamed they get a new friendly url, for best SEO (Search Engine Optimization) we need to be able to redirect from the old url to the new url using the 301 status code which indicates the object was moved permanently. The plan is to create these automatically when pages are renamed and urls change as well as to have a web UI for managing them manually if needed.
- completed as of version 2.3.0.4
Meta Data improvements - again for better SEO, we need an easier way to add keywords and descriptions to page meta data from within features. For example, in the WebStore feature when viewing a product details page we want to be able to have product related keywords and description.
Content Versioning - keeping a history of every change (optional) like a Wiki and making it possible to revert to previous versions of content. To be implemented in the core so that it is easy to re-use across features. Completed as of version 2.3.0.1
- Publishing Workflow - I finally have a vision for this. My plan is to enable you to define publishing teams with content authors and approvers and then you can specify at the page which teams can publish. This way you can create different sub trees within a site hierarchy and have the publishing for that sub tree handled by a specific publishing team. There will be easy menus to submit content for approval and approvers will be notified by email and can approve or reject with comments back to the author.
- Content Tagging System - implemented in the core in such a way that its easy for feature developers to implement participation in the tagging system. For example currently the blog has categories/tags but its only in the blog. I'd like to be able to have a tag cloud that goes across features. I'm still debating whether the tagging should be hierarchal with nested categories or flat as most of them seem to be. I think it should be possible for users to have user specific tags and tagging in addition to how content authors tag things.
- Content Comment System - a feature to enable attaching a threaded discussion to any content instance or page, to be implemented in the core so that it is easy to re-use across features. Ideally we will have a plugin system so that we can optionally use external services like Disqus, or Intense Debate, or JS-Kit
- WebStore improvements - I think if I can get the WebStore feature in shape to solve general purpose ecommerce (not just download products as it does now) I think it will be a big boost to the popularity of mojoPortal.
- Completed as of version 2.3.0.8
Content template system - FCKeditor has the ability to easily integrate content templates that users can pick from a dropdown list. I would really like to come up with a way to do it for all the editors so that it would work with TinyMCE and XStandard editors but I think that is going to be a lot of work so I'm going to implement the easy way for FCKeditor for now.
- SiteOffice Framework - Need to finalize the architecture and plug in model. This is an alternate UI that is more like an application UI than a web site.
- Option to use MyPage or SiteOffice as the home page of the site instead of the normal CMS home page.
- completed v 2.2.7.9 -
Option to use a single set of users across sites in a multi site installation instead of separate users per site.
- Completed as of version 2.3.0.8
Improvements to Content Manager to enable filtering by feature and searching for content instances.
- Completed as of version 2.3.0.4
Improvements to User Management, additional ways for Admins to lookup users including by ipaddress.
- Feature to import GeoLocation Data from IPligence, so we can plot members/visitors on a google map
- I plan to implement some features using Silverlight and RESTful web services. I'm going to have to be careful to implement this in a way that it can be left out of builds for Mono until all the needed features are supported in Mono.
- Completed as of version 2.3.0.8
While we have a lot of attractive skins included with mojoPortal, some of the fixed width ones that are optimized for 800x600 screens seem dated now. It would be nice to make wider versions of the best looking ones. Good looking skins seem to have a lot of impact on project popularity so it would be worth spending another week on doing this sometime.
Paid Product Road Map
- Form Wizard Pro - Form Wizard Pro is already a released add on product, but I'd like to make it possible to create surveys with it in a future release.
- Fund Raiser Pro - a commerce feature for raising funds for a cause or goal.
- Web Invoice Pro - a commerce system for sending email invoices with attachments or a web page for invoice detail, and a link where the user can pay the invoice on the site using PayPal, Google, or Authorize.NET
- Site Provision Pro - a system for provisioning new sites with optional ecommerce so its possible to sell hosted sites or allow non admin users to provision sites easily.
- WebFarm Package - a feature to enable mojoPortal run on a Web Farm