All Source Code Should Be Open, Revisited
cconnell writes "In my last article, I presented the idea that all commercial source code should be open. In other words, part of the delivery package for any software purchase should be a copy of the source files. If everyone saw software vendors' design and coding, the vendors might stop shipping us such lousy programs. The article generated a fair amount of controversy. My latest piece follows up on this idea and includes a few adjustments that respond to reader feedback."
the cost to develop an app will always stand before cost of quality of the app. to think that every commercial app will be released as open source is very naive.
In any large software system, the truly unique code probably accounts for about 1% of the source.
Hmm, not on any large software system I've ever worked on... The important part isn't some magic 1% of the source, it's the fact that you got a group of people together for long enough to ship the thing.
This negates one of his basic points, and doesn't really contribute much over his previous rant...
Nae bother
If a company had to release their code for products they sold, it wouldn't do any good to the end user. The code would be way to complex for 99.9% of all users to understand. The only users who would really understand it are the programmers, and even then they would need to spend a LOT of time analyzing it (Assuming it is a decent size program) before they could even start to understand it.
The only people who would benefit are the releasing company's rivals, who would have the time & money to sit down and reverse engineer the code, and then rerelease it as their own.
Then again, maybe I'm missing the whole point of this and should RTFA.
No
If I spend 400 hours writing code for something I want to sell, I'm not gonna give it away. I'm sorry
I contribute to open source projects as well but, I have to eat. That's just the facts of life.
Support of user modified code is impossible
Competitors may take advantage of reading the source
It's "my money" that went into developing the source and "I" want to reap the benefits of "my" work
Bug handling would be a nightmare
There are several other reasons too. I'm not sure why all source has to be open source. Sometimes I feel that a lot of people just want a system to be Open SOurce just because it is The Right Thing (Tm), not because it would give them anything.
I have no problem with non-commercial software beeing open-sourced or even to a certain degree commercial software. But is it really necessary that ALL software is open source? I fail to see the need in all cases or the reason for it to be so.
If you mod me down, I *will* introduce you to my sister!
If this was an industry requirement, you wouldn't have developers shipping tight, well-planned code.
You would have no developers and no applications. Technological progress has always centered on riding the bleeding edge, where the programmers themselves barely have a clue what the heck they're doing. If people knew how much of the stuff they use was designed under impossible time requirements by bleary-eyed schizophrenics, we'd still be riding in horse carriages.
Look at how today's technology compares to NASA. They sit and pore over every detail, examine and re-examine; approve and check. What are they using in the space shuttles? 386's for main computers still?
Requiring open code would put many companies out of business. A lot of customers have their own businesses depending on applications, and they don't care if the code is nice; they just want something that works most of the time and keeps their business running. That and a support contract keeps them happy, and the developers can gradually issue fixes to reduce the twinges of sloppy-code guilt.
...
99% of the people absolutely don't care about the sources, why should they have to spend 20 more minutes downloading a bigger package if they absolutely don't care about it ?
Who do you think you are to require people to open their code ? If you don't like closed source software, don't buy it, it's as simple as that.
Authors also have a right to freedom, it's not only for the users.
The problem with OSS is that there is no money in it.
Some have said that the money is in tech support / documentation, but that is just as bad.
If your product generates enough tech support revenues to support a large project then you simply wrote horrible software, and chances are if you did write horrible software it won't be used. It's a paradox, so it probably won't actually happen. And people aren't that stupid - I hope.
And if you charge people for documentation, then I simply call that bundling. You are paying for a bunch of documentation that just happens to come with some software.
The way to make companies produce good software is to stop buying crappy software. It's pretty simple. If people stop paying for expensive tickets to go to professional sports then guess what, they will lower the price. It's simple economics of backlog.
"Not knowing when the dawn will come, I open every door." - Emily Dickinson
If we take source to mean the building materials of a program, everything else is open.
Words of a novel can be yanked off a page. You can order enough parts, individually, to make your own car rather than purchasing it from a dealership.
You can always order wood and build a desk yourself. Got enough heat? You can make your own wine glasses that are exactly the same as those ones off the shelf. Everything, in reality, is pretty much open.
There's a difference with code, though. If I write a program, a person with the source can compile it and use it without having any sort of skill. Whereas someone lacking skill can *not* write Lord of the Rings. They can't build a car for themselves that I'd wish to ride in. Their desk would likely fall apart. Their glasses would end with them receiving severe burns.
If you wish to compare source code to everything else that's open, then, by the Gods, compare it fairly - compare the compilers, the availible libraries, etc.
The tools and materials are there. The skill? The skill is why source is often closed, and in many cases, should be closed.
No profit to be had in selling software? Tell that to MSFT!
I want my rights back. I was actually using them when our government stole them after 9/11.
What kinds of steel were the supports and cables made of? What was the mix of the paving materials and how thick are their layers? Did the contractors skimp on the re-bar? How deep were the foundations sunk?
Just try to get this information about any big public bridge. They'll say, "We can't tell you for security reasons." ...just like certain software vendors we know.
-Rick
Is it possible to have good products without "good code?" Depending on the product, I think yes. Do great videogames necessarily have "good code" or whatever the author decides is good code? Maybe, maybe not. For games, the distinguishing factor is not as much the coding (ie fulfilling the designer's vision) as it is establishing a good vision.
YES, maybe it makes sense for security related products, but don't get greedy and claim that EVERY product needs to release its code.
To beat a dead horse - If we built houses like we build software, .....
When you buy a house, it is either pre-existing or soon-to-be-existing. In the case of the former, you can only know as much as the owner tells you, and the builder's reputation and the packaging. In the case of the latter, you can visit the site as often as you want (just don't be shocked if you see some beer cans sitting around).
I agree that most software sucks, but to say that you need to take the walls down to inspect the plumbing both trivializes a nontrivial problem, and tells one no-more-than 'next house on the list' inasmuch as they know what they are looking at.
The biggest benefit I see to having it be open is history. We should establish an organization where people "check-in" the source of their commercially realesed product. That way, 20 years from now, when we desperately want to get at a document from said product, we might actually have a chance.
then again, by that point copyright will probably prevent us from looking at anything interesting...
-kscd
In short, RTFA.
Ryan T. Sammartino
"Ancora imparo"
To put it simply, there is no profit to be had in selling software anymore.
/. poll.
Please tell me you are joking. Microsoft makes a lot of money off of software. How about Adobe? Macromedia? Real Networks? Symantec? The hundreds of game companies? Should I keep going?
I believe that source code should be released when the product is out of support (the source for Windows 95 should be release, for example). To release the source for commerical applications with many users (Windows 2000, Windows XP, even antivirus software) would just be insane because of the amount of hacking that would take place.
I do contribute on a few open source projects, but I do not believe that everything should be opened just because a few of us write code that is opensource. What is the percentage of OSS coders compared to programmers that code closed source applications. Might be a good
I'm the CTO of a software development company called Intellinger.
We're young, new on the block, and competing against some big fish in the performance monitoring space.
One of the biggest issues we have is trying to placate potential customers that are worried about us going out of business and leaving them with un-supported code.
To get around this, we've put copies of source code, with docs, build environments/scripts, etc., in escrow. This way, if we DO go down in flames, all registered license holders of our software are entitled to complete access to EVERYTHING required to support the software themselves.
This keeps our investors happy, our customers happy, and us, the developers, happy. There's NO WAY IN HELL that our investors, or me, for that matter, would condone or support making our entire product OS. We've spent a couple of years working on this thing, and we'd like to get some benefit out of it.
There is an infrastructure (that we call Brazil) that will probably be put into open source in about 6 months, but the customized/specialized modules that plug into it that we've developed will NOT be made OS.
Obviously, our position could change in the future, but for now, it's not an all or nothing proposition.
$0.02 (CDN)
In an academic, Computer Science research sort of way, you're probably right. And there is a lot of common code in many applications, it's true - but that's what vendor-supplied and third party
The #1 cost in most software is time - to design, to code, to test and to document. That's what adds value. What you are saying is like saying that "houses should cost no more than the bricks they're made of, or that cars should cost no more than what the iron ore cost to mine. Hell, iron ore should be free, right, it's just sitting there in the ground waiting to be dug up!"
Here are the facts:
People like you will continue to say that software should be free, and you'll keep coming up with ways to justify your belief. That's fine, because you're fighting the laws of economics, and they're just as implacable as the laws of thermodynamics.
If 1% of the source were to have the magic, then if that part is hidden, basically all you have left is gui and i/o. So What's the Point of releasing it?
Furthermore, this guy somehow thinks that removing the #define is an effective barrier to piracy? I think I heard of something called a symbol table at some point.... maybe that would help black-beard?
This guy is just trying to stir up shit so that he can make a mark. The only customers that would be dumb enough to hire him, are the same ones that would believe his inane ramblings.
Good luck Mr. Connell, if you ever have a good idea, feel free to share it.
The entire point of his article is flawed. It seems he wants to open source just so that people can point out the 'bad design' or 'coding gaffes'. Now, I write a lot of code in a day, some good, some bad, and probably even a bit brilliant, but if it gets the job done properly and well, nitpicking over 'bad design' is just that.
I'd imagine a lot of really great code is fugly as hell, and just because code is design well doesn't mean it will do its job well. The two are relatively independant, unless you like to take a holier than thou stance, which it appears this article is doing.
The assertion is that peer pressure will create better code. That indeed may cause some corners to get smoothed out, and some blatantly bad coding practices to get exposed. But fundamentally, it's not going to give the devlopers an extra three months, etc. to make it better! If a company has X dollars to put out a product, then you get whatever it is that X dollars will get you. Showing the code post-delivery will not have changed what you got in the first place. But back to the bridge: if there's only one bridge to cross, you're taking it, even if it's poorly built! But, if there is a choice of bridge to take, then the result is obvious.
I find the article somewhat lacking. The points from the other side which he addresses are ones which the open source movement has addressed from day 1.
Anyone who understands the open source movement already knows that peer review is superior to any internal QA process. Despite what the FUD claims, there is little question that the quality of open source software has been higher than that of closed sources software. I think the fact other people might see their software as "lousy" only accounts for a very small % of the reason why most software companies are not open source.
Intellectual property is a much bigger issue, one which the article's author failed to address properly. Right now, I may have no clue what the best way to design a piece of software to do some particular task. If some other vendor has already designed that piece of software and released the source, I might not understand the details of what exactly is going on, but it would not be too hard to get a high level understanding of how the software works.
From there, creating the better mousetrap becomes a much easier task. The design of the software is often as time consuming or more time consuming than the implementation.
Sure, if I used their work in the creation of mine, I have created a derivative work. However, copyright law is a very grey area. If I kept my work closed source, how could anyone prove that I didn't steal my design from their product? They could sue me, but it would be at great cost to them, and if enough of the implementation was changed, they may not even win.
Managing any company successfully is not a trivial task. Executive board meetings are not filled with people who want to create poor software and hide that fact from the consumer. However, when someone presents a concept that could a) help competitors get into their market and b) result in a huge loss in revenue (directly and indirectly), what do you expect them to do? If you were a developer at that company, what would you want?
Regardless of how good you are, there's always going to be someone better out there. Most companies are realistic and realize this. Why give them an edge on your company's business? Do you really want to be out on the street that bad?
Overrated Moderation: This posts sucks... because.
Long ago in a galaxy far far away... ... it used to be that ALL software was distributed in source code form, and then built by the customer prior to installing and putting it into production. The industry would have left things that way were it not for the fact that we were increasingly running into a number of big problems not solvable in that model:
- Customers didn't follow directions, so they always were screwing up the build and/or install. These were very simple tasks back then, much simpler than they are today. And in theory customers were far more educated since they were the very few who could afford those multi-million dollar machines and the huge costs of the rooms and facilities they required. Somehow, though, they still were able to find ways to screw things up, and support organizations spent much of their time walking
customers through these processes.
This would be worse today given many software users have no clue how to program.
- Support was a total nightmare as you never knew what source code customers were using.This was because customers would choose which patches to apply, and would add their own, leaving each customer with a totally unique piece of software. When something went wrong in it, it was impossible to know what the code was supposed to be doing, and what it was doing wrong.
While this might not be quite as bad today, since we no longer must rely on "core dumps" to diagnose bugs, there still is the basic problem of being asked to diagnose problems when you really don't know WHAT source code that customer might be using.
- the intellectual property problem... there were plenty of lawyers back then, but there really is a big problem with investing lots of money to build something, a unique set of code, and then making it easy for people to lift it. A variety of methods to secure it while still distributing it to all customers were attempted as there was tremendous cost associated with changing from a source distribution technique to a binary distribution technique, but none ever worked. If anything, today there is far more sophistication on the cracking side, so it seems even more doubtful that it is possible to secure code from mis-use when its considered IP. And there ARE valid arguments against giving away all code.
SO...
There were good reasons the computer industry turned away from distributing their software in the form of source code. I don't think they have been addressed, and thus I am unconvinced the equation has changed.
Maybe the performance of the software might have something to do with how you rate it. I'm not against making software open source, but I can't honestly say that I've heard any argument for it that made any sense. Do you also want a complete parts lists and break down of the engine theory for your car?
I assure you that NO ONE has seen ALL the source code for Excel or Word (or any other of the "too big for our own good" line of MS products).
"We shall party like the Greeks of old! You know the ones I mean." - HedonismBot
Freedom is a sloping mountain and everybody wants to get to the summit, forcing all software to be open would be climbing up over the top and then starting down the other side. Nobody should have their creations FORCED away from them, it's THEIR creation, so THEY should get to deside how to distribute it to people. Ideally all people/companies would open their software, but that doesn't mean that they shouldn't have the right to refuse to open it.
;-)
Richard Stallman has talked about how all software should be open and that's always been where I start to disagree with him. Again, I agree that it would be beneficial to the world if all software were open, but I still think that people should be given the right to choose whether or not they want release it as "open".
Oh well, it's not something I really need to take a whole lot of time thinking about and defending against because it's really an unpassable law (and pretty unenforcable too). Just think about it, it'd be about as unenforcable as anti-piracy laws
Very true, but it goes beyond that.
The author writes that if companies opened their source, we'd stop getting crappy programs... Well, vote with your dollar just like you do for EVERY OTHER product out there! Don't like it? Don't buy it. If there's an OSS solution out there, use it if you prefer. If you buy it you're saying that you're willing to overlook the bugs because there's something of value in the product for you.
Well-designed software isolates important functions into small, non-redundant subroutines. Those routines simply can be replaced with empty stubs prior to including the source code in the purchase package.
While I agree that well designed software SHOULD allow you to do this, not all software is well designed and it's a company's right to have crappily written software. The author seems to think that the good software police have some right to chastise these companies. Well, ya don't. Get over it.
Furthurmore, the author makes the assumption that these removed subroutines can't be substituted by something else. If open source authors can deliver a functional, quality OS, they can figure out a couple subroutines and replace them. Tah-Dah! The company instantly loses their revinue because some hackers took their slightly incomplete source and finished it. Same goes for the constants. People can figure them out, and more importantly: People WILL figure them out.
There's an addage in the gaming industry: "The client is in the hands of the enemy" They WILL hack the client and try to cheat.
Fundamentally the author doesn't understand that the thing that makes software really cool is that there are no replication costs. Once it's written it can be duplicated infinitely for free. Other products like bridges, houses, and cars aren't like that. Even if I knew how a bridge was build, even if they gave me the schematics they used to build it... It would do me no good because I would have to hire a construction company and spend huge loads of cash to get my own bridge built. You could argue that another company could afford to do that, but it would be quite obvious that the second bridge was built using the first's design, and a lawsuit would follow. Although houses, cars, and bridges can be inspected by individuals, they cannot be replicated by individuals. That's where software is different and cool... And must play by a different set of rules.
You're exactly right. When I buy a piece of software, it should work, period. I shouldn't have to look at source code at all, just like I don't have to ask Honda who makes their starters, and in turn as the starter manufacturer who they buy their windings from, and check out the winding manufacturers, and check the quality of the copper. That's bullshit. Software should be warrantied, and if it doesn't work as sold, it's fraud. Period. Software license agreements that say "we don't warranty this product" need to be challeneged in court because they are simply illegal. Just like those truck on the highway that say "we aren't responsible for damaged windshields". That's bullshit. They're carrying gravel, it's uncovered, gravel flies out and hits your car, they're liable, regardless of what the back of the truck says.
We need to see some civil cases in which software companies are challeneged based on nonperformance of their products. It's not my responsibility to check the source code. My responsibility ends when I pay someone for the product. Period. I don't want to see the source code. I want the product to work.
I do not see why source cannot be an integral part of the product. Yes, I am a developer. Yes I do want to be paid.
Let's look at the problems described in the article:
1. Piracy.
How is having the source making it easier to pirate things? People have been swapping microsoft binaries for ages. It is actually easier to just copy the installation disk (whether floppy or cd) than to recompile the program from sources.
2.Copyright laws.
Wouldn't it make it actually easier to check if people conform to copyright laws? If I release all of my source code and you are required (by the marketplace perhaps, not as a law) to do the same than it is quite easy to see if you copied some stuff of of me. How many people have wandered whether Microsoft has copied some code from GPL licensed programs (I doubt it personally). How many have the opportunity to CHECK if they have?
3. National Security.
I do not have a lot of confidence in a nation that bases its security on the ability to sweep them under the rug. The idea is to avoid having those problems in the first place! Maybe if this practice became accepted we would not have destroyers being run on windows.
4. Safety-critical applications.
Even if there is little to gain from having this code available to the users - not having it is worse. What are you trying to hide? If this is a safety-critical application then the answer should be "nothing, have a look".
Nobody is asking to release the source code without compensation. It's just that the source becomes part of the application. IF most people will not use it - then fine. What are you worried about? Is your code really that bad that you could not write good code if forced to?
Does your car come with blueprints and CAD design CDs? Does it even come with a parts list? No. Does your computer? Does your washing-machine? If they are really nice, your washing machine will have a little schematic in it for the repair guy to plug in his multi-tester and have a clue which overly expensive part to replace but you get nothing more.
Just because we currently get LESS out of software, ie. a guarantee only that the media is readable not that it actually works, doesn't mean we should expect more out of it anywhere else.
$#!^ happens, but why does it always have to happen to me???
Like the bridge analogy, you can see that the bridge is sturdy and will hold a sherman tank. That's swell. What you don't see are the misplaced rivets that will cause the bridge to fail in unanticipated ways.
In other words, this is a kick-ass design, and I didn't notice that off-by-one bug until it was too late.
Another thing to ask is what do people really want? Bug-free software? Of course! And you know what they say they really want on airlines? More legroom and good meals!
Unfortunately, airlines that provide more legroom and good meals are running in the red. Unsurprisingly it turns out what people meant is they don't care about legroom and actually want the cheapest possible tickets and on-time flights. They complain that Southwest Airlines sucks, but everyone still flies with them!
My point is that people want the cheapest possible mostly-working software. Let's say, for the sake of argument, that there somehow existed some kind of free operating system for which anyone could look at the source. Would it have fewer bugs than closed-source OSs? Possibly. Is that really important to people?
No--really. Is it?
If it was impossible (or even hard) to pirate closed source programs, you would have a point.
It is not. Closed source programs are copied everyday. Everywhere. Especially in China as you mention.
Selling the source along with the program wouldn't make it any different. It would just be some more bytes on the CD to be copied.