7

While there are certainly many economic, social and practical decisions to be made when deciding whether a system should be open source, are there any situations in which it is impossible, purely from a technical standpoint, to open source your code?

Essentially; a feature which when the code is made public, invalidates/reduces the functionality of that feature.

Some examples I can think of:

  • Cheating in Quake - once the game was released as open source, id had to release a closed-source 'wrapper' to validate client code in order to prevent cheating.
  • Reddit - while the majority of the source for social news site Reddit is available, their anti-spam mechanisms are not. If the spammers knew how they worked, they'd be easier to work around.

Both security related and both as a result of using implementations security experts would probably frown on (Quake: trusting the client, Reddit: security through obscurity). Whether there are feasible alternatives to these implementations is another matter altogether...

What other examples are there of this? Are there any that aren't security related? Are they all due to 'workarounds' in order to make our systems work with the technology we have?

3
  • 1
    That "wrapper" for Quake basically verifies all the checksums of the files for a particular version. A quake server can have its code changed to allow ANY client or a particular one (they could even try and verify clients based on date, or username or a zillion other things). It's just a verification method. For reddit, they're relying on security through obscurity which is about the dumbest thing you can do. Spammers can experiment all day with different techniques so they will evenutally find out how the spam filters work.
    – user7433
    Jan 22, 2011 at 14:59
  • 1
    In other words, what software goes away when it can be properly observed? Heisenberg would have a field day with this... Jan 23, 2011 at 23:51
  • 1
    The Reddit system is not really "security through obscurity" since an anti-spam mechanism is not really "security" in the usual sense. In particular, even if the spammers do figure it out, it only takes a couple of hours to change the system and block them again: a "breach" is not a serious problem. Jan 24, 2011 at 0:41

10 Answers 10

9

Yes: writing the EXE or ELF binary using directly an hexadecimal editor.

1
  • 8
    Wouldnt they be open source by definition, because you always provide the source (i.e. the data you use to produce the executables, which are in this case identical to the executables)?
    – keppla
    Jul 20, 2011 at 7:00
3

Essentially, you're looking for features of a system that rely on you not knowing how a system works. Some examples:

  • Security is the most obvious example of this.
  • Some games might lose functionality if you can figure out the secret to them.
  • Some software might rely on a sense of mystery for psychological reasons. For instance, Pandora was made to be peoples' personal DJ. Would it be as effective if people knew the ins and outs of the algorithm? A DJ is a person, an algorithm isn't.
  • I suppose you might also consider anti-security to be another piece of software in this category. Viruses and worms are much easier to defeat if the author hands you the source code.
  • An AI that will be used in a Turing test might have it's functionality compromised if people knew how it worked (although if it were any good, it would probably be complex enough that this isn't an issue).

I admit that some of these are a stretch, but that's the most comprehensive list I can come up with at the moment.

2

I can think of various packages which perform comparative evaluation of certain products or organizations (like bank products, insurances etc.). I heard of one case where companies involved in ratings adapted their processes not to directly cheat but rather optimize for this particular rating. After a while the publisher changed its opinion on disclosing the rating algorithms.

After having thought about what you're after, most if not all of the situations I can think of would hold on disclosing the source code for two main reasons:

1) Keeping their know-how away from competitors. This one does not apply to the idea of open-source.

2) Preventing break-in or system gaming in the broad sense as this would devalue the results/products of the system.

So the answer to your question:

Are there any that aren't security related?

Is most likely "no".

2
  • Given the appropriate amount of time, you can always reverse engineer any piece of software. Open Source is about releasing the program in source code format.
    – vz0
    Jan 22, 2011 at 15:27
  • "I heard of one case where companies involved in ratings adapted their processes not to directly cheat but rather optimize for this particular rating." That's also a description of the whole white-hat SEO market, which is massive. Google keep their rating system secret and the SEO folk still thrive. If your system is enticing enough, security thru obscurity just slows people down.
    – James
    Jan 22, 2011 at 17:19
2

Search engine ranking algorithms, for the same reason as the other examples you list: it would make gaming them easier.

1

When you buy parts of your system from someone else who does not give you permission to release it as open source :)

2
  • Umm ... technical details of the law. Besides, "technically impossible" does not always mean the same thing as "impossible for technical reasons".
    – Stephen C
    Jan 23, 2011 at 3:03
  • Hi Hlavac, welcome to Programmers.SE! You'll notice that the other answers on this question are a bit longer than yours: that's because here we want people to share their experiences and back their answers with reasons and facts. Can you elaborate a little more on your answer?
    – user8
    Jan 23, 2011 at 6:16
