Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

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?

share|improve this question
    
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. –  omouse Jan 22 '11 at 14:59
    
In other words, what software goes away when it can be properly observed? Heisenberg would have a field day with this... –  Jason Baker Jan 23 '11 at 23:51
    
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. –  Dean Harding Jan 24 '11 at 0:41
add comment

9 Answers

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

share|improve this answer
1  
+1: that's a good technical reason! –  Yttrill Jan 22 '11 at 15:17
2  
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 '11 at 7:00
add comment

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.

share|improve this answer
    
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. –  David Thornley Feb 21 '11 at 19:35
add comment

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".

share|improve this answer
    
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 '11 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 '11 at 17:19
add comment

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.

share|improve this answer
2  
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 '11 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 '11 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 '11 at 15:53
add comment

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

share|improve this answer
    
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 '11 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 '11 at 6:16
add comment

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.

share|improve this answer
    
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 '11 at 10:03
add comment

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

share|improve this answer
add comment

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 ...).

share|improve this answer
    
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 '11 at 9:55
add comment

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.

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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