The reasoning for our continued belief in Open Source is thus…
Software development is a fixed cost. There is no variable cost (no unit cost) for having someone use software on their own computer systems. It empowers the people of the world if they can get as much free value (free software) as possible, and it opens up routes for unforeseen innovations and continued development beyond the limits/visions of original software. There therefore is a strong ethical argument that it is wrong to put the brakes on this, to hold back human development, and that therefore Open Source development should be the expected norm.
A very good contemporary example is Cloud Computing. It would not have been possible with proprietary software. Imagine paying a fee of $2000 to Oracle for every $100/month Amazon virtual server you have, and then probably another $15k to various other companies that would have developed software to enable it. Okay, to be fair, actually there probably would have been a competitor come along and charge a much lower price for bulk deals. But practically speaking, it would really have set us back if every time we do something new, we have to negotiate for a whole stack of licenses.
The big problem, however, is that people often have misconceptions that "free" either means "done as a hobby" or "was cheap to make".
According to a tool that a few of our users have run on our code base:
ohloh.net saidit would take over 7 million dollars to write ocPortal from scratch
That's simply not true to be honest. There is no way 7 millions dollars, or even 1 million dollars, has flowed through our company. We are just a small business after all, and I'm proud we've been completely independent – there are no external investors. We're not like Zend, or Acquia, or DotNetNuke Corp, who have received this kind of money, but in my opinion are as a result forced to be overly corporate and charge 3 times what we charge to their business users.
However, in actual reality, I have thrown insane numbers of hours in development and my market value as a very skilled developer and product manager is very high (i.e. I could earn a lot more working elsewhere). Others have also contributed a lot of code (Allen and Philip, as well as various temporary contractors, and various traditional employees). If another company had developed ocPortal, where everyone involved was incentivised only as staff paid at market value, supported in a typical corporate setting (office space, management, etc), I actually really believe that figure of $7million could be accurate.
So, given we want an Open Source model, a software company has to then make money to offset whatever the fixed costs of development really are (and the costs are actually ongoing, even if it is just bug fixing) as well as hopefully pay some salary, and make a return on investment that also offsets "cost of risk". In today's connected-up, high fixed costs, in theory, can melt away as a small added margin on top of a high throughput of service business.
The way of thinking I like is that you do as much as possible for free, when there are no variable costs and where value is universal, and then what cannot be done for free is where you charge. In our case, support is a big variable cost, and themes do not have universal value (as the more they are used, the less their value) – therefore this is where we are making our money.
My big problem is that if people don't understand the cost and value of things, it really comes and bites everyone hard. The kinds of levels of professional skill and complexity around the work web development companies do are not at all commensurate with the kinds of services regular people purchase on a daily basis, or the cost of doing just normal web design. Coupled with a misconception of the value in free software, and heavy market distortion of offshoring to countries like India (which rarely ends well), as well as economic problems and global in-balances, it often leaves people ill-prepared for the real costs in getting big projects live.
There are roughly three kinds of users I am currently seeing it hurting:
- Non-technical people who are working on something complex that is "going to make a lot of money", but have not successfully assessed cost or sought investment
- Designers creating a feature-filled site for a client who they have quoted a low sum (often just the cost equivalent to making a static site design, or setting up a blog), thinking setting up their very complex site design will be as easy as tweaking ocPortal settings, and that ocPortal will just mould to their design without technical skill
- People working on voluntary/hobby projects, and therefore without a budget at all
Unfortunately when users realise they need help and have no budget for it, they press really heard, often to me personally. In fact I have to actively avoid posting in some topics on our forum at all because people will start addressing me personally with their questions when they recognise my name / see me as staff. Often when I work with someone to fix a bug, it leads to lots of personal emails asking for a series of free support answers. Routinely people put through free support tickets, ignoring all our site explanations on how support works.
I feel compelled each time to explain that time is money, that the burden of cost we've already taken on for free (ocPortal development/maintenance) can be in itself crippling at times, and that the only ways we make money at ocProducts to cover our huge ongoing costs for all the free goodies we've bestowed on everyone is by charging for that one-on-one time. Usually this doesn't go down well: often it turns into an argument, or just is ignored and the next day I get more requests in the inbox. Again, I don't wish to ignore people (I hate being ignored myself when I try to establish business relationships with people, for example) so I explain again.
Often people argue "if you do this, it will bring a lot more users, and you'll therefore get a lot more customers" or that "ocPortal needs this". I'm afraid I know from experience that adding levels of indirection in attaining income almost always ends badly, in terms of diluting both the likelihood and level of that income to impractical lows; besides, it's almost always based on what this particular user thinks the product should be, and that is often unique to that user.
Often we get promises of future work based on their success, and I always think "well, if this is likely to work, a bank will be very happy to assess you and give you a loan based on that – we are not a bank, experts in assessing business models and giving loans, we shouldn't be shouldering commercial risks on your behalf".
I need to be clear that these kinds of problem affect every Open Source project (and support costs affect every commercial project too!). It's just in most Open Source communities there is no one who steps up and tries to ensure the success of everyone in that community. If you go and look around forums of other software you'll see many many questions are not answered satisfactorily. The most successful people are either serious business people who have avoided the misconceptions and budgeted properly, or people who have their own professional skills and thus can bring their own order to things (often working for intermediary agencies, delivering Open Source solutions to their clients).
Sometimes people categorise ocPortal's "need" for support as a usability issue in ocPortal itself, and it's true we've had to improve usability in the past. However I am very sure at this point any complexity stems from the higher and more complex, more custom, requirements, that people try to implement in ocPortal (having picked ocPortal as it is literally the only strong 'packaged' option in many cases). For these custom requirements ocPortal becomes less of a product, and more of a powerful toolkit for use by experienced hands. It's all about knowing how to reshape things to meet a spec – and there really is no other way, as a product can't anticipate people's custom requirements, only ensure it has a well designed malleable structure with great building blocks. People often don't see their requirements as 'custom', having seen examples elsewhere – but often the way things are combined and interoperate is where that 'custom' is, or what is being compared to was itself a custom job.
Of course ocPortal can work out of the box to create very sophisticated sites, often able to meet every single feature required. It's just that it is rare that the default implementation structure is what people have in mind, especially as web design standards have really raised a lot in recent years. So customisation on top of defaults almost always does become necessary for a professional finish.
My advice for people to avoid the three situations above:
- Situation 1 – If you have a seriously good website idea, consider it a business. A sophisticated modern website requires a serious investment, so seek external investors with a properly written business plan that includes the full costs for your project, including support and software development costs. ocProducts has typical prices our company charges at our agency page, but you can approach other developers too should you not want to use us.
- Situation 2 – Make sure that you budget accordingly. Never assume that implementing a big project is as simple as comparing feature-lists. Feature-lists are only one part of requirements, things like structure and UI design may not be as you need them out-of-the-box. Unlike simpler web design, big projects also require serious project management experience and need implementing via a proper professional project management process (e.g. XP, Scrum, Waterfall, PRINCE). Seek technical advice and don't be surprised if the costs could easily be an order of magnitude higher than just a web design cost would be.
- Situation 3 – This is always hard, but users on our forum often do a good job of helping each other. People should always give in more than they take out – so if you get help, make sure you give others even more help than you received. Also ocProducts has a referral offer (i.e. by helping us find clients, you can get a bit of free professional-level support).
So hopefully with this blog post I have dispelled some misconceptions, and explained to people what they need to do to prepare for success !. It is likely that I will start pointing people here when they come to me asking me to subsidise their individual custom features/design on top of the software I have already generously subsidised for them . Of course, I was prompted to write this blog post after yet more requests for free support meeting me in my inbox this morning.