1

What if the source code exists on a pile of punch cards in some university computer lab? There might not be a good way to get it into electronic form.

4
  • 2
    Punch cards, since Hollerith developed them well over a century ago, have been about storing information to be converted to electrical form, if not electronic. There are card readers out there, and they will convert to electronic form. Feb 21, 2011 at 19:35
  • @DavidThornley Punch cards were invented in 1725 for the control of textile looms, as an improvement on existing, similar technology. They were first used for numerical processing in 1832, and Charles Babbage, in 1837, proposed using them in a hypothetical computing device that never actually got built. Hollerith, who used them for the 1890 US census, was more than a century and a half late to the party. Aug 21, 2015 at 14:48
  • @MasonWheeler Still, producing a punch card reader is not exactly difficult. Heck, you could even use a camera as the sensor, the most tricky part is likely to build the automatic advancement mechanism. Or you could take the card reader from the loom and attach some electronic switches to it. Even the earliest punch card was created for machine readability, after all. Aug 21, 2015 at 17:52
  • @cmaster: Sure, I was just pointing out that punch cards had been around for a long time before either Hollerith or electrical machinery. Aug 21, 2015 at 17:56
1

While there are certainly many economic, social and practical decisions to be made when deciding whether a system should be open source, are there any situations in which it is impossible, purely from a technical standpoint, to open source your code?

I would say that it is almost impossible to separate "economic, social and practical decisions" from "purely technical".

For instance, your examples could be construed as being motivated by economic or social reasons. There is no "purely technical" reason to deter cheating, or to prevent spamming (or SEO, or ...).

1
  • Yeah, it's quite difficult to phrase this question - I think the idea of a feature lose functionality as a result of having it's source made public summarises what I'm trying to ask a bit better.
    – Tom
    Jan 23, 2011 at 9:55
1

In general you can't release an open source project if:

  • it breaks a criminal law,
  • it breaks intellectual property law and and intellectual rights (such as protected by patents)
  • it contains copyrighted content
  • part of it it's not your own work and it conflicts with other licenses
  • it contains some sensitive data, but you can always encrypt it (e.g. using BlackBox)

Related:

0

Economic reasons are many, you dont want people to clone your Product and come up with something better than that you can offer. There are also security aspects to it which are more serious. For eg. if Microsoft makes it OS Open source, people will find a zillion ways to hack into the existing systems before they can be patched either by the Open source community or by Microsoft itself. People might even sue Microsoft for the financial damage done. To be honest, it takes courage to release a produce as Open Source for which you want to make money. IMO most companies make only those products as Open Source for which there are no financial gains or they want to promote the Products user base.

3
  • 3
    While you make some valid points, I am not sure about not making OS open-source part. Linux, while being open-source, is much more secure than Windows. Even MS are now giving access to source code of Windows to selected developers who then point out vulnerabilities in the code. There was a critical update of Windows due to this initiative a few weeks back and was even in the news (though I am not able to find URL of that news article).
    – Mayank
    Jan 22, 2011 at 15:00
  • You mean to say they are giving Access to Windows code to developers who are not working with MS ?? Or are they giving access to code to their VPT Team ?? I know they have made some code for Webservice( Or whatever) as Open source which will not be even 1% of the actual OS code. Linux is more secure because it was actually developed as OPen Source from day 1 and hence the vulnerabilities were found quickly over a period of time. The point I am making is if you have a closed system and you make it Open source the Hacker community will find more bugs than probably you can absorb.
    – Geek
    Jan 22, 2011 at 15:15
  • @Mayank - I'm not sure Linux has had to suffer the number of attacks that Windows has. Esp. on the desktop. Maybe open sourcing it would limit the MS haters?
    – JeffO
    Jan 22, 2011 at 15:53
0

You pretty much killed all the reasons. Most applications are not open source for economic or security reasons.

Vendors want to make money off their software, if they open source it after the initial release, people will be angry that they spent money on something now free, and they will no longer profit off of it.

Security is the other prominent issue. Already existing applications, like Windows and Reddit, would face numerous severe security issues that would have been addressed much earlier in the development life-cycle had it been initially open source.

1
  • Seems like security is the primary reason, and even then it's a result of economic issues (usually because the products' source was not open from the start). However, are there are any systems that have been able to tackle problems such as those above (cheating, anti-spam) by being fully open from the beginning?
    – Tom
    Jan 23, 2011 at 10:03

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.