Ask Slashdot: Corporate Open Source Policy?
Phiro69 (3782875) writes Does anyone have any best practices/experience they would like to share on how their corporate entity put Open Source Software out on the Internet? Historically at my engineering firm, we've followed a model where we internally build a 1.0 release of something we want to open source, the product owner and legal perform a deep review of the release, and we push it out to a platform like Github where it typically sits and rusts.
Our engineering interns have started down a new path: Using Github from the beginning (I set the repo private), and, after a bare minimum is completed, flipping the repo public and continuing development in the open using Github. How do PO and Legal reviews fit in? How can we ensure we're not exposing ourselves or diluting our IP if we're doing semi-constant development, publicly, sans a heavily gated review process? What does everyone else do? Or does corporate America avoid this entire opportunity/entanglement/briar patch?
Our engineering interns have started down a new path: Using Github from the beginning (I set the repo private), and, after a bare minimum is completed, flipping the repo public and continuing development in the open using Github. How do PO and Legal reviews fit in? How can we ensure we're not exposing ourselves or diluting our IP if we're doing semi-constant development, publicly, sans a heavily gated review process? What does everyone else do? Or does corporate America avoid this entire opportunity/entanglement/briar patch?
Having a solid Contributor License Agreement process in place would probably be a good idea. That way, it's clear who owns the code that comes in and encourages people to contribute while defining a (necessary evil) process for doing so. You'll lose random passers-by, but just one passer-by who gets litigious could be more of a headache than it's worth.
Colin Dean Go a year without DRM
I'd do some research and find out what other projects have had issues with. In particular, make sure you actually own the copyrights or have a distribution license for everything you intend to open source. All it takes is one lazy cowboy coder and Google to screw your whole project. Also, understand the license you intend to distribute under, and what licenses are incompatible with it.
My company has released a handful of open source projects that are mostly used by us. But we just release them as open source from the start. Part of the rationale behind that is that each of the libraries are meant to implement some kind of protocol or perform some specific, but generic, functionality that we wouldn't mind feedback on early in the development process. So, we just do them as open source from the first line of code that is committed. No legal review, just the developers that will be working on the project and one manager signing off on doing it this way. We're not a huge company, but we're a couple hundred employees strong and the development team basically makes the call, since they are the experts.
Even if I knew that tomorrow the world would go to pieces, I would still plant my apple tree. -Martin Luther
Or does corporate America avoid this entire opportunity/entanglement/briar patch?
Yes, to a large degree, and they're stuck in the last century. IP has always been an imaginary government monopoly meant to enhance the business interests of a certain caste; originally that was the author/inventor, but that ship has long sailed - now it's corporate profits almost exclusively (and you may find exceptions that prove the rule).
The next century will be on the Internet and artificial scarcity will be seen as a quixotic relic. Understand this and move forward - businesses that do will outcompete businesses that don't because they're going with nature, not against it. You do still need to keep yourself out of courts, because the death throes of the old corporations will be violent, but use your legal team as protection from other corporations, not protection from customers.
If your company cannot embrace the future and *you* get it, then that's a great signal to move on to a place with a positive slope. These are, of course, long-term trends, but fighting the brushfires of a losing battle is no way to spend one's life.
My God, it's Full of Source!
OUTSIDE_IP=$(dig +short my.ip @outsideip.net)
Your question is far too generalized. You don't mention what your product is, what your firm does, or what the risks you're trying to protect from. Nobody can give you any meaninful advice unless you provide real details. What is it you're afraid of exposing? What's the IP you're afraid of diluting? Is your company a 100 person shop, or a 10,000 person shop? It matters.
Those risks may be illusory, depending on what this code is. I've had a few project I'd like to release as OSS, but there's zero IP dilution and zero risk of exposing anything. Despite what people tend to think, code isn't a commodity. The specifics matter quite a bit. The only answers you're going to get with the information you provided are very generalized useless ones.
AccountKiller
Make your public repo controlled by legal so they approve what goes out. Have the public one be a fork of your private repo. So you make changes to the private repo, have legal review, and push approved code to the public one.
First let me say, there is nothing wrong with open source. But if you and your business associates are intent on giving stuff away for free, there's no reason to hang yourself with the GPL. Just bring your code and operations manual to the next convention and leave them on the table. At least your competitors might buy the drinks later.
Most code that is written isn't the kind that anyone's going to start selling for money. "Giving it away for free" can be better done as "handing on the code to a project which may actualy maintain it". That's actually a major benefit for the company which starts the work. Competitors getting the code is only a problem if they can find a way to add value to it whilst locking it away from us thus using it to get a competitive advantage. The actual biggest risk is that people think we will close the code later and so ignore it. This leads to some rules.
The license thing is really important. There are many number of BSD / Apache idealogues out there who will tell you their license is more "free". There are others who will tell you that the GPLv2 is the only way. Ignore these people. Think about how to achieve your aim. If you are trying to get as many people as possible to use your file format, make the code for reading it public domain or as MIT licensed. If you want to get a community that will contribute back, aim for AGPLv3 which will stop competitors from hoarding changes.
Your comment about "pushing it to a platform like Github where it typically sits and rusts" is telling. What do you think will really change if you just shift when you push your code to Github?
In a nutshell, "if you build it, they will come" is a nice fantasy, nothing more.
Even very high-profile open source projects often have very few contributors outside of the companies that first created them.
And I don't think the problem is that these projects don't get community developers on board soon enough. Why would a hobbyist or other unpaid developer risk devoting time and resources to a project that is mostly vaporware?
The problem is that it's very difficult to get unaffiliated developers to commit to working on something -- especially business software -- when there's no real incentive other than "someday this may end up being a product that your company might decide to evaluate to see if it might be possible to use instead of the commercial alternative that it has already sunk capital into and has been using for the last five years."
Breakfast served all day!
Do not become the next Sergey Aleynikov. He was acquitted, but not without a huge impact on his life.
One thing I notice is that sometimes a company decides to open source some in-house crapware because they heard its a good way to get free publicity and perhaps attract more developers. Quite often the project ends up with zero adoption because its not that interesting and often there's a bunch of existing projects with already built communities that are doing more or less the same thing. Or the focus is so narrow that it solves nobody's problem. What usually tell people is that its better to learn to contrib to an existing project rather than release some vanity ware and try to pretend the company is all hip and cool because you have a github account.
Its also a good way to get around the legal review and all, since generally if you are just sending patches to an existing project, typically bug fixes and feature enhancements there's not a big need for it. I think its easier for rusty management to accept you contributing documention, test cases and bug fixes to an already existing project than to get them to allow you to take some big in house project and get it out in the open.
If you build your in house stuff around existing open source projects and really leverage open source at all points in the stack (from automation and up) you will find lots of good ways to contribute back to those projects and you will find your custom code is mostly glue and company 'secret sauce' that you'd never give away anyway.
Peace, or Not?
Not sure why this is considered FUD. The thing about any DVCS is that once it is in the repo it stays in the repo.
That's true for non-DVCS too. If it's out, it's out. Doesn't matter if you distributed tarballs or Visual SourceSafe. If it's out, it out.
You have to be very careful about what is put out there in public. Given that this is git, though, I am not sure why the company does not use two repos. A private one for internal development, and a public one which has the merges from the private repo once a point in the graph clears any potential legal issues. This feature is one of the great strengths about git and github.
Well, it's going to have a social impact. There won't be much collaboration when all the company does publicly is basically code dumps.
Pushing to Github is nice and all but for a project to get any type of traction you need to tell people about what problem it helps to solve, show them how, and ideally make it easy for them to try it. Something up on a corporate blog. Compare it to other solutions. Have an instructional site in your space review it and write about it.
Unless you can show what it does and then differentiate why it's better than existing options, rust is exactly what will happen.
"Don't teach a man to fish, feed yourself. He's a grown man. Fishing's not that hard." - Ron Swanson
Quite often the project ends up with zero adoption because its not that interesting and often there's a bunch of existing projects with already built communities that are doing more or less the same thing. Or the focus is so narrow that it solves nobody's problem.
And those are the better ones! The really bad open-source dumps don't even really build or work outside the original company's complex production environment, and don't have any documentation for how to set up such an environment.
10 PRINT CHR$(205.5+RND(1)); : GOTO 10
If you do use the GPL *and* have copyright assignment, there actually could be a case made that you dual license it: GPL for those that play open source and proprietary commercial for others. This is the 'get free coders to do work for you' business model that seems pretty disingenuous, but at least there is a logic to a corporate sponsored project going for GPL.
What surprises me is that most scenarios where corporations pick the license, they pick a BSD style license. I can understand them wanting that property in *other* people's code, but surprise they wouldn't want more assurance that their work wouldn't come back to compete with them in a commercial way when they have a choice.
XML is like violence. If it doesn't solve the problem, use more.
My former company's policy was to remove all comments and documentation before making the code public.
I made my first open source contributions back in 1987, and I did so not by launching a new project, but by contributing to an existing project (GNU). Over time, those contributions took on a life of their own (GNU C++). It was quite some time (after starting Cygnus) that we had any need to launch new open source projects (such as automake, configure, Deja GNU, etc.) My recommendation for corp OSS folks is (1) figure out how to make what you need out of existing projects and do that. If/when you reach those limits, explain the new problem you are trying to solve, see if there's interest (or even an existing solution), and then work from there. But never stop contributing to the ecosystem that likely surrounds the new code you're trying to launch. If you only ever work on your own code, people will reciprocate by only working on their own code toward you. If you work on your own code and help improve the code that lives around it, you may well find many who want to join your project, too.
Or for the really, really bad ones, the dump had a bunch of 3rd proprietary libraries ripped out of it with nothing to replace them, so there was a bunch of poorly documented catchup work to be done before anything would come close to compiling.
Save Maine's economy: write stuff down. All comments are exclusively my own, not my employer.
Quite simple. BSD avoids legal problems that releasing code under GPL might create in the future. Plus, most (proprietary) software companies prefer BSD and altogether avoid GPL. So if a corporation is going to "give back" to the open source community, they'll do it under a license they most agree with. Anyone open sourcing code will want to do so with an eye towards future uses and whether it will be good or bad if used by a competitor.
You really do need to initially invest in building some community, if you want a community who will provide bug fixes and new features for you. It doesn't need to be a large community. Two or three or other companies / developers using the software, sharing development costs, can make a big difference. That can provide the critical mass to keep the project going and attract occasional contributors.
My primary job is working on specific open source software. The larger framework is used by many organizations. Some modules are used by three to five organizations. If three other organizations are using it and helping with development, that's a lot of work I don't have to do.
At Odoo, the Open Source ERP, we work with around 1000 partners and/or customers that have a dedicated IT department developing Odoo modules/apps. From my past experience working with them, I would say that it's less about contribution than collaboration.
Some companies think that it's good to contribute to open source (for different reasons) and they just do that. It's usually a big failure as nobody uses their code and they get nothing from having published their development. The main reason is that something that has been developed for your own need rarely fit others needs (in terms of quality, feature, collaborative platform, ...).
If you think about it in terms of collaboration (working on github since the beginning, blogging about what you do, answer on issues, tweets, ...) you can get benefit from your open source contributions. Those benefit are mostly about small contributions (bug reports, translations, new features) or visibility. The key is to make it easy to on board new users/developers: work on the platform they already use (github), use transifex for translations, ...
I think it's a bad idea to start your repository private at the beginning. People are always afraid to "show to the world" an unfinished development but it's not a real issue if you are transparent about the status of the project. If you want people to feel engaged in your project, you have to on board them since the beginning. And contributions are more valuable if they come earlier in the development process. We noticed we get a much better engagement with our communities when we engage them in the very early stage of the project, at the analysis phase.
Protecting your IP is quite easy: choose the right licence and set a Contributor License Agreement. Merge Pull Requests only if they agreed on your CLA.
Fabien