This is another datapoint that generational attitudes towards the value of software have shifted.
In the early days of software, it was an afterthought: what made it possible for IBM and others to sell the more valuable hardware asset.
Microsoft (founded 1975) perceived the economic opportunity attached to volume distribution of user facing machines, and helped usher in an age where the value shifted from the hardware to the software.
Google (1998), by contrast, derived effectively zero revenue from software directly. Instead, they leveraged open source and commodity hardware to control their costs and were able to scale more effectively than existing search alternatives. While they didn't sell software, however, they continued to perceive it as a competitive advantage, and thus a minority of their overall development was shared via public repositories.
For Facebook (2004), Twitter (2006) and GitHub (2008), like Google, software is the means to an end rather than the end itself. Unlike Google, however, most do not behave as if code itself is a competitive advantage. You can argue about what their actual product is - a critical mass of users, the data they generate or both - but you can't build the case that it is primarily the software.
And if the software doesn't represent a competitive advantage, the follow on benefits of releasing it as open source software - whether it's general goodwill, amortizing development costs, greater efficiencies in hiring and recruitment, etc - are believed to outweigh the costs.
Hence Cassandra, FlockDB, Hip Hop, Hive, Jekyll, Resque, Storm, Thrift and so on.
None of these entities open source the entirety of their infrastructure, but it is increasingly common to see open source as the default rather than the exception.
Software has and will continue to have value. But in an increasing number of cases it will not represent a competitive advantage, and therefore assuming the burden of maintaining it internally will become less attractive.
> Instead, they leveraged open source and commodity hardware to control their costs and were able to scale more effectively than existing search alternatives.
I would propose a caveat that Google's initial strength wasn't merely that it scaled better but that it used a search algorithm that produced better results. As Tom Preston-Werner argues, Google jealously guards their PageRank algorithm because it "represents core business value".
I believe you are missing the point of the argument. Substitute "PageRank algorithm" with "whatever method(s) they are currently using to rank pages" as it is always changing in response to people who are gaming the system.
Very insightful. Reminds me of a talk I saw Tim O'Reilly give at OSCON back in the day, basically about this same concept. He described it as "moving up the stack", with each successive phase commoditizing the thing beneath it (hardware at the bottom, then software, then services). Here's a link to his writeup of the concept (although it's kind of dry -- I remember the presentation itself having more pictures and being more engaging):
http://tim.oreilly.com/articles/paradigmshift_0504.html
I wonder what's going to sit above "services" in the next phase? Maybe the services will be commoditized because there will be so many of them that do similar things and they all talk to each other via RESTful interfaces... so then the thing that's valuable is whatever sits above that. Identity systems? Yahoo Pipes? I dunno... predicting the future is hard, let's go shopping!
"I wonder what's going to sit above "services" in the next phase?"
IMO, and I suspect Tim's as well given his "data is the Intel inside" comments, data will be the next major revenue stream. Consider that open source software generally excels at distribution, but is poor at customer conversion.
Open source vendors would be wise to gradually de-emphasize customer conversion mechanisms such as open core or hybrid source in favor of maximizing usage and thus the size of the dataset they may generate. This data can then be analyzed and sold to customers as analytics or to third parties interested in broader trend data.
See Spiceworks, Sonatype Insights etc as indications of where this market will go.
Brilliant! This makes a lot of sense. Interestingly, though, I see data as working in tandem with services (as the services are the ones that would be able to make use of the data) as opposed to the data commoditizing the services. I guess that's okay -- this theory is just a model, not immutable laws of physics :)
EDIT: Okay, I just looked at those two companies, and I totally get it -- they commoditize the services by making the service free (which they can do because they're making money off the data they gather from the free users). Consider my mind blown.
In college I did some App Engine development. At a previous job, we used open source Google Java libraries like Guice and Guava. I recently started at Google and walked in the door largely proficient in using their stack. In my opinion, they did everyone a favour.
They've done good by other companies by providing them with solid libraries. They did right by me -- knowledge of their libraries presumably made me a stronger candidate. Finally, they did right by themselves by reducing the time it took me to get up to speed.
I've generally come to the conclusion that open sourcing tangential software is a good cultural/social practice. Adopted broadly, it represents a gigantic time-savings for our industry, allowing us to collectively push forward to other more interesting problems than writing company-specific ci server/build system/source control system, etc.
One simple rule of business: commoditize your complements.
Apple sells hardware and "gives away" all their media.
Content creators and developers are charged only enough (30% margin) to basically break even managing the system. This adds tremendous value to their hardware since they now have "an ecosystem" and not just some electronic widgets.
Aside: Apple have set prices for music but assumed app developers would always charge for their apps. When huge numbers of developers started giving away apps for free, Apple came out with iAds in an attempt to defray the cost of hosting free apps. They don't do anything for free.
So, the same applies to open source and hiring. Good engineers are hard to find. If you outsource your software and it becomes popular, good engineers will flock to it.
You've now got engineers pre-trained (for free) on an important component of your system and they are dead easy to identify, defraying the cost of recruiting.
Since open source is the commodity in this scenario, giving it away for free is the most prudent way of insuring widespread use and a good supply of engineers.
Edit: another idea is "give away your ideas, sell the system". Open source your non-core ideas to attract attention and sell your complete system. Although many marketers argue the reverse: give away your BEST ideas to prove your worth and build trust then sell them on the whole package.
One simple rule of business: commoditize your complements.
I'm surpised no one else has mentioned that. It's a very powerful idea, and essentially what this blog post is getting at. I don't know if Joel Spolsky coined that phrase, but that's where I first heard it:
One of the strongest arguments is modularity. It's definitely true that you prevent your code from rotting and acquiring random dependencies if you think about how you can export it as a useful open source library.
As I and my teammate started working on Candy (http://amiadogroup.github.com/candy) we knew that we want to open-source the project. Therefore we built everything so modular and flexible that even we used the vanilla Candy and wrote just some custom plugins for our own use-case.
The article begins by discussing their choice to open source an integral part of their product. The article ends with an admonition: "Don't open source anything that represents core business value." It seems like Grit certainly represented core business value, yet they open sourced it.
I'm guessing that what they really mean is that you should open source almost everything that represents core business value, but one piece should always be left out. Or, perhaps they're saying that their web interface is the core value they provide, and so they open source everything but that.
I think you're reading "core business value" too broadly. Github might not exist without Grit, but the crucial test is that Grit might exist without Github. Grit itself --- the ability to interface with git --- it's something specific to the functionality of Github, it has broader applications. This isn't something true of Github, and neither is it true of their Jobs site, since it has (apparently, never used it) direct and deep integration with Github.
That's less "core" than what Tom seems to mean. By looking at the examples he provides, the essential distinction seems to be this:
If somebody found the code, would cloning your business be the obvious thing to do with it?
This isn't true of Grit. It is true of the core GitHub app, and it is true of the GitHub Jobs app.
Interacting with Git from Ruby is not the core business value of GitHub. It's just something GitHub does in the process of providing its real core business value, which is the awesome interface and collaboration features they've built on top of Git.
Reading on, "Open sourcing it would mean thousands of people worldwide could use it to build interesting Git tools, creating an even more vibrant Git ecosystem."
Awesome Git bindings to Ruby are critical to the functionality of Github, but a vibrant Git ecosystem is essential to its success. Business value trumps technical implementation.
In fact, Tom also mentions the libgit2 library that Github is working on, and may even replace some of what they use Grit for today.
Another point: Zurb recently open-sourced their CSS/JS framework that they use to build all their client sites/apps with. They have spent years making it awesome. It's a major part of the material goods that they hand over at the delivery of a project. After it being opened up on Gitub, they've seen lots of great feedback, bug fixes and enhancements. I'd also bet they've seen an increase in new clients. What they wrote is awesome and now they are known to many more potential customers as being the people who know what they are doing.
If your product relies on the network effect for its success (as GitHub does) and you've already established yourself, it doesn't seem to me that open sourcing your software would be a bad idea. See Reddit as another example.
There are two schools of thought, in marketing, on giving away parts of your business, your ideas etc:
Give away your non-core ideas to attract people/resources/interest and then sell your complete system.
Give away your core ideas to "prove your worth" and build trust/authority/recognition and sell your complete system.
The second version is more powerful but it takes a leap of faith. Others could poach your work and use it against you but truly viable competitors are rare and people are lazy, the odds of this happening are often slim.
Another way is to make one piece of the open-sourced version run slower than an equivalent optimized closed-source version that does the same thing in the proprietary distribution of the same product. That way the business can make the claim "completely open sourced", knowing if anyone forks their product it will run slower.
The primary advantage they have over competitors is a trusted brand name. This name has been built, in part, by engaging and contributing to the open source community.
If GitHub were to open source _all_ of their software, some copycat sites may appear. These sites would not have a trusted name, thousands of well known open source projects backing them up and the expertise to properly run an instance of GitHub. As long as GitHub doesn't try charging users too much to use their service, there is no reason for people to use competitors to save a few dollars a month (reliability is far more important than a few dollars here and there).
Some open source projects may decide to operate their own infrastructure. However, this is highly unlikely because GitHub _as a service_ is much easier and more reliable than an independently managed instance. If GitHub can retain the open source community, they become "the hub" that everyone wants to be part of. As long as GitHub is known to support open source in a meaningful way, given the resources available, I'm sure they'd benefit from hundreds of open source projects improving upon and patching GitHub code.
I think they could quite readily open source _all_ of their software.
If Github went in that direction, they would have to sell services to Enterprise clients to maintain/deploy the client's Github installation instead of selling the software itself.
The costs of setting up a geographically redundant GitHub clone and continuously updating software and configuration are far in excess of the mere $200/month GitHub charges for their Platinum plan: unlimited users, unlimited public repositories and 125 private repositories. Even the Bronze plan for $25/month with 10 private repositories is exceptional value to businesses that only develop a few pieces of software.
At GitHub's price points, a manager would be crazy to take on the risk, expense and effort of setting up their own clone. The obvious "but..." excuses don't even apply because:
1. GitHub offers enterprise "run GitHub from your own server room" services for companies that have greater needs for confidentiality/customisability.
2. Private organisations can take their source code and other data with them. This means that users are free to move elsewhere (regardless of whether GitHub is entirely open sourced) if GitHub suddenly decides to charge $1,000/month/user.
And how many businesses really need support for geographically redundant GitHub clones with continuously updating software and configuration ?
If anything, them having this option at all makes no sense, as the real value of GitHub is in the collaboration and discovery tools it brings, useful for contributors working remotely.
Unlimited users, unlimited public repositories -- I have that on my own VPS. I just configured my own Git repository. It's a piece of cake. Even companies like Adobe get along just fine with a Wiki and a Perforce repository.
Basically when selling a product or a service, you do have to ask yourself: how big is the market for this? And I'm not seeing many companies really needing private installs of GitHub and that market is even smaller if the product would be open-source.
makerbot has the distinct advantage of having open-sourced a (largely) physical product. For me at least, paying them for the bits and pieces to put their printer together would be an order of magnitude less effort than compiling and installing some software downloaded from the internet. They still offer a valuable service in manufacturing parts, and hence don't have to just sell support to make a living.
This is a great feature of open source hardware! Arduino has shown that there are plenty of platform plays in the physical world. The MakerBot builds on the RepRap mostly, and makes money doing the leg work of getting the parts to you easy / quick / cheap. Now the tons (10+ projects?) of clones coming out build on this platform.
The MIT license has no patent release. I think this alone should eliminate it for all but the most basic of projects. Yet the author doesn't even seem to realize this.
The Apache license is generally considered to be the most bullet-proof of the non-copyleft open source licenses. It's what Big Corporations generally use when they don't use the GPLv2. The MIT and BSD text is significantly shorter and less formal.
What is the consequence of using an open-source license without patent release? Does that mean that if your employer open-sourced some software that contained patented IP, then people must obtain a license from your employer?
And what happens in the reverse situation, where a third-party contributor commits code that contains patent-protected IP?
Responsibility for any use rests exclusively with the user. No warranties expressed or implied. "as is" -- use at your own risk.
My employer has over 3800 active US patents and 3600 active foreign patents. I just hack code in the library, and I like to share it. As far as I know, none of the code I write is based on any patented IP -- but who is to say some professor on one of our campuses isn't doing research that somehow relates to what I'm working on in some way that could potentially infringe?
The projects I work on that are Copyright my employer don't usually have third party commits; under BSD they retain copyright to their contribution and I guess we accept it "AS IS/NO WARRANTIES". but even under apache license 2.0 or educational community license 2.0 someone can't license rights they don't have. There is always a risk that a "forth" party might make a claim that the third party contribution is infringing the forth party's patent.
(views are my own and do not represent my employer)
Another company that i think does very well in open sourcing is Kitware. All their projects are open-sourced; and I know from personal experience that these are very good pieces of code that they just give out for free. Apparently, their strategy is that their flagship product (vtk) is so big that there is more benefit for a small company to have lots of other people looking at the code, using it and sometimes improving and committing back the changes; also, that there are just too many cool things that one can do with it, leaving Kitware enough opportunities to create customized products for a fee(of course, they also provide paid support services as well). For me personally, it meant that my monetary constraints (grad student here) were not a hurdle in my research.
"the GPL is too restrictive and dogmatic to be usable in many cases"
Does anyone else see the total irony in this? Considering that both Ruby and Git (two of the core technologies GitHub runs on) are both GPL. People can use whatever OSS license they want, I certainly have no gripe with him using the MIT license, but I could do without the dogma.
I have a question for the OP... Why the MIT licence, and not putting your code in the public domain? Is it the liability issues, or the attribution, or something else?
I mainly pose this question because I am choosing a licence for my projects, either the MIT/Apache licence, or public domain.
My understanding is that there are more legal gray areas with public domain than there are with even very permissive licenses (MIT, new-BSD, etc). I vaguely recall something about potential issues with public domain and other license incompatibilities, but I don't recall the specifics (and am certainly not a lawyer), so that probably isn't a useful datapoint.
Apache license has patent clauses that make it quite different than the new-BSD/MIT-style licenses.
In general, since I don't know a huge amount of the legal issues involved in public domain and national jurisdictions in regard to such, I simply err on the side of caution and choose MIT license for software I want to release as freely as possible. Others use it so it likely has more legal precedent and courtroom experience around it (should it ever come to that), and I like the notice of warranty disclaim (a bit of cya).
For example a piece of work that is not copyrightable in one country (even if it is the country of origin) may be copyrightable in another. Also in the US any work published before 1923 is in the public domain, however other countries are not bound by this year.
As far as this discussion is concerned, it is also debatable in some countries if the author is allowed to put his own work in public domain. Basically, there's no such thing as putting a work in the public domain, unless you don't mind limiting its usage (because if a piece of work is not accompanied by a license and is not in the public domain of the country you live in, you have no right to use it).
So if freedom is what you want, new-BSD or MIT are best. Plus, you keep getting the credit, which is nice.
There is forced attribution and the fact that in some countries putting work under the public domain doesn't mean you give up a lot of rights to it. You need to have a specifically liberal licence in order to do that.
At least in Germany, as an artist, the only way to transfer your "Urheberrecht" to somebody else is to die. See §29 of the "Urheberrechtsgesetz" (copyright law) [1]:
"Das Urheberrecht ist nicht übertragbar, es sei denn, es wird in Erfüllung einer Verfügung von Todes wegen oder an Miterben im Wege der Erbauseinandersetzung übertragen."
(Translation: "Copyright is not transferable, unless it is transferred in execution of a testamentary disposition or to coheirs in the way of partition of an estate.")
What is the One True License?
I prefer the MIT license and almost everything we open source at GitHub carries this license. I love this license for several reasons:
It's short. Anyone can read this license and understand exactly what it means without wasting a bunch of money consulting high-octane lawyers.
Enough protection is offered to be relatively sure you won't sue me if something goes wrong when you use my code.
Everyone understands the legal implications of the MIT license. Weird licenses like the WTFPL and the Beer license pretend to be the "ultimate in free licenses" but utterly fail at this goal. These fringe licenses are too vague and unenforceable to be acceptable for use in some companies. On the other side, the GPL is too restrictive and dogmatic to be usable in many cases. I want everyone to benefit from my code. Everyone. That's what Open should mean, and that's what Free should mean.
I'm no software license lawyer (and admittedly I haven't read Apache in depth), but I understand that the Apache license has at least one requirement I'm personally not too keen on.
4.2 in the license: "You must cause any modified files to carry prominent notices stating that You changed the files", I'm not sure how "legal" it is to follow the convention of sticking a LICENSE file in the project root and have that assume to cover all contents therein, but that seems reasonable enough, versus 4.2.
I'd love to know further opinions on MIT vs. Apache.
I agree with everything but the "core business" stuff and the MIT License.
The same principles apply to your core business - independent of what it is (not only GitHub).
By opensourcing all of your business, you will gain all the synergy you mentioned (i.e. libgit2) within your core.
Your competitors will benefit from it, but they won't be a challenge to you as long as they don't have the passion and insights from your team. If they can find a way to do better than you with that knowledge (expressed as software), then your position in the market is based on imperfect information (and therefore, monopolization power).
Although you may have everything to start a DVCS frontend, it is not an easy task which doesn't rely only on software: you need the ability to understand the infrastructure needed for the problem and maintain it at a reasonable speed - armies of proficient developers extending and fixing bugs, armies of sysdamins, coordinate them, decide adequate directions, etc.
Besides that, you need passion about what to do in order to keep kicking asses. Without it, it is not sustainable in the long run. Think about Launchpad, I think they add extra functionality to bzr than GitHub to git, yet people still sticks to GitHub. Why?
Also if you opensource your "core", people will need also customizations, so your competitors can become your clients where you provide developing to them - they may target other niche that you can't or your are not interesting.
This is where the license comes in: the best way of achieving this is by using AGPL3.
With AGPL3, you make sure that everything you gave it won't be restricted to others - as you haven't restricted anyone by opensourcing it.
You are not restricting others' freedoms, they can do whatever they want with the software. When someone closes the source, it's restricting others freedom, not his. What you can't do with AGPL is taking away others' freedom and right to know what they are using.
If someone improves it, then it will come back to you, and you will be able to improve from others as they improved from you.
The MIT license is good, but it doesn't close the loop and may have leaks, :D heheh!
>then your position in the market is based on imperfect information (and therefore, monopolization power).
Good! Who wants their living standard to be dependent on a never ending rat race of constantly out-innovating competitors? Especially when there are really big players out there that can throw huge resources into taking your market share.
If your marketshare is based on amount of resources, then your position is sustained by entry barriers, not your skills.
If someone can gather the resources and do better than you, then it's better for all the market - not just you. What you do with AGPL is making sure that if it is based on your knowledge, you will be able to improve from who has already improved from you.
If you can't stand someone to do better than you and you can't learn from him, then you have personal issues - and those are holding back everyone. There is nothing bad in not being the best (I think is bad measuring success on money and market share, that's circumstancial) and if you are not willing to improve, then you are in the wrong place.
The same applies (IMO) to patents and industrial secrets. A patent is "public" industrial secret: while you know it, you must act as you wouldn't unless you pay. I think that is for lazy people, they want money for an idea from people who actually implement it - work. Open source is a good example about this.
A free market relies on perfect informatios on whatever technology is being used, otherwise, there is no real competition in the supply and you might end up with a captive demand.
Yes, most business models would need to adapted to this, it is not what most of the markets do. Think of the Nuclear Power Plant market (to be extreme and explain my view). There won't be many suppliers because of the activity, if you totally "opensource" the industry, you will still be buying plants and paying a lot of money - but you will be "safer" because you rely on it.
The same applies to software, there are big players who are willing to outsource and pay more (because is out of their core business or just don't have interests on the topic) if the supplier fully opens and doesn't lock in them. You will end up on a better and "fairer" position.
>If your marketshare is based on amount of resources, then your position is sustained by entry barriers, not your skills.
So what. Even if I were the best programmer to ever live today, I won't always be. I don't want to starve when I'm older and not as good.
>If you can't stand someone to do better than you and you can't learn from him
It's not about learning. I have no problem learning. The problem is I need to eat to live, I need a place to stay and so on. I have to compete in a free market against others and there are plenty of people out there who will try to undercut your prices because that's easier making a better product. If I give them my work I've just made their job that much easier.
> I think that is for lazy people, they want money for an idea from people who actually implement it - work.
Complete nonsense. The issue is; technology advances take research. Stealing something you've seen someone else do can be done very quickly. If a person comes up with a new way of doing things, a novel new take on an old idea (e.g. the iPad), as soon as they put it out there everyone could just steal the idea if not for patents. They need to charge a certain amount of money to make the time they spent researching worthwhile but the people who just copy don't have those expenses.
>A free market relies on perfect informatios on whatever technology is being used
Could you provide an example of any market anywhere in the world that has perfect information? Markets are neither efficient nor entirely rational.
>if the supplier fully opens and doesn't lock in them
But this isn't "open source". When a company outsources software development they demand the source be made available to them and no one else. They would never pay if the source was going to be made available to their competitors upon completion.
> they can do whatever they want with the software
What if they want to build something on top of it that is not open source? They cannot and that is a restriction. It is the definition of a restriction.
> When someone closes the source, it's restricting others freedom, not his.
How so? No one is restricted if somebody makes a private fork of a codebase.
That's like saying that if I don't go to the bar down the street tonight the people there are restricted from having fun.
You can't go to your college with an Uzi and start shooting classmates. Although you "can", it is not allowed.
Is the constitution restricting your freedom? NO, that's not your freedom, that's power on taking others' life.
Another example - a less extreme and more realistic one - is a judge (or a jury). Are they "freerer" than you because they can put you on jail? Is your freedom "less" than theirs? No, you have the same freedom, what they have is power over you in a circumstance already """agreed""".
If someone wants to build on top of it, if he can't find a link like some closed drivers do with GPL software, then they are improving it. If they use your code as a base, why don't give back?
Note that this only affects you when you provide the service (AGPL) or distribute the software (GPL).
As long as you don't distribute it and use it "internally" (as US Army and DoD does) you don't have to show the source. If you provide public access to the system, then you have to show the code. So, you become another giant to step on his shoulders.
As for money, you only need (IMO) the amount for doing what you enjoy, not more (it isn't a goal per se, it's a way, not a goal). If you want to have an empire and build a sphinx with your face on it, then you have a problem with your brain's reward system, not with money - nothing will fill you up (stop using cocaine! :D hahahah! =P)
(That was mostly incomprehensible, but I'll respond anyway...)
You're making the faulty assumption of thinking that someone who wants some source code that is only available under the GPL will just use it and decide to license their work under the GPL as well.
Every time I need some code for a proprietary product I'm working on I pass up GPL and AGPL code. If there's no MIT or BSD licensed code that does what I need then I will write it myself. This happens frequently. Sometimes I share the source (MIT or BSD licensed), sometimes not. If I use MIT or BSD licensed code I contribute back. Not everyone does but enough people do, and those who do contribute are happy knowing that their code may be even more useful to more people because it is not encumbered by the GPL.
So somebody who is making a proprietary thing is not restricting anyone by using an MIT or BSD licensed component. They are making a proprietary thing and the only alternative isn't to make a GPL thing. Another alternative is to make something else, or make nothing at all. No matter what they do in no way is anyone restricted from taking the MIT/BSD component and doing whatever they please with it. They are not restricted by the proprietary thing.
The GPL has its place, it's just not universally good the way RMS would have us all think.
> So somebody who is making a proprietary thing is not restricting anyone by using an MIT or BSD licensed component.
Of course you are! You are restricting your customers' freedom. The idea of the GPL is bigger than just giving you, a software developer, freedom to use it. The GPL ensures that your final end user also had all the freedoms that the you, the middle man, had. They can stand on the shoulders of you, who were given the freedom to stand on the shoulders of someone else.
That's why it baffles me when people make the claim that the GPL stifles freedom. It seems such an selfish, narrow view.
As we say here, "your freedom ends where others' start". You are not forcing anyone to distribute the software or do whatever they want to as long as you respect others' freedom.
What you are doing is not giving the power to restrict others if you distribute it so you keep it flowing. The only way of achieving freedom and equality is (IMO) to equally distribute power on all, so you will end up with the phrase at the beginning.
If you want to use that sense of "restriction", it is restricting power, not freedom. Restricting power is granting others their freedom.
Agree to disagree then. The alternative to Windows and OS X is not GPL-licensed Windows and GPL-licensed OS X, it's no Windows and no OS X, and we still have BSDs, Linux, and other open source systems in the ecosystem.
Nobody who wants an open source OS has been restricted, and those who want a different experience than open source provides have the freedom to choose a proprietary OS. If someone wants an open source Windows or OS X they can make one[1][2]. They are not restricted.
In the real world where not everyone is a programmer people don't feel restricted by proprietary software. Only in some hypothetical ivory tower manned by RMS are non-developers restricted by proprietary things.
I'm equally baffled when people can't accept a world where there is more than one type of license and software. Open source has its place in kernels, dev tools (editors, compilers, etc), education, and so on. That does not mean it's unequivocally the best and only model for all software in the world. I felt empowered after switching from Linux to OS X and I'm a developer, because I'd rather not hack on my OS to make it usable. I'd rather hack on the cool stuff that I want to hack on. I'd rather just use iPhoto than try to make F-spot, or whatever the photo app of the day on Linux is, not crash when importing photos, or upload to my online gallery, or usable for day to day use. I'd rather just use Billings than try to build my own open source version from scratch, presumably while still trying to pay the bills with other work. I'd rather just use Acorn than wait for GIMP to be usable by version 3.2 in 2020. And so on.
I still use open source software too. Emacs, iTerm2, v8, Firefox, WebKit, Ruby, GCC, LLVM, and many small projects. And contribute to other smaller projects that I'm actually capable of understanding and contributing to such as node, GitX, and many libraries around the net. I open source tools that I make that I think others might find useful, and if someone takes my MIT licensed tool and uses it in a proprietary thing I think it's great that my code was able to help someone else. I don't selfishly demand that they contribute everything they add back to me if they don't want to. My code helped someone accomplish their goal faster or better and that makes me happy.
If you don't understand that's fine, but I am absolutely not restricted by the proprietary software that I choose to use. I won't even call you narrow or selfish for not understanding.
edit: While writing that list of open source software I use, I realized that only Emacs and GCC are GPL. Why is it that the most popular open source software is not GPL licensed? If the GPL encourages and fosters collaboration why is the MIT, BSD, and MPL licensed software more active and popular? It almost seems as if removing the restrictions from the GPL encourages collaboration. The Linux kernel is a notable exception, so I'm not saying this is 100% true, but the evidence seems to support it in many cases.
I think you may be jumping to conclusions about what I think. I'm generally OK with proprietary software--I use Mac OS X on my main computer. I've paid lots of money for proprietary applications. I've released source under a variety of licenses (including GPL, proprietary and BSDish) and feel that they each have their place. I do feel much better using open source stuff because I know the rug is never going to be pulled out from under me (which happened recently with some proprietary scanner software I bought a few years ago).
BUT, I do think you can objectively measure "freedom" as it relates to software. The people who tend to complain about the GPL being "restrictive" are people that want to take code and release something proprietary. From their perspective the license is forbidding them to do what they want to do and is therefore restricive. But that's only considering themselves and not the people they are releasing the program to which is why I characterized it as "selfish". I think if you step back and look at why the GPL requires you to distribute the source with your binaries it is obvious that they are trying to give your customers the same freedoms you had. That objectively increases the amount of freedom in the whole software ecosystem.
> If you don't understand that's fine, but I am absolutely not restricted by the proprietary software that I choose to use.
Yeah, you are restricted--You are not allowed to compile up the source to your legitimately purchased Photoshop. I fully understand that you don't care (and I don't either [well, until there's a stupid bug]), but to say that you're not restricted is to, I think, misunderstand the situation.
I think that idealistically we agree, and it also seems like we agree on a practical level. We may be in a semantic death spiral, but I'm leaving my long reply here as well since I already wrote it.
--
Ok I see what you mean about thinking that the GPL is restrictive is selfish. I don't think it's necessarily bad to be selfish sometimes. Everyone has to earn a living and wanting to do so is inherently selfish. It's difficult to earn a living off selling and supporting open source software. Sure RedHat does it, and Cygnus does it. There are far more failures though. It seems that the best way to create open source software for a living is to work for a big company that sponsors a project such as Linux, LLVM, or something like that. The rest of us sell proprietary software and services and until you have a lot of momentum I don't think it's wise to open source everything. Releasing your project under the GPL or AGPL from day one is scary for most people. Selfish? Absolutely. Necessarily bad? Not in my opinion.
> Yeah, you are restricted--You are not allowed to compile up the source to your legitimately purchased Photoshop. I fully understand that you don't care (and I don't either [well, until there's a stupid bug]), but to say that you're not restricted is to, I think, misunderstand the situation.
It depends on your point of view. There's the point of view that RMS has: we have all been duped by big corporations. We're captives, and just because we like our prison and can't see the fences doesn't mean we are not restricted. This is the "captive" definition of restrict.
Another definition of restrict is to limit someone's movement or actions, as in "restrict someone to", or "restrict something to". Is one really limited if they don't care about those limits? I think this is where it's easy to get bogged down in semantics and philosophy.
Nation states limit and restrict us in many ways. Is that necessarily bad? Technically we are restricted, but is it useful to try and convince everyone that we've all been duped and anarchy is the true way to bee free? What if you just live in a country that is "free enough" and allows you to do what you want to do, without feeling restricted? If I'm thinking idealistically then yes a state of anarchy where everyone behaves in a cooperative and cordial manner sounds like bliss. But unfortunately that just doesn't work in real life.
> In the real world where not everyone is a programmer people don't feel restricted by proprietary software. Only in some hypothetical ivory tower manned by RMS are non-developers restricted by proprietary things.
This is irrespective and has nothing to do with the point. I can figure out tons of adjectives to """describe""" you. Also, I don't know why people think their reality is "the real world" and extrapolates it to others' "real worlds".
It is not about being a dev or not, it's about a system which someone relies on (even a society with Google) and ensuring its continuity and the best for all. If you ensure it, people will recognize your work and the money will come.
> While writing that list of open source software I use, I realized that only Emacs and GCC are GPL. Why is it that the most popular open source software is not GPL licensed? If the GPL encourages and fosters collaboration why is the MIT, BSD, and MPL licensed software more active and popular? It almost seems as if removing the restrictions from the GPL encourages collaboration. The Linux kernel is a notable exception, so I'm not saying this is 100% true, but the evidence seems to support it in many cases.
A software is "good" independent of its license. Licenses don't fix bugs. If you measure by adoption, then you should conclude that Visual Studio is what has encouraged most of the software developing in the past - and I think it's true, but hasn't to do with licensing and business models.
Your evidence supports that many licenses are being used, and that's a good thing. If you want to do things because many people does them, then you should adopt the Chinese culture. We have a phrase here: "Eat Shit: Trillions of flies can't be wrong." (this is not about Chinesse culture, they have outstanding good things and others not so good).
It took about 10 years to the industry to understand that they could earn money with open source software. It was very hard to try to explain someone that he could do better with a different model. Now that the industry has "internalize" it, everybody loves open source. AGPL is the next step: there is room for improvement and you will probably (IMO) do better with a more sustainable model.
Yes, I think so - especially with algorithms: math can't be owned.
On Google's implementation of them, yes, of course! This would have tremendous impacts and benefits for all.
I think your sarcasm came from "What happens with Bing? They are hungry!", and you can't understand the point inside that reasoning framework.
If Goog releases their algos, the would gain even a better position in the market.
All the society would benefit of controlling what makes you exists for others (if you can't google it, it doesn't exists), a storm of commits improving it would come (even fixing what makes that disgusting SEO practices) and you will have a viable alternative to Google: you will be able to choose.
Can Microsoft manage an infrastructure as big and efficient as Google - tuned over the years for a SE, with thousands of people with expertise, experience, motivation and values? I think not.
If Goog releases under AGPL, if Bing uses it, they will be able to look at the implementations, its improvements and merge them "back".
If Microsoft doesn't want to use the code, then they will have to spend years developing the same (and find the right people for it - which are already in Google). In that timeframe, Goog will keep improving - otherwise, a better alternative will eventually surpass them.
Yes, the can plain steal and don't enforce the license, but, Microsoft stealing?!?!?!? =P
This model relies on two things:
- You are willing to work continuously on it because it makes you happy
- You want to be on top because of how you do your job, not because you know a secret
- Money is irrelevant to you: you live (luckily) between 80 and 100 years, and suppose that you are on your 30s - if I was given 100 million dollars, I will probably not be able to spend them as I won't have time to do it (think Larry Page or Billionaires, but at a smaller scale). If you get a huge amount of money, after some years of "livin; la vida loca", would you return to code?
I don't necessarily agree with the author that "it is the right thing to do". He may believe we are morally obligated to give back to the community, and that is his belief, and that's fine, but I do not share his belief.
I'll contribute back to the community happily. I do so because I want to. But I do not feel that I am morally obligated to do so. I'm sorry, I simply don't.
The author makes the point that one should give back, for example, simply because one "used the internet". It is one thing to say that you should open source your code and give it back to the community if it is derived in some way from another open source project. It is quite another to say that just because you use open source, you are now morally obligated to give back to the community.
All of you out there using an Android phone - do you feel morally obligated to open source your work simply because you use a phone that is built predominantly on open source code?
Another company that came to mind while reading the article is Shopify. While their core business is eCommerce, they have open sourced some of the major components of their system while still keeping the app that glues them together proprietary.
Some notable mentions:
Active Merchant (payment processing library)
Active Fulfillment (external fulfillment for Amazon/Shipwire/Webgistix)
Active Shipping (shipping carrier integration)
Delayed Job (job queue)
Obviously there is a lot more work that goes into making a product as polished as Shopify, but they have released a large amount of core domain knowledge for other people to use and improve upon. While someone might be able to come along and use the same components to create a competitor, they still win in the end by having more people contribute.
I've started open sourcing more things lately, mostly in the realm of things that solve a problem I have that might solve someone else's problem. Sometimes I build tech for tech's sake that improves my software or apps, but it isn't a product in itself. Frameworks, libraries, templates, and tools all tend to fall into this category I think and github is a great example is open sourcing these things.
You shouldn't open source your product itself unless you want to be a service company. I personally don't care to become a service company, so I keep the "product" and the data behind it closed, but the frameworks, tools, etc. can and should when possible be open source.
The product and data in this case is your "core" that the article is advocating to keep close to your chest while outsourcing the non-essential components that would attract interested parties to your work.
The GNU Project has extensive commentary on a variety of open-source licenses. They recommend the Expat or FreeBSD license over the MIT license, because MIT has released code under numerous licenses so the term "MIT license" may be legally ambiguous.
If there's one thing time has proven it is that open source projects (usually) leave a lot to be desired in the UI department. UI is one of those things where a benevolent dictator is a good thing, it gives you consistency and given a talented designer leading the team gives you a far better product.
The typical path for for open source UIs seems to be to try to please everyone, which means making something that isn't great for most people who don't want to spend half a day customizing their interface.
To be clear, I wasn't actually thinking about 'design', more like, features. Perhaps you're right, and perhaps I'm longing more for some kind of plugin architecture.
In the early days of software, it was an afterthought: what made it possible for IBM and others to sell the more valuable hardware asset.
Microsoft (founded 1975) perceived the economic opportunity attached to volume distribution of user facing machines, and helped usher in an age where the value shifted from the hardware to the software.
Google (1998), by contrast, derived effectively zero revenue from software directly. Instead, they leveraged open source and commodity hardware to control their costs and were able to scale more effectively than existing search alternatives. While they didn't sell software, however, they continued to perceive it as a competitive advantage, and thus a minority of their overall development was shared via public repositories.
For Facebook (2004), Twitter (2006) and GitHub (2008), like Google, software is the means to an end rather than the end itself. Unlike Google, however, most do not behave as if code itself is a competitive advantage. You can argue about what their actual product is - a critical mass of users, the data they generate or both - but you can't build the case that it is primarily the software.
And if the software doesn't represent a competitive advantage, the follow on benefits of releasing it as open source software - whether it's general goodwill, amortizing development costs, greater efficiencies in hiring and recruitment, etc - are believed to outweigh the costs.
Hence Cassandra, FlockDB, Hip Hop, Hive, Jekyll, Resque, Storm, Thrift and so on.
None of these entities open source the entirety of their infrastructure, but it is increasingly common to see open source as the default rather than the exception.
Software has and will continue to have value. But in an increasing number of cases it will not represent a competitive advantage, and therefore assuming the burden of maintaining it internally will become less attractive.