Much of this applies to all software but the focus is on open source business software like Moqui.
The price of software (code) trends toward zero due to collaboration and negligible cost to copy. These break the supply & demand factors of pricing as software is not a naturally limited resource.
While the price of software may trend toward zero the cost of creating and maintaining software is based primarily on the price of labor. Labor is a limited resource and the price of labor is driven by market supply and demand (decreasing with increased supply, increasing with increasing demand).
While the price of labor in software may vary it is bound:
With those natural economic constraints a given software package is only viable if the upper bound of funding available is higher than the lower bound of the cost of applicable labor.
The lack of a price signal to balance supply and demand of software causes two primary issues:
With these market forces at play commercial software (just the software) is not a viable long-term model. Software companies use various strategies to protect prices:
Software and platforms available only as a service (no copy option) are a viable model but still face price pressure from competitors, eventually leading to prices reduced toward the costs other than software that are naturally limited and will never go to zero.
For business software, including Moqui, assuming adequate software exists to attract end users, what prices will never go to zero?
Software execution, data storage, and communication have a lower bound on price by cost of:
Hosting providers can increase profit by avoiding pricing models that are based only on a margin above cost. For internal applications (back office, ie ERP, CRM, etc) one example is a price per user. For public web sites and APIs one example is price per page view or transaction. With this sort of pricing, hosting providers have an incentive to make software more efficient (less hardware resources, bandwidth, etc) which becomes a natural channel for contribution to the software they host.
End user and technical support have a lower bound on price by cost of:
Support providers can increase profit by avoiding pricing models based on a margin above cost such as hourly billing. Hourly billing rates are often easiest to sell but are bad for customers as it tends to lead to insufficient education and therefore slow response times and poor service results. There is also little incentive to improve the underlying software to make it easier to support, and easier for customers to use so they need less support. Billing based on number of customer contacts and/or software users can be more profitable for providers, easier to plan/budget for customers, and gives an incentive to improve the software they support.
While software itself may trend toward zero price the price of improving and maintaining software will always be bound by costs.
The costs involved are mostly the same as the Support costs listed above for labor, education, upstream support, and infrastructure.
Software improvement skill sets often overlap with support services, both end user and technical support. Support services can be a good place to start for selling improvement services. The activities are very different, supporting the use of software that already exists and creating new software. The skill sets that overlap most are in analysis and design, understanding business context (processes, activities) and how the software is designed to be used in the business context. In theory an individual must know much more to document business context and design for it than to know how to use it, but in reality most analysts and designers learn as they go when creating new things. The overlap for developers is with technical support.
The overlap is stronger in the other direction where those who are involved with analyzing business context and designing software have already acquired the knowledge and experience necessary to support the software. This is why people who have done that can act as a back stop for support and not need upstream support themselves. A support organization could also build that knowledge and experience without having designed and built the software. In other words designing and building software is not a prerequisite for offering back stop support, but it is generally adequate to educate those who can then offer support services.
Software improvement naturally benefits the system software. That system software may be used by a single organization or shared among many. The extend it is shared among many the cost of specific functionality or systems in general may also be shared.
Using a system is generally an internal cost (mostly operating expense) and has no external price. One exception to this is the use of a business process outsourcing company that charge for services such as customer service, accounts receivable, fulfillment, or pretty much any business activity.
Every business activity that involves system interaction (viewing or changing data) requires human time so there is always a labor expense. The primary value proposition of business systems is to reduce human labor so that organizations can operate at higher scale with lower expenses. Some business activities like accounting and reporting benefit more from data automation than others.
One way to think of this is by comparing computer systems to paper systems. Paper processes often involved large banks of filing cabinets with information, duplicated across departments, and with a single taxonomy for indexing and retrieval (like customer files sorted alphabetically by name). Being able to look up a customer by name, phone number, email address, postal address, etc and have the records immediately available makes a huge difference in the time required to perform all sorts of business activities. In accounting there is even greater business benefit for things like automated posting. In paper accounting ledgers information would be manually copied from invoice, payment, etc documents to account ledgers and ledger balances had to be maintained manually and if ledger entries were ever changed it was a nightmare to recalculate errors were often not corrected and instead additional adjusting records were added. Paper reports have to compiled manually from the paper account ledgers. Auditing and analyzing accounting records was a great deal of work, manually comparing and reconciling paper records.
This may seem to be a focus on bottom-line operational expenses, leaving out investment in software for the purpose of increasing revenue. Increasing revenue generally involves business activities that are part of marketing and sales processes. Those are still just business activities and just like operating expenses can be done with any sort of system, even paper or spreadsheets, so the focus for software systems is still on increasing efficiency.
Another common topic is increasing efficacy or quality of work and information. Software systems can enforce (by hard errors) or encourage (by defaults, warnings, etc) certain types of business policies. Ultimately those business policies are also just business activities that could be done manually (and in the past with paper processes were done manually, helped by form designs). Being able to enforce, encourage, and audit policies without having to do it all manually is much more efficient with software systems, another value add in terms of increasing efficiency.
That is more than is needed for an analysis of costs related to system usage. The important point is every business activity has a cost to perform. In paper systems the cost was designing and printing forms, filing systems, etc. In computer systems the costs are the software, hosting, support, etc. Factoring those out to make it easier to compare costs the primary cost to consider is human labor.
More generally the costs are essentially the same as the Support costs listed above for labor, education, upstream support, and infrastructure.
Every organization that uses a system has a natural incentive to improve the system to enable scale and reduce operating expenses. In computer based systems this is a natural inventive to improve software, mostly to reduce the human time (labor cost) required for each business activity. The priorities for improving software are based mostly on the frequency of each business activity but may also be based on general business objectives and strategy. The cost of software improvements is justified mostly by an increase in operational efficiency so the price of software improvements is inherently limited by how much may be saved by an end user organization.
A smaller end user organization or business process outsourcing company may not have the resources or the potential reduction in expenses to pay the price of software improvement. There are two main ways of getting around this: