If you cheat the definition, you could say Apple has opened some code, therefore they are an open source company.
But, clearly that's not what's in play here. It's difficult to be an open source startup because it's easy to get a big ego and start doing software wrong. You don't get people to use your software by saying "LOOK! We have VCs. Trust us. Buy our support contracts!"
You get people to use your software by making good features, growing by word of mouth, then you're entrenched and can start milking the support cow. Your word-of-mouth features don't even have to work (coughmongocough), they just have to be easy to brag about so developers get ego boosts by telling others "hey, look, i found this thing and you should think I'm cool because I'm telling you about it."
Another really important point: open source companies aren't proven. The current crop of open source startup VC funded happy towns are all experiments. It's very possible you can't create sustainable open source software companies (support contracts aren't zero margin software products, and nobody buys software anymore because lol "it's free!!!"). There's no natural "supernormal profit" engine if you make a good, clean, understandable open source product. In fact, it's actually the opposite: open source companies get big when the product is garbage (or too complex) because then everybody needs support to CYA against higher management.
(I've been thinking about writing a few articles about all this in January. Stay tuned.)
> support contracts aren't zero margin software products, and nobody buys software anymore
There have been other models for open-source software companies, such as the "sell some defaults to advertisers or sponsors".
If someone could manage to work out the details, I think the open-source ecosystem would respond favorably to a bitcoin approach to revenue share (which would make it explicitly not "open source", but I think people are willing to forgive this violation). The hard part is figuring out how to negotiate with thousands of separate tiny "open-source" components, without project leaders making demands too ridiculous.
At the same time, we don't really want a race-to-the-bottom of poorly-maintained software projects just because someone figured reimplementation could net him a bunch of revenue if he prices everything lower... presumably this cuts into long-term software maintenance, which is something that a good system would ideally incentivize both from the perspective of library authors but also from the perspective of software purchasers, who don't want to suffer from bitrot.
(Another approach could be "performance targets" where bonds are created by library authors, but funded by company purchasers, who would be buying up some amount of technical debt in exchange for rights to deploy and use the software in their production environments. These bonds would then pay out to the library author team based on milestones, like long-term maintenance, or fixing scaling bugs, or something... But similar problems remain regarding how to handle the negotiation between thousands of tiny library authors vs companies that don't have 1000s of hours to waste on software negotiation..... Also lots of questions about "rebundling"- we can't have negotiations with all 100k library authors between themselves and some company just to strike a deal for the company to use an Ubuntu-like software system. Answer is probably something like "have an array of default ready-to-go contracts that any new business can use, and then have terms for renegotiation after a certain period of time or certain amount of revenue accumulation by the downstream company"..)
we can't have negotiations with all 100k library authors between themselves
Yeah, it's the "nobody is ever going to pay for bash, vim, top, netcat, ..." problem.
Apple has found a good middle ground though. Pay developers millions of dollars internally (infinitely growing stock) then they release what they work on as open source code. It solves the (reasonable) compensation problem for individuals while letting new software spread purposefully throughout the world.
We're just missing a middle ground where you can write open source software while not being owned by the most valuable company in the world.
> Pay developers millions of dollars internally then they release what they work on as open source code.
What do they release as open source code, apart from TextEdit? I am really surprised by your comparison since it seems to me that the two (bash, vim, top, netcat… and Apple's open source code) do not compare at all.
Apple "owns" LLVM which has changed our computing landscape from the bottom up in more ways than I can count. GCC was happy being stagnant until LLVM came along and GCC could finally see how awful and behind the times they had become. Now there's at least some competition again.
(competition-free platforms are never a good thing, no matter how many times you pray to your zero-to-one god)
Or perhaps (and here's a potentially worrying thought), we'll get open source software making any proprietary stuff impossible to sell. Like how the app store has become filled with 'freemium' apps and 99 cent paid apps.
Open source would definitely be eating the world... though quite a few companies wouldn't be very happy in the process.
That is the end goal, right? Your margin is my opportunity. The problem in the middle is: open source software is considered free-as-in-never-pay-me free.
I have multibillion dollar companies using some of my open source software. They've never paid me anything. They ask for bug fixes and feature improvements that would take me six months (or more) of full time work. They don't offer to pay (or then even balk at the thought), they just keep saying "you should support us for free because it's open source."
Part of the "we won't/can't pay" is due to programmers being very low status people in organizations. Programmers don't have budgets to buy anything because "lol free open source" and "it's just code, do whatever." If programmers could allocate resources towards getting features/fixes they need from external projects, the software world could be more... synergistic.
Developers need to be bringing the culture of open source to their places of work. That means asking management for monthly budget they can use to make donations to open source projects (preferably to the projects they use in the company). If the most successful open source projects are not receiving donations from the companies that use them it's our own failing.
And if management refuses to allocate a budget for donating back to open source projects (either in developer time or in money) then developers should tell their coworkers that the company they work for is not an open-source friendly company. They're not doing their part to give back to the community of developers who are working so hard in their spare time to make what they do possible. I think the last thing companies want is to build a wall between management and their developer teams like that.
Imagine if programmers unionized and enforced corporate usage-based givebacks to independent software creators through collective bargaining.
When the default position of management is to fight progress (or hoard private profits enabled by using public goods), playing the role of docile puppies and kittens won't enact change.
I agree. But in a long-term scenario as long as all developers within a company know (and share with their co-workers) that their management are not open-source friendly and do not give back to the community of developers that they directly benefit from will find ways to revolt silently. Whether it's look for another job, or spend an extra day on a project they could've wrapped up in a few hours.
Those corporations who do not have good hearts and do not make good choices within their leadership will ultimately lose to those that do. Darwinism in full effect.
EDIT: In fact one of my ideas for a while now is to have a standardized disclosure that corporations could use to publicize to the world how they give back to the open source community (specifically and generally). This public disclosure would be primarily used as a recruiting tool. Eventually if it became big enough, the assumption would be that those who are not disclosing are probably not contributing. Huge implications as a recruiting tool IMO.
And it's not a lot to ask. It's not like you're asking for even $1000's of dollars. Khan Academy I think set the bar when they announced a while back they would allocate $5/mo/developer to allow each developer to donate to open source projects as they saw fit. If a company with a large team of developers can't afford something as simple as that then they have bigger problems.
> They ask for bug fixes and feature improvements that would take me six months (or more) of full time work. They don't offer to pay (or then even balk at the thought), they just keep saying "you should support us for free because it's open source."
If you ever do business with corporations, you will get used to the fact, that they will for the moon and expect it for free. It is your task to tell them, what you expect to be paid and stick to it. They won't volunteer any money they don't have to, and will use any excuse that will make it possible (the procurement bonuses depend on money saved). It's up to you to not accept that excuse.
Except, the company endpoint is a low status programmer.
Imagine how quickly the average programmer would get laughed out of the room if they went to their manager and asked for $100,000 to pay an external contractor to implement a feature they need. Oh, also the feature will be open source and other companies will be able to use it after it's written too.
The world doesn't operate on that level yet outside of maybe seven companies in the world.
But, clearly that's not what's in play here. It's difficult to be an open source startup because it's easy to get a big ego and start doing software wrong. You don't get people to use your software by saying "LOOK! We have VCs. Trust us. Buy our support contracts!"
You get people to use your software by making good features, growing by word of mouth, then you're entrenched and can start milking the support cow. Your word-of-mouth features don't even have to work (coughmongocough), they just have to be easy to brag about so developers get ego boosts by telling others "hey, look, i found this thing and you should think I'm cool because I'm telling you about it."
Another really important point: open source companies aren't proven. The current crop of open source startup VC funded happy towns are all experiments. It's very possible you can't create sustainable open source software companies (support contracts aren't zero margin software products, and nobody buys software anymore because lol "it's free!!!"). There's no natural "supernormal profit" engine if you make a good, clean, understandable open source product. In fact, it's actually the opposite: open source companies get big when the product is garbage (or too complex) because then everybody needs support to CYA against higher management.
(I've been thinking about writing a few articles about all this in January. Stay tuned.)