Slashdot Mirror


Getting Companies to Contribute to Open Source?

epiphani writes "At my company, we make heavy use of Open Source products in almost all work we do. We also spend significant amounts of time customizing these packages to our needs, be they for performance or functionality. With the exception of actual bug fixes, we are not generally permitted to return those customizations to the community. The GPL allows us to customize these packages for internal use, and we do not distribute our changes outside our organization. Being an open source developer in my spare time, I can see the value of these customizations, and can see how they could be improved by releasing them into the community. However, the company does not allow us to return them because they are seen as our investment and as our competitive edge over others in the same market. We have thousands of hours of code development and packages we are being forced to maintain internally as a result. How can I, being a lowly developer, convince our management that it makes more sense to release many of these customizations back into the Open Source community? How have people convinced old-corporate management that its a good idea to give away something we just spent three months building?"

19 of 57 comments (clear)

  1. start small by iocat · · Score: 4, Insightful

    Start small, with a dicrete component, and emphasize the PR benefit. "MegaCom Gives Back" will raise some goodwill for the company. Talk to someone in PR/Marketing -- they are always looking for new press release to do. Now is a great time too, "MegaCom gives back for the Holidays!"

    --

    Dude, I think I can see my house from here.

    1. Re:start small by networkBoy · · Score: 2, Insightful

      You hit it on the head. Get the marketing dept to think it is a good idea then you have your own marketing department working to market your idea to the bosses :-)
      -nB

      --
      whois gawk date unzip strip find touch finger mount join nice man top fsck grep eject more yes exit umount sleep dump
    2. Re:start small by Salvance · · Score: 2

      This may not produce the results expected, particularly if his company is a venerable leader in his field. Saying MegaCom gives back is just an invitation for competitors to steal their code.

      For example, imagine if Google decided to release all their code back into the community. The PR it would bring them would be negligible, but EVERYONE would be scrambling to grab hold of their code to use it. The competitive risk far outweighs any benefits.

      --
      Crack - Free with every butt and set of boobs
    3. Re:start small by blincoln · · Score: 2, Insightful

      The competitive risk far outweighs any benefits.

      I disagree. It would lend weight to the idea that other companies should do the same. How many of the OP's employer's competitors are writing code that's functionally the same and also keeping it secret? They're not maintaining an advantage, they're all wasting time doing the same thing on their own.

      One more company giving its work back to the community may not make a difference, but it helps move the aggregate of all companies in the direction of doing the same.

      I say show them the simplified game theory segment in A Beautiful Mind. Everyone trying to get an edge, and everyone losing as a result.

      --
      "...always new atoms but always doing the same dance, remembering what the dance was yesterday." -Richard Feynman
    4. Re:start small by DerekLyons · · Score: 2, Insightful
      Start small, with a dicrete component, and emphasize the PR benefit. "MegaCom Gives Back" will raise some goodwill for the company.

      Sure - it will create some goodwill. Mostly among the F/OSS community, which is unlikely to be MegaCom's target demographic. It'll give the Slashdot and F/OSS folks a few warm fuzzies - but the net PR result will likely be close to nil.
       
      The fact that this same lame question keeps getting asked and getting the same lame and predictable answers should be a clue that there really isn't a business case for "MegaCom Gives Back". It's a political and philosophical activity.
       
      From TFA:
       
      How can I, being a lowly developer, convince our management that it makes more sense to release many of these customizations back into the Open Source community?

      We see these questions (or ones very much like them) on Ask Slashdot on a fairly regular basis. This leads me to an Ask Slashdot of my very own: Why do so many F/OSS supporters see it as their holy mission to impose their political and philosophical beliefs on the company? The Slashdot and F/OSS communities would be among the first to howl about how their rights and beliefs were being trampled on if one of their co-workers suggested that their company should indulge in a faith based activity - so why the double standard?
    5. Re:start small by Stradivarius · · Score: 2, Insightful

      You've proved the OPs point. His competitors are playing catch up by writing code that the OP already has

      Or it could be that his company is the one playing catch-up, not his competitors, who might similarly have their own secret patches to do the same thing and more. There's really no way to know unless the various competitors communicate their positions, which is probably unlikely.

      Also, consider that by contributing his version of improvements to the OSS community, his company can get free maintenance and further improvements. This imposes a cost on their competitors, who now must either essentially maintain a fork of the software with their own now-incompatible secret changes (thus losing out on the community's improvements), or spend money to convert their own secret changes to be compatible with the new "official" version.

      Being the first provider of a new feature allows your version to become the de facto standard. Getting to define the standard can be quite the competitive advantage, as above, in addition to whatever PR benefits may accrue.

      Of course, if you're way ahead of your competition in terms of proprietary code patches, then maybe you don't want to contribute them. But you run the risk that your competitor will, thus imposing costs on you. So there's a balancing game to be played based on your estimate of your position relative to the competition.

      Also, sometimes it can make sense to collaborate with your competitors to contribute to an OSS project in order to fend off, or obtain leverage over, other commercial entities that are a "common enemy". I.e. many consumer electronics makers working with Linux to prevent Microsoft from being able to exert excessive influence into their industry.

  2. open source is an acquired taste. by yagu · · Score: 3, Interesting

    I once gave a presentation on Linux to a corporate "get together"... a full auditorium. While I shanked the Linux presentation, I did get off on an Open Source tangent that spilled over into the next time segment. Over 100 audience members stayed.

    I shared my experiences about Open Source and why I thought conceptually there were a lot of great returns on investment by thinking in terms of Open Source. I suggested as a first step corporately we could begin to think of ourselves as an Open Source community whereby any code anybody created anywhere in the company be made available for use by anybody else.

    Note: I did not put this out as a suggestion for "code repository", a concept I have seen fail time and time again (usually because of heavy handed requirements to "go to the well" for already written code, usually poorly written and ill-suited for the task at hand). Instead I saw this as an opportunity for real code sharing in a community whereby status (and maybe even title) was elevated by putting something out there others liked so much, they wanted to use it.

    I described all of the tools, "slashcode", etc. that could provide infrastructure. The interest was palpable... but the audience was mostly tech staff. Ultimately nothing happened... as managers pretty much stated they weren't about to let any of their staff share their code to other projects.

    Yes, Open Source/sharing is an acquired taste, not one easy to get corporate management to try. When and until corporate management loosens up their uptight world view a bit and be a bit more willing to share, maybe you'll see Open Source gain purchase.

    1. Re:open source is an acquired taste. by Intron · · Score: 2, Informative
      My company took the opposite view when it started work on open source. Giving back patches saves money because
      • we were able to start from working code that did most of what we wanted
      • we don't have to repatch each new release
      • we don't have to worry that someone else implements the same change in a different way
      • we get hundreds of free testers
      --
      Intron: the portion of DNA which expresses nothing useful.
  3. #1 - Cheaper to Share the Cost of Maintenance by mkcmkc · · Score: 3, Insightful

    One argument is that it's cheaper to share the maintenance cost of all of these deltas, which the poster suggests is significant. (And any company that wants to use the shared code but doesn't want to share back will find itself in the same bind your's is in now.)

    --
    "Not an actor, but he plays one on TV."
  4. cost analysis by TheSHAD0W · · Score: 2, Informative

    Do the math. Calculate out how many hours it's taking you guys to merge new updates into your code and how much money per month/year it's costing you. Then tell management you can cut that by 90% by contributing code back, and ask them whether it's worth that much to keep that "edge" they're talking about.

    1. Re:cost analysis by westlake · · Score: 2, Insightful
      Then tell management you can cut that by 90% by contributing code back

      wildly improbable claims of massive cost savings screams "Bullshit!" to management. you want to get this thing done, keep your promises anchored in reality.

  5. Maintenance costs by Anonymous Coward · · Score: 2, Insightful

    How can I, being a lowly developer, convince our management that it makes more sense to release many of these customizations back into the Open Source community?

    Keep track of the amount of time you spend maintaining those changes outside of the upstream distribution. A new major version is released that forces you to spend time patching to keep up to date? That's something that wouldn't happen if you contributed your changes back to the community. Maintenance is an ongoing cost; releasing your code is one way of reducing that cost.

    How have people convinced old-corporate management that its a good idea to give away something we just spent three months building?

    That's the sunk cost fallacy. How long it took you to build it doesn't alter its ongoing cost and value to you from this point forward. Releasing your code reduces your costs (less maintenance) while improving the value (always up to date). It can't change the past.

  6. Why we're about to do it by truthsearch · · Score: 2, Interesting

    My company is just getting ready to open source some of our software. We're also planning to contribute back to some open source software projects we use. Here are the biggest reasons:

    - PR and advertising. With our corporate name attached to some projects out in the community we get a little mind share.
    - Demonstration of our expertise. By contributing features and patches back to large projects we can show clients and prospects that we know what we're doing. We're not just users of well known apps, we also know how it works deep in the code. Therefore we're worth every penny we charge.
    - We'll get back more features and patches from the community. If we open source a new package (or a new module to an existing project) that people are interested in, the community will provide feedback, support, and code.
    - It contributes to how good the developers feel working at the company.

    We're not concerned if our competitors pick up our open source code. First, we're not open sourcing absolutely everything we have. Second, our clients get value from the custom solutions we provide. Even though we have general purpose code we can give to the community, our clients will still pay to have it customized just for them. Plus by showing we share code between projects they realize we're actually saving them development time and money.

  7. "Contributing back" isn't always best... by xxxJonBoyxxx · · Score: 2, Informative
    Keep track of the amount of time you spend maintaining those changes outside of the upstream distribution. A new major version is released that forces you to spend time patching to keep up to date? That's something that wouldn't happen if you contributed your changes back to the community.


    As a manager, I'd also be tempted to solve the "wasting time on custom code" problem by either looking at a commercial package that keeps us out of the custom code business or outsourcing the custom code bits.

    Also, sending back to the community isn't always a guarantee that your changes will make it in, or that they will make it in by the time you need it. In that respect open source projects are similar to commercial products: in both cases you are often subject to the whims of leaders who are not your employees.
  8. Core Competencies by bill_mcgonigle · · Score: 2, Insightful

    Don't give back the changes that really make a difference to what you do as a company, but really do figure out what you do as a company.

    So, if you're not in the backup business, the features you added to bacula should go back to the community so you don't have to maintain them.

    If you're selling Widgets and the Boss thinks of WidgetCo2 has a better backup system they'll be able to outcompete you there's something wrong with your business.

    --
    My God, it's Full of Source!
    OUTSIDE_IP=$(dig +short my.ip @outsideip.net)
  9. Banking and Secrecy by justanyone · · Score: 4, Informative

    I used to work for BankOne (now JPMorganChase) in Chicago doing Perl work for their Capital Markets trading systems. This meant writing about 40,000 lines of Perl code to decode the bank's internal reports and load 'em to a data warehouse. In the process, I had to decode some report formats that were not proprietary, as well code up some helper modules, like ones that retrieved files (recursively) from FTP sites, verified they were complete, etc., based on configuration files.

    Much of this code could have been released to http://cpan.org/ nicely.

    However, I signed a nondisclosure agreement (NDA) when I joined the bank saying, more or less, I won't release any of the bank's intellectual property to any third party without prior (probably written) approval from umpteen layers of management.

    This kind of NDA has been more-or-less standard when joining a new firm as a developer. People don't like it when you release code to the world that gives your company a competitive edge, or might present a security risk if people knew how you were doing things (I know all those rules about security through obscurity being useless, but that's different than posting to a cracking website the protocols you use to get data from servers around the bank).

    The problems of being able to contribute back this worthwhile code are legion. Many organizations are not set up to deal with this kind of problem yet. Over time, when managers come to understand that there are definite gains to be made by releasing a module to the wild, and actually find that other people like it and contribute-to/improve it, then word will get around.

    I would counsel slow, persistent, quite isolated pushes for very clearly non-business-critical components to be put under the GPL into CPAN or the like. No excited "let's do this" will get the idea through. Calm, rational arguments about a component being broadly useful elsewhere and this would may mean someone else (that you don't have to pay) will fix the small bugs we don't have time for.

    I think this is going to take hold at smaller companies MUCH more quickly. I work at a startup now, and we regularly contribute patches to several of the open source (mostly Python) projects we use. Why? Because we want our changes incorporated into the tree so we don't diverge too much from the standard release (which would require much more work to update when they release a new branch).

    After a while, larger companies will get the message, too, and understand this business model. Compare this to flying airplanes - pilots all talk, and contribute info, so everyone is safer. Your competitive advantage is the systems you build, and how you run them, not the fact that everyone else crashes more than you do, because whenever anyone crashes, everyone suffers.

    1. Re:Banking and Secrecy by Twylite · · Score: 2, Insightful

      This is good advice, especially the bit about "non-business-critical components".

      I'm going through the process of getting company approval to release a component as Open Source, so I'll add my 2c for anyone who finds themselves in this position.

      First, drag your sorry brain out of the technical trenches and understand how your business creates value. You have to understand that before your can claim that any given bit of code is or is not valuable.

      Second, focus your efforts on bits of code that you can argue are not Intellectual Property; that is, they do not provide a special value or advantage to your company that would be lost by them being generally available to the public.

      Third, in justifying an Open Source release of the code concentrate on the benefits of contributing the code, and the costs of not contributing the code. Your best argument will be maintenance costs -- if the code doesn't provide specific competitive value then making it open source adds potential maintainers.

      PR is not a good argument. Just accept that you don't understand PR, or your company's PR strategy, and that your company doesn't give a damn about what the FLOSS community thinks about it; and even it did it wouldn't use contributing patches as a way to manage PR with the community.

      Finally, do more than your company expects of you. If you are genuinely concerned about the FLOSS community then you'll be happy to contribute a bit of your own time, not just your company's time & money, right? So do some improvements of your own, in your own time. Then take those to your company and explain that they're useful to the company, but not of specific competitive importance, and that you did them yourself, you didn't do them on company time, and you'd personally like to contribute them to the community but you can't because of your contract. Now you have a strong moral argument.

      --
      i-name =twylite [http://public.xdi.org/=twylite], see idcommons.net
  10. Carthage must burn by MarkusQ · · Score: 2, Insightful

    If you have the right sort of personality, and the right sort of boss, you can get your point across by repeatedly showing how silly the logic is.

    For example (I actually used this once):

    Me: Would it be better to buy or rent a volcano?
    PHB: What?
    Me: Would it be more cost effective to buy a volcano, or rent one?
    PHB: What are you talking about? Why would we need a volcano in the first place?
    Me: Well, we have to plant the coffee someplace, and according to what I recall, it grows well on the sides of volcanoes.
    PHB: We don't need to plant coffee in the first place.
    Me: But what about our competitive advantage? If we aren't drinking special coffee that's a little better than the...
    PHB: Ok, I get your point. Submit the damn patches.

    Of course, there were twenty or so intermediate steps, including my arguing that we should refuse to answer a product satisfaction survey from a vendor, because they might use the information to improve their product, and so forth. But since the argument against submitting patches is so weak in the first place it real was a pretty easy sell.

    --MarkusQ

  11. Moo by Chacham · · Score: 2, Insightful

    Just a thought, don't write the code yourself right away. As on the mailing list if some pseudo-code would help implement some feature. Afterwards, code it.

    Besides having submitted at least pseudocode (which someone else may just write for you) you'll be able to hear if its already beenm done.