Slashdot Mirror


What's So Precious About Bad Software?

David Gerard invites to read Carla Schroeder from Enterprise Networking Planet, who gets down to the real reason why companies want to keep their code proprietary, with examples. Quoting: "We are drowned in tides of twaddle about precious IP, Trade Sekkrits, Sooper Original Algorithms that must not be exposed to eyes of mere mortals, and all manner of silly excuses. But what's the real reason for closed, proprietary code? Embarrassment."

278 comments

  1. kinda true by sdedeo · · Score: 5, Insightful

    As a scientist, I write a lot of code to do things that other people have already done. I sometimes think about "releasing" it -- informally, without a license, just on a webpage or something. But it really is embaressment that holds me back -- it's poorly documented, full of hacks, and basically inelegant.

    I remember as an undergraduate suggesting to my advisor that I release my (actually rather pretty) code that I wrote to do general relativistic raytracing around neutron stars. His response? "People will not understand your code, they will misuse it, and then they will blame you when it gets them in trouble." You might expect someone who's doing raytracing around compact objects to not be so silly as to do something like that, but I think you'd be mistaken: I know I treat the few publicly available codes in my field (e.g., camb) with great disrespect, bitch all the time, and generally am part of the large community that makes it far more trouble than it's worth for the poor people who worked so hard on it.

    --
    Protect your liberties. Donate to the ACLU
    1. Re:kinda true by rolfwind · · Score: 1

      I know I treat the few publicly available codes in my field (e.g., camb) with great disrespect, bitch all the time, and generally am part of the large community that makes it far more trouble than it's worth for the poor people who worked so hard on it.
      Thank you for your honesty, but it sounds like it's up to you to change that attitude now that you know better than to perpetuate it in that field.
    2. Re:kinda true by sdedeo · · Score: 1

      Well, it's partly a joke, I mean, I don't actually send hatemail. But it's true that the authors spend a lot of time fielding "customer support". They are dedicated to their code, and put a lot of work into it, and it's not something that I personally have the time (or the code skills) for. You should see most of the code scientists write, it is horrific, cobbled-together stuff, meant for an audience of one. Perhaps I should take a CS class again (the last time was in high school) -- I duplicate efforts every few years.

      --
      Protect your liberties. Donate to the ACLU
    3. Re:kinda true by irtza · · Score: 4, Insightful

      I agree with your sentiments as well; however, I got over that sense of embarassment. I am not a computer scientist by profession. I write code to accomplish a task I wanted to do. The code is largely funcional, but may break around end cases or often has poor exception handling. Every now and then, I'll go back and clean some code up. I decided that there may be people who are willing to take this code and fix it up, or maybe somebody who can't program is looking for something quick and dirty to do what I have already done. For this reason, I released a substantial number of my programs as a single package on sourceforge. Some functionality is redundant to other projects, some is not.

      Heck, I just realized I could recruit people here ;) if they are willing to help.

      --
      When all else fails, try.
    4. Re:kinda true by sdedeo · · Score: 2, Insightful

      I'm not sure what field you're in, but mine is small (at most 10,000 people, but actually much less.) Giving away code -- it carries with it responsibility, in the sense that if you do give away code people think you are saying "I am so cool that what I have done is better than whatever you haven't released." Sort of like, I don't know, the difference between keeping a diary and publishing a diary on livejournal. It generates problems.

      It might be something to do with the bizarre psychological fact that people are suspicious when you do them unasked-for favors.

      --
      Protect your liberties. Donate to the ACLU
    5. Re:kinda true by 16384 · · Score: 1

      Sharing code in science is something that is not done often enough. I would be happy if the papers said which numerical method they used! Of course, releasing the source code would be better as we have to take the simulations results on a base of faith. That said, I've released some code, but the response has been very underwelming, and it is being mostly ignored...

    6. Re:kinda true by slashdotmsiriv · · Score: 1

      "People will not understand your code, they will misuse it, and then they will blame you when it gets them in trouble." Thank $DEITY Linus et al. do not share the same view with your advisor ...

    7. Re:kinda true by letxa2000 · · Score: 5, Insightful

      But what's the real reason for closed, proprietary code? Embarrassment."

      Oh, please. That's got to be the goofiest premise I've seen in a long time.

      Code is kept "secret" because the companies, rightly or wrongly, think it gives them a competitive advantage. Heck, some companies should be embarrassed about the appearance of their product, do you really think some suits care about how it looks on the inside? Does Coke keep its formula secret because it's embarrassed or because it wants to make its product harder to copy? Same goes for software.

      Heck, many open source products are no beauty to peer into, either. The code is so nasty that the argument of "If you don't like it, you can fix or modify it yourself" is reduced to a smart-ass comment with no real validity. Modify that code? First you have to be able to understand the mess. Unless you've been responsible for the mess from the beginning, or have a lot of time to invest in figuring out the mess, good luck with that.

    8. Re:kinda true by rucs_hack · · Score: 2, Interesting

      I'm in exactly the same position. I'll be obtaining my phd in a few months, and I planned to release the full source code for my work, which amounts to over ten thousand lines of code (machine learning and EA's in my case). It all works, and what it does is pretty cool. However code written over three years, haxxed about, experimented with and cannibalized at times to make utilities does not in fact make a nice release candidate.

      There ought to be an open source project to clean up research code and make it easily useable.

      As it is I'll probably release the code when I have time to completely re-write all the code, making it intelligible.

    9. Re:kinda true by irtza · · Score: 2, Interesting

      intersting thoughts. I am in medicine; however, only a small fraction of the programs are related to medicine. I have in there general utilities that I have used for mass conversion of file formats (usually one text file format to another), or to allow me to get access to datasets others have published.

      Some of the programs are for personal use - such as to automate the creaation of a photoalbum for web publishing.

      I just don't see the problem with letting people know that I am not a good programmer. I have the essential knowledge to program, I just don't care about taking the time to polish off a program - becaue to me they are just tools. I understand why a programmer would be upset about releasing poor code, but for someone who considers programming more of a hobby, I don't see the point.

      --
      When all else fails, try.
    10. Re:kinda true by j-pimp · · Score: 2, Insightful

      I'm not sure what field you're in, but mine is small (at most 10,000 people, but actually much less.) Giving away code -- it carries with it responsibility, in the sense that if you do give away code people think you are saying "I am so cool that what I have done is better than whatever you haven't released." Sort of like, I don't know, the difference between keeping a diary and publishing a diary on livejournal. It generates problems. I guess it really depends on the nature of the code. My pet open source project (see sig) has gotten hardly any feedback. I have a trickle of downloads, usually 2-8 a day, one anonymous bug report and some feedback from the author of UltraDefrag after I contributed documentation to his project. So the problem I've had with open sourcing my code is that no one cares. This is probably partially due to the fact that no one wants a SQL front end to MS Access databases and there are better frontends to SQLite. I hardly use PlaneDisaster.NET myself anymore because thankfully I don't have to deal with applications that store data in an MS Access Database at the moment.
      --
      --- Justin Dearing http://www.justaprogrammer.net/ We're just programmers.
    11. Re:kinda true by sdedeo · · Score: 2, Insightful

      Interesting. Releasing code unrelated to the core field seems fine (I may have done that myself, including little "bug fixes".) It's when you come to release code that does something related to your core competency that things become problematic -- people could use it to (unfairly) judge your work.

      --
      Protect your liberties. Donate to the ACLU
    12. Re:kinda true by Original+Replica · · Score: 1

      It all works, and what it does is pretty cool. However code written over three years, haxxed about, experimented with and cannibalized at times to make utilities does not in fact make a nice release candidate.

      Release it for free use under the name "Ridiculous Gobbledygook" and don't offer support except to someone who's main focus is programming and is trying to clean up the code. It would be nice to see these very specialized sloppy programs rewritten as a learning experience for programmers, I'm sure it won't be the only time they encounter inelegant code and need to streamline it. Sure others in your field can use your program, as is, with zero tech support or write their own program, whereas now they have only the latter choice.

      --
      We are all just people.
    13. Re:kinda true by Maurice · · Score: 5, Interesting

      Years ago I posted the source to a neural net implementation that I did while in school. It was a very simple one with just regular back propagation, and the code was documented with examples. Soon after that I started receiving all kinds of email asking for help with the code from people clearly trying to use it to do their Comp Sci homeworks or projects. I started out with courteous and helpful replies, but at some point people ask questions which really have nothing to do with the software (and more to do with whatever that person is working on) -- to the point where they are wasting your time and you have to cut them off. Then they get annoyed and start insulting you.

    14. Re:kinda true by Kadin2048 · · Score: 4, Insightful

      Code is kept "secret" because the companies, rightly or wrongly, think it gives them a competitive advantage. I'm not saying this is never true, in fact I think it's probably the case more often than not. But at least in some cases, I've known/seen companies who have indicated a willingness to open-source their code -- meaning that they've thought about the competitive aspects and realize that it's not going to hurt, and might help, them -- suddenly drag their feet at the last minute, or spend months or years "preparing" to open-source their code. I think this is directly related to embarrassment over the poor state of their codebase.

      I think there's a feeling that in order to open-source something, you have to have it all wrapped up in a neat little bundle, that you can't just take last Tuesday's CVS checkout and dump it onto a web server somewhere as a tarball, even if that's what the community really, really wants. (A dirty tarball today being better than a slick project and a wiki and everything in three years.)

      I've actually seen this happen; you can get management on board with the OSS concept in the abstract, but when it comes to actually giving out their code, and they start feeling like it might make them look bad ... suddenly they clam up and come up with excuses. This is most apparent when the code being considered is abandonware or otherwise dead, and the only effect it could possibly have is to hurt a competitor; companies (and individuals) are paranoid of the damage to their reputation that messy code could have, particularly if lots of insecurities or design flaws are exposed.
      --
      "Ladies and gentlemen, my killbot features Lotus Notes and a machine gun. It is the finest available."
    15. Re:kinda true by Anonymous Coward · · Score: 0

      That said, I've released some code, but the response has been very underwelming, and it is being mostly ignored...
      Perhaps what is needed here is for some patriarch system to be established for code written for specific purpose research and similar fields. An online database of such code which is fully searchable and includes what documentation that is possible on the code and its original intent and established uses. Further if this code was licensed for open use and open change with historical documentation of code changes it could go a long ways towards faster wheel reinvention or not needing to reinvent it at all. Of course this system would have inherent problems, the folks at Sourceforge could probably provide some valuable suggestions on avoiding many of the relevent problems.

      At universities some interdepartmental support for such a system would be useful too. A professor needs a program to do x? Why not make it a multi-discplinary project for grad and/or undergraduate students from the related disciplines needed to achieve the result? They could search the database for relevent code, vet it, decide if it handles part or all of the required functions, if yes then clean it up, add the additional functions required or write the whole thing from scratch. Submit the results to their departments, the requesting professor and the database. WIKI would be useful as well, with the internet the projects could even be spread across two or more universities. Filling requested projects could be excellent preparation of students for the real world.

      The above is not a very fleshed out discussion of an idea that for all I know already exists. Is their such a system or portion thereof already in existance?
    16. Re:kinda true by rucs_hack · · Score: 2, Interesting

      the most likely event would be that I release the code, people look at it who are interested in the algorithms, they recoil in horror, and my reputation drops.

      If there was a place that *expected* shitty research code I wouldn't mind, but I have a current open source project that I wouldn't want tainted with the bad coder rep my research code would likely generate.

      I've got a fully working temporal neural network sat in a deep directory that I'm sure someone would like, if I can tidy it up first. I've not found any other source code for this type of neural network under an open source license, so I will make it nice at some point.

    17. Re:kinda true by Anonymous Coward · · Score: 0

      As with so many things, it is more likely a mix of both.
      Impersonal decisions by legal entities tend to be results from personal decisions by biological entities.

      The default position of a for-profit company is to not-give-an-inch for the sake of competitive advantage, of course.

      But in terms of routine software, it wouldn't be that difficult to make the case that opening some code would be an effective way to reduce its support costs - particularly when software is not their core competency, and/or the software is an IT artifact that is not cutting-edge anymore.

      But typically the decision has to percolate up and down the chain for a company to be convinced and act upon it.
      The PHB is not going to think of open source often, and such a suggestion will often get a cold reception from the very people that developed the code, for very human reasons. Embarrassment is a significant factor there. Unwillingness to give an expectation of informal support / ownership to third-parties is another (closely related) one - community participation requires some level of pride/care about the code.

      Fact is the open source methodology is mainly driven by geek pride (egoboo), and from the rule of majority of mediocrity, most developers feel that 99% of existing code should be left to die a merciful death. For the 1% they are proud of, opening the code would be more appealing... but that's the 1% that is more likely to be non-trivial and give the company an advantage of some type or another.

    18. Re:kinda true by BronsCon · · Score: 3, Interesting

      I would have moderated parent as insightful, but I prefer to comment and elaborate. There may be an advantage to releasing your sloppy code. Someone might come along, clean it up and show you what was wrong with it. Sure, that code isn't going to get you any job offers. The next program you write after learning how to make pretty code might, though.

      --
      APK quotes people (including myself) without context and should not be trusted. Just thought you should know.
    19. Re:kinda true by Johann+Lau · · Score: 1

      Yep.. same here in regards to my hand rolled CMS. Okay, it's still very basic, yet it does have a neat feature or two... but all the work it would take to make it really user-friendly... gah... I'd rather keep the ability to hardcode stuff etc., at least for now. I keep saying to myself I might start over from scratch one day and implement all the features my ugly hack has in an elegant way, but I think everybody does..

    20. Re:kinda true by Anonymous Coward · · Score: 1, Insightful

      If you have no financial interest in keeping your code closed, why don't you just release it anonymously? Abandon it on sf, no strings, no support, and maybe someone can use it and will adopt it and clean up your mess. You can only win.

    21. Re:kinda true by rapidweather · · Score: 1

      OK, I have some bad software I want you to look over:
      This is an internet radio station selector for Rapidweather Remaster of Knoppix Linux. (See screenshots, below, there are some showing this working.)
      You may get a copy here, be sure and chmod +x station* to get it working.
      http://www.angelfire.com/ms/telegram/station_selector.tcl
      This thing is a front end for XMMS, and works alright as long as the addresses of the internet radio stations are vaild. If they are not, then XMMS will lock up, and cause a runaway process, actually a few of them.
      I just "updated it", and it seems to work fine last time I checked.
      The Station Selector works much faster than just using a browser, viewing ShoutCast, to "change stations".
      I know, of course, that it is only a matter of time before the stations get out of date, causing XMMS to lock up, etc. if one of the buttons is pressed. I did get this to work in Kanotix linux,
      For any other linux OS, you need XMMS to be able to play MP3 streams, which some do not, without fixes.
      Namely Fedora Core 6. Must also have TCL-TK, to run the interface. I have it working in FC6, but the "update" feature does not work, that script is only in Rapidweather Remaster. You get the download one, and that's it anyway.
      Although it's bad software, when it works, it changes radio stations really quick, lots of fun.
      You can put your own stations in it, simple to do. Changing the interface somewhat can be a real chore, as placement of the buttons takes a bit of work to get them right.
      If the radio stations would stay put, then this would work for a long time. Some really good stations have just disappeared, rendering that button on the interface useless.
      Some times, with an XMMS lockup, I have to use KDE system guard to get all the XMMS processes out of the running linux system. I did write a short script that goes with the "Stop the Radio" button on the interface, sometimes that works, mostly not if one has had the misfortune to hit a dead station. I can run that script separately via the IceWM menu in the Remaster, that works sometimes if you close the Station Selector interface first.
      That's mostly how I get along with this software, so all in all, it comes across as "bad".

      -- Rapidweather

    22. Re:kinda true by tchuladdiass · · Score: 1

      I'm in the exact same position. I released a simple interpreted language on Sourceforge and get a few downloads a week, and only a couple support / feature requests, and no traffic on the mailing list.
      Whenever I have an update I post to freshmeat.net, then I get a surge of downloads but thats about it. However I was getting some feedback from a particular user -- I didn't really grasp what he was asking for at first (and didn't see the need for those requests), but once I started looking into it I ended up adding those features which endedup making for a better product. So it was worth it in my case.

    23. Re:kinda true by budgenator · · Score: 2, Insightful

      Considering that one of the major foundations of scientific method is repeatability, so to me not releasing the source code is like getting your data through divne revelation.

      --
      Apocalypse Cancelled, Sorry, No Ticket Refunds
    24. Re:kinda true by ScrewMaster · · Score: 1

      That's why you release the source with "THIS CODE IS UNSUPPORTED - USE AT YOUR OWN RISK" stamped all over it and then don't leave any way for anyone to contact you. If you left an email address or a phone number and anyone finds your code useful they're going to drive you nuts. I learned that lesson a long time ago. The world is full of inconsiderate people who don't understand that their problems are not at the top of your to-do list.

      --
      The higher the technology, the sharper that two-edged sword.
    25. Re:kinda true by ratboy666 · · Score: 5, Interesting

      Way back... way, way back...

      I developed a system that decoded phototypsetting codes, and imaged onto a laserprinter.

      I wrote the software using Borland Turbo Pascal, 8087, so it required a math coprocessor. One of the sales reps aquired a 286 laptop that didn't have a socket for a coprocessor, and wanted to demo the software.

      I used Borland Turbo C to do a quick hack to emulate the 8087. Worked fine, but I didn't want to support it. Still, it was (somewhat) useful, and I released it as a hack (emul87 on simtel).

      Fast forward 8 or 9 years... I got a call from someone claiming to be a "consultant", who had a client using emul87. Apparently, it didn't work on a new machine! And if I didn't fix it RIGHT AWAY, I would be SUED!

      Of course I told him to take a flying fuck at a rolling doughnut -- and he went away.

      So, this stuff happens. Go figure.

      --
      Just another "Cubible(sic) Joe" 2 17 3061
    26. Re:kinda true by ozone_sniffer · · Score: 1

      Although her opinion is not completely out of track, IMHO, it seems Ms. Schroeder doesn't know much about code. You can have pretty shinning code which does all that awful samsung stuff she talks about, for example. What the code does and how it was written are very different things.

      Just my 2c.

    27. Re:kinda true by 16384 · · Score: 1
      Science can be very competitive, and keeping the code closed gives you an edge over the other labs. Also, after spending 1 or 2 years doing some simulations, you certainly don't feel like giving away the secret sauce, so that others will directly compete with you.

      Looked from the outside one could think this type of thinking would not occur in science, but we need to eat too, and however meager the pay, you would not be able to do the things you love if the grants were cut.

    28. Re:kinda true by warrigal · · Score: 1

      The only criterion for any product is "fit for purpose". It can be as ugly as sin inside as long as it works. Elegant but inefficient code is rare outside books.

    29. Re:kinda true by skelly33 · · Score: 1

      What you suggest is a distinct possibility, but is not mutually exclusive to the point made.

      I know for a fact that the baseline statement is true. I had an employer many moons ago who manufactures PC-add-on boards such as RAID controllers. They were a smaller company fiercely protective of their home-grown knowledge because a bigger competitors could take that knowledge and turn it into a less expensive product and bring it to market faster than they could. In that respect their motivation was exactly as you describe: competitive advantage.

      However it was in these early days of Slackware that Linux started to gain popularity. My employer received a great deal of pressure to release driver source code for their products to the Linux community. They refused, but not because of competitive advantage. It was because there were features designed into the hardware ASIC's that should have worked, but didn't. The failed designs that made it all the way through to ASIC production could not be rectified economically.

      So the problems were fixed in the drivers by ensuring that the driver never triggered the error. The source code was not released specifically because the company was unwilling to disclose that there were embarrassing design flaws in their hardware, a perception that could have ruined them. It's yet another case where someone is unwilling to tarnish their shiny image of flawlessness to the detriment of the open source community.

    30. Re:kinda true by DudeTheMath · · Score: 4, Interesting

      In the field my employer works in, namely, financial software, we are mostly competing with our customers. What we do isn't necessarily hard, but is complex. We've put years of experience into the software. Any of our customers is trying to decide whether to do these calculations in-house or farm it out to us. If our source code was readily available, we'd get a lot of "Thanks, but we've got what we need now!" instead of sales. It's not proprietary algorithms, it's not trade secrets, it's simply the thousands of programmer-hours that have made an intricate piece of software what appears obvious in hindsight. We do occasionally release the source under an NDA for a customer with an odd platform we can't provide some kind of object module for, but that's certainly the exception. We aren't embarrassed by the state of our code; we just want to make sure we're paid for the work.

      --
      You save only 59 seconds over 8 miles by going 75 instead of 65. Do you really have to pass that guy? Do the Math!
    31. Re:kinda true by budgenator · · Score: 1

      We used to think that way in the Software Bussiness than came open source and in reality about as many company are porportionaly sucessful or crash and burn in OSS as they do in closed source. In my industry the vast majority of research is either conducted by employees or independant contractors for the major vendors. This doesn't mean the research is faulty, but uncomplimentry reasults tend to be unpublished. I guess the fundemental question is are you doing science or are you doing marketing? In science failures can be more important than sucesses.

      --
      Apocalypse Cancelled, Sorry, No Ticket Refunds
    32. Re:kinda true by Holi · · Score: 1

      I know its off topic but Coca Cola keeps its recipe for Coke secret because Trade Secret protection has no expiration date, the only other protection they could apply for would be a patent and that protection would have long since expired.

      --
      Sorry, teleporters just kill you and then make a copy. A perfect, soul-less copy.
    33. Re:kinda true by OakDragon · · Score: 2, Insightful

      Code is kept "secret" because the companies, rightly or wrongly, think it gives them a competitive advantage.

      I have to agree with you there, but I would word it a little differently. The code is secret because it may give the company a competitive advantage; releasing the code, however, guarantees that competitive advantage is gone.

      As a hobbyist who enjoys old computers and software, here is a question the vintage computer community often hears: Why do companies refuse to release or open software that is old, obsolete, and not even sold anymore, even if someone wanted to buy it? (Sometimes the answer is, we don't know who owns it. Even the people who own it may not know it.) If a large-ish company owns the software, the answer boils down to: we gain absolutely nothing by releasing this code. Losing nothing versus losing an unknown quantity is a no-brainer in business.

    34. Re:kinda true by MidnightBrewer · · Score: 2, Insightful

      But that's not realistic. Pretty code takes time, and companies hire you to meet deadlines with a product that works, not make perfect code. The whole point of this conversation is that one of the lesser-known reasons to keep things hidden is to keep your ugly mistakes from coming to light.

      --
      "Give a man fire, and he'll be warm for a day; set a man on fire, and he'll be warm for the rest of his life
    35. Re:kinda true by gerddie · · Score: 2, Insightful

      Exactly so. For that reason, whenever I review a paper about "that great new algorithm" without any source code available, I tend to write that without the source code a proper review is not possible within the requested time frame. Usually, I also add in the notes to the editor that the release of a working implementation - at least to the reviewers - should be a requirement for publication.
      Especially in computer graphics it's really annoying - they put in some pictures and tell you that they look better. Re-implementing the algorithm during review is just no option, hence, proofing that the images are not just a gimp-job is just not possible.
      On the other hand, lately I had to write a paper where I would have loved to release the source code, but my boss didn't allow it. Well, he's not my boss anymore ...

    36. Re:kinda true by udippel · · Score: 2, Informative

      I had an employer many moons ago who manufactures PC-add-on boards such as RAID controllers
      [...]
      because a bigger competitors could take that knowledge and turn it into a less expensive product
      [...]
      there were features designed into the hardware ASIC's that should have worked, but didn't.
      [...]
      the company was unwilling to disclose that there were embarrassing design flaws in their hardware, a perception that could have ruined them


      Sounds like your bigger competitor could have been Adaptec. I guess they used the same ASICs. Was the 'race' about circumventing non-functional parts of RAID-controllers ?

      http://hardware.slashdot.org/article.pl?sid=05/03/20/1944233
      http://marc.info/?l=openbsd-misc&m=111118558813932
      http://www.sigmasoft.com/~openbsd/archives/html/openbsd-misc/2005-03/msg01362.html

    37. Re:kinda true by skelly33 · · Score: 1

      Sounds familiar. Yes, Adaptec was one of those big competitors that they were very concerned about. Interesting to see them pulling the same tactics though. I recall at the time that the Adaptec 2850 was pretty much the industry standard and *nix folks just used that when they needed commodity hardware SCSI support. I don't know however if those early drivers were built from information provided by Adaptec or if they were just hacked together.

    38. Re:kinda true by Captain+Sarcastic · · Score: 1

      I was going to moderate this, but like others, I felt it was a better idea to speak my mind (such as it is).

      The first company I worked for had developed the code in a proprietary fashion because, at the time, the owner of the company was afraid that one or more of our clients would take our code and proceed to reverse-engineer it. One of them actually went and hired one of our developers away from us, and during his two weeks notice (he hadn't bothered to mention that he was going to work for said client) he proceeded to take all of our source code and copy it to removable media (5-1/4" floppies, at the time).

      Now, the client knew it was proprietary, and so did the programmer, and the courts did do a pretty decent job of whacking their collective pee-pee for doing it, but the owner decided that the only protection after that was to call it a trade secret.

      On the other hand, how else could we have protected what we had spent years developing? My company had a serious interest in making sure that nobody took our work and proceeded to peddle it to whomever had the wherewithal to use it, and had it not, we'd have risked being out of business in nothing flat.

      --
      Strike while the irony is hot! -- The Freethinker
    39. Re:kinda true by smellotron · · Score: 1

      Elegant but inefficient code is rare outside books.

      I think the entire Ruby on Rails movement would disagree with you, especially those with the attitude of "add servers if performance isn't sufficient". It all depends on the industry you're in: whether time-to-market is more important than performance.

    40. Re:kinda true by Alioth · · Score: 1

      Part of the embarrassment over poor code IS a competitive advantage. Imagine two functionally similar products - one with beautiful code that costs $1000, and one with awful code that costs $800. If the code to both is closed (or even just the code to the $800 product is closed), nobody can differentiate the products on code quality, giving the cheap nasty code a competitive advantage.

    41. Re:kinda true by udippel · · Score: 1

      "The times, they are a-changing ..."

      These days, I think a small provider could gain enough in the 'niche' market of FOSS by co-operating with the developers.

      Slightly OT, but whenever I can, I yell to world and sundry that NOBODY WANTS YOUR SECRETS, NEITHER YOUR (usually shoddy - voilà, back on topic) CODE. WE ONLY NEED TO KNOW THE COMMUNICATION DETAILS !

    42. Re:kinda true by Anonymous Coward · · Score: 0

      There's also the problem of long-term responsibility for it. A classic example is Nagios configuration tools. There are dozens of them, and almost all the open source ones had glaring flaws that should have been corrected in the first month of being open source, but have since become abandonware and make the authors look bad.

      Go look at fruity.sourceforge.net. The original code was decent, fairly clean, easy to work with. But the errors in it are blatant and embarassing, it has root level operations (starting up Nagios) being run by the Apache user, it can't output files that it can import and get back to the same state, deleting certain types of objects from the web interface means you have to go directly into the MySQL database to clean up the mess, all the published patches have been ignored in silence for nearly a year, and it's become abandonware that make the author look like an idiot.

      Thank you *so* much, Mr. Dondich, for wasting my time and giving the closed source proprietary Windows-only monitoring supporters look good. You're just what I needed to create an example of open source creating unsupported, incomplete projects that waste expensive engineer to complete.

    43. Re:kinda true by oglueck · · Score: 1

      Definitely annoying to get phone calls from random people about your unsupported free software. That happened to me too with my infamous LFN Tools, though I didn't even publish any contact information. Scary, those stalkers. I mean I am happy to give some basic support by email. But expecting me to answer silly phone calls... what do these people think?

    44. Re:kinda true by mcrbids · · Score: 4, Interesting

      I've known/seen companies who have indicated a willingness to open-source their code -- meaning that they've thought about the competitive aspects and realize that it's not going to hurt, and might help, them -- suddenly drag their feet at the last minute, or spend months or years "preparing" to open-source their code. I think this is directly related to embarrassment over the poor state of their codebase.

      Yep, here I am. I'm a CTO of a rapidly-growing software company. Our big money maker is a product initially conceived as a "quick project" of a few months' duration and was given similar consideration on design and construction. But it worked! It solved a need at a level that was unanticipated, and now, 4 years later, is satisfying 20x the dataset and 100x the customers originally envisioned.

      And it was not originally designed for this level of scale.

      So, going from a single, solo software engineer, to several programmers, (and growing fast) and developing a rapidly growing suite of products in a rapidly growing company, the cash-cow project remains, alas, solely in my hands.

      Does the product work well? Yes, at least, reasonably well. Users routinely rave about how much time it saves and how it's improved their professional lives. It works well for the problem it solves and the problem is not met effectively by any competitor.

      But, the dirty secret is that it's simply inelegant. It's a bunch of not-well-structured code only organized by a sloppy ad-hoc naming convention and riddled with minor bugs that are fixed quickly and distributed well, but shouldn't exist in a better design in the first place.

      And, once saddled with the code, Code Inertia takes place and it becomes an exercise in how to move to something more sane while doing the following:

      1) Keep the customers happy through multiple upgrades that don't appear any different than original. Introduce features that are obvious just fast enough to make it all seem worthwhile!

      2) Keep the additional costs of development inline with "maintenance level". This cuts the rate of improvement, and also increases the amount of inertia accumulated with #1, since #1 is written to the "old way".

      3) Improve the codebase enough to provide meaningful results demonstrated to the august powers, (this means ROI) and

      4) Clean up the kludge enough to allow for improved pace of future development. You want to get rid of all the uglies, but there are so many since a few of your original, naive assumptions about the problem were simply wrong.

      It's a hard row to hoe, and there's a bit of a "loan" being made, where design decisions early on made to shortcut development woes carry a long-term burden, almost like an interest rate. Since the company has passed the million-dollar-a-year stage, arguing about those original decisions is pointless; the only thing to do now is to figure out how to take what you started with and make it do what you need it to do hereafter.

      I've been working for over a year on a basic design decision change that will close out lots of badness and produce almost an order of magnitude better data integrity. Since starting the project, we've almost tripled in client base, and yet I won't be done for at least another year, if ever.

      I suppose the argument is moot - if I hadn't come up with the original product in time, the whole business would have failed. The company, then on the rocks, would have closed, and it would all be for naught. But, with the compromises made, it can be amazing just how badly inertia sets in.

      Moral? Write the best quality code you can within the budget you have. Always. Because you'll live with a significant percentage of whatever you create, and the future costs of change may well be orders of magnitude more than your initial cost of creation. And you'll never quite know what it is that you end up living with.

      PS: While it might sound like I'm complaining, I'm not! I'm living the dr

      --
      I have no problem with your religion until you decide it's reason to deprive others of the truth.
    45. Re:kinda true by laejoh · · Score: 1, Funny

      Wow, divine revelation, that's deep! Now I understand spaghetti code,

      Ramen!

    46. Re:kinda true by lucifuge31337 · · Score: 1

      I write code to accomplish a task I wanted to do. The code is largely funcional, but may break around end cases or often has poor exception handling.

      Hey....that's why all my code sucks too! Seriously - that's why I don't even bother. If it work for the audience it was intended for, and isn't particularly unique, its a whole lot of work to make it legible, comment it, and actually do all of the proper exception handling that we all know should be there.

      --
      Do not fold, spindle or mutilate.
    47. Re:kinda true by Ben+Hutchings · · Score: 1

      What made you think your competitors' ASICs were less buggy?

    48. Re:kinda true by Subjective · · Score: 1

      oh noes! I didn't get a fully working program for free.
      I had to hack on it a bit!
      I might as well have converted all the systems to Windows just so I could buy that one program

      --
      My other .sig is also this bad
    49. Re:kinda true by budgenator · · Score: 1

      No Ramen is much kinkier than straight spaghetti code!

      --
      Apocalypse Cancelled, Sorry, No Ticket Refunds
    50. Re:kinda true by Skreems · · Score: 1

      Maybe they share that view, but chose to release the code anyway...

      --
      Slashdot needs a "-1, Wrong" moderation option.
      The Urban Hippie
    51. Re:kinda true by NoOneInParticular · · Score: 1

      What you should be doing at this point is to port your results (not the full code, just the main, verified results) to one of the open source EA libraries. If you're using java, try ECJ, if it's C++, try EO (or Beagle, if GP). The developers might help you with the port. It will help you with gaining a better understanding on how your work relates to mainstream research in EA, it will give people a chance to use your new incredible improvements to ML and EAs, and it will give your research a longer halflife than usual.

    52. Re:kinda true by Zoolander · · Score: 1

      Also, quite a few kernel devs write pretty good code.

      --
      Meep.
    53. Re:kinda true by Bert64 · · Score: 0, Redundant

      Ruby code is among the least performant, and often the only solution is to add servers or rewrite it in another language.

      --
      http://spamdecoy.net - free throwaway anonymous email - avoid spam!
    54. Re:kinda true by bzipitidoo · · Score: 1

      Now, the client knew it was proprietary, and so did the programmer, and the courts did do a pretty decent job of whacking their collective pee-pee for doing it, but the owner decided that the only protection after that was to call it a trade secret.

      The courts gave the owner justice, but that wasn't good enough to keep up his faith in the protections of intellectual property law, so he tries to keep everything secret instead. Rather common sentiment, isn't it? Is the owner letting paranoia push him into foolishness, as there are plenty of problems with that route too, or is the distrust of the system warranted because it is broken in a lot of ways? Somewhere in the middle, perhaps.

      --
      Intellectual Property is a monopolistic, selfish, and defective concept. It is "tyranny over the mind of man"
    55. Re:kinda true by GPL+Apostate · · Score: 1

      The 2940 was the industry standard. Never heard of the 2850.

      --
      Microsoft says legacy (serial/parallel) ports are bad. They don't obfuscate the hardware enough.
    56. Re:kinda true by skelly33 · · Score: 1

      ugh - you're right. Too many part numbers floating around in my head these days. That's the one I was thinking of.

    57. Re:kinda true by GPL+Apostate · · Score: 1

      I wanted one of those badly, back when it wasn't economically feasible for me to pay full price. Now I have a box of 'em somewhere here.

      --
      Microsoft says legacy (serial/parallel) ports are bad. They don't obfuscate the hardware enough.
    58. Re:kinda true by anandsr · · Score: 1

      I think you are wrong. I believe that its never possible to write the best code in the first attempt. This means that it is better to always develop in a prototyping mode. It gets you running faster, and that helps you understand how it should actually be done. Later when you know how it should be implemented then move out your most experienced developer from the main code and give him/her the task to re-implement it while also supporting the older one. Since the person already knows the system inside out he will be able to develop it much faster. But again make the new one also a prototype. Because you never know where this new design may let you take it. Also if you try to make a polished software it may take away too much resources and make it a liability.

      This doesn't mean that the software itself can be written in an ugly way. It doesn't really take too much time to write the code decently. Just don't spend too much time including all the features that you think you will need in the future. Just implement as many as you think you need now.

      Most successful open source products work the same way. They focus on the present, and will do a rewrite in the future.

    59. Re:kinda true by Fulcrum+of+Evil · · Score: 1

      Does Coke keep its formula secret because it's embarrassed or because it wants to make its product harder to copy?

      Does Coke keep its formula secret? What advantage do you have producing fake coke? It's fairly cheap to buy, and selling something that tastes like coke under a different name doesn't sound like a good idea.

      --
      "We returned the General to El Salvador, or maybe Guatemala, it's difficult to tell from 10,000 feet"
    60. Re:kinda true by Fulcrum+of+Evil · · Score: 1

      Write the best quality code you can within the budget you have. Always. Because you'll live with a significant percentage of whatever you create, and the future costs of change may well be orders of magnitude more than your initial cost of creation.

      So don't change it - if the cost of change >>> cost of replacement, do that, right?

      --
      "We returned the General to El Salvador, or maybe Guatemala, it's difficult to tell from 10,000 feet"
    61. Re:kinda true by rucs_hack · · Score: 1

      Nice idea. I'll give it some thought.

      late reply I know, busy busy....

  2. duh by Anonymous Coward · · Score: 0

    i run any code through a few versions of indent to make it look like i'm organized

  3. Can't help but agree by illegibledotorg · · Score: 2, Interesting
    Sometimes people make fun of Perl because the code looks like 'line noise.' As a Perl programmer, I resent that. Any code released to the public with my name on it is pristine, well commented, easy to read, and nearly bug free.

    Now, the stuff that isn't released to the public? That's 180dB noisy code. I can relate with what's being said here to a degree.

    That said, I don't think sloppy code it the real reason source stays closed. Big business just thinks it'll make them more money in the long run.

    1. Re:Can't help but agree by GPL+Apostate · · Score: 1

      The sad thing is, there are fewer and fewer of us every day in this modern packetized world who even know what you mean by 'line noise.'

      --
      Microsoft says legacy (serial/parallel) ports are bad. They don't obfuscate the hardware enough.
    2. Re:Can't help but agree by Dachannien · · Score: 3, Funny

      There used to be an Obfuscated Perl Contest (in the spirit of the International Obfuscated C Code Contest). I suspect that the reason they stopped holding the contest is because of the risk of someone inadvertently causing a universe-collapsing paradox with their contest entry.

    3. Re:Can't help but agree by Anonymous Coward · · Score: 5, Funny

      > There used to be an Obfuscated Perl Contest

      I've always wondered how they get the acronym "CPAN" from that. :-)

    4. Re:Can't help but agree by Anonymous Coward · · Score: 0

      "That said, I don't think sloppy code it the real reason source stays closed. Big business just thinks it'll make them more money in the long run."

      I wonder if it's this or if it's more that they worry someone else will make money from it. Leading of course, to trouble for the manager who approved the release and everyone involved with the code originally. "Why didn't you think of this?"!

    5. Re:Can't help but agree by Antique+Geekmeister · · Score: 1

      Nahhh, they stopped it when someone redirected the email address to submit CPAN modules to this project, and the next 3 modules submitted won first, second, and fourth place.

    6. Re:Can't help but agree by Anonymous Coward · · Score: 0

      The article points something completly different.

      Let me give You an example. Your institution buys a six-figure device. The laser printer can be attached to a device but the tradeperson does not give You a list of printers that are "approved". So, you buy best-buy color network laser printer and hope for the best. The device has got two computers - workstations. They look the same but have one or two "functions" that other one does not have. Both run windowsXP for embeded systems.

      Now the fun begins! The printer works flawlessly on one computer, but randomly fails or gives funny results on other. You call service. The service man replies: "You installed the printer (You did not, You have not such privileges on the system - their service personell did that for You) using .exe file. It broke something during instalation on computer B while it worked flawlessly on computer A." Reinstalation of printer drivers did not help, of course.

      Now, that is fishy!

      Buy the way I checked, the system A and system B mention that they use a bunch of Open Source lib's and programs. It does not mention where are the licences and source code.

      Replay if You want names, models, web address, etc.

  4. Prist frost by Anonymous Coward · · Score: 1, Informative

    As a former programmer working as a network administrator now for a medium size financial company, I can confirm that embarrassment is one of the major reasons why programmers do not let me see their code when it works badly on the network. It is a lot easier to say that the network is bad. Thank god we have ethereal/wireshark.

    1. Re:Prist frost by ScrewMaster · · Score: 1

      There's a big difference between a programmer not being willing to show you the code and a corporate suit refusing to allow the programmer to show his code. The coder may be too embarrassed by his work (unless he's unusually thorough and detail-conscious and has an understanding management, the code will suck) but the suit will have not the slightest understanding of coding style and structure ... all he knows is that the code is a valuable part of the company's product (or maybe the only part) and sees no reason to give the competition a leg up. The problem comes in when, because of the suit's inability to judge the true value of the software, he will tend to lock it up on principle even if what's being kept secret is trivial. Or maybe especially for that reason.

      --
      The higher the technology, the sharper that two-edged sword.
    2. Re:Prist frost by Antique+Geekmeister · · Score: 1

      The corporate suit has been conditioned to do this. It's partly the "sooper traid sekrits", but the reason the engineers go along with it to hide the bad code. This is particularly true of lower level project managers, who are often engineers who have been "kicked upstairs" to get them out of technical leadership and were never great engineers. They are people who will protect their own flawed efforts, wrapped around the sterling efforts of their more tecnically astute underlings, to avoid embarassment.

    3. Re:Prist frost by zero_offset · · Score: 1

      Actually I suspect THAT is because programmers have anywhere from little to no respect for most network administrators. Especially the net admins who claim to know how to program. Right or wrong, the always-handy car analogy is that programmers see themselves as anything from ASE-certified techs all the way up to automotive engineers, and network admins are roughly on par with the guy in the oil pit at Jiffy Lube. I certainly know that isn't always justified with today's large and very complex networks but nonetheless, that's the perception.

      Literally no flame intended, I'm just making an observation based on knowing hundreds of programmers over the past 30 years...

      --

      Slashdot quality declines as the number of hot grits posts decreases. - Provolt's Law, Apr-09-2005

  5. Two reasons... by Kjella · · Score: 5, Interesting

    1. What others don't know, won't hurt you. Any improperties in the code, any patents violated, any sarcastic remarks in the source - if you don't release source, they won't see it.
    2. If you can't see it, you can't take it. Most companies would like to get paid, and the honor system is short on honor. One thing is corporate software - but are you really going to go into people's houses and see if they have a pirated version of Photoshop? Not going to happen, so they design up all sort of serial numbers and activation and whatnot that's incompatible with showing source - you'd just comment out those bits.

    --
    Live today, because you never know what tomorrow brings
    1. Re:Two reasons... by ShatteredArm · · Score: 4, Insightful

      I think #2 would be the major reason here. It's not just to hide "bad code". Why would you put all kinds of money and resources into your work, just to have someone else take it and profit off it after just a few tweaks? It's like asking, "Why doesn't Coca-Cola release their secret recipe?" Is it because it's bad?

    2. Re:Two reasons... by SnoopJeDi · · Score: 1

      all sort of serial numbers and activation and whatnot that's incompatible with showing source - you'd just comment out those bits.


      What's stopping them from compiling the important our-eyes-only stuff into an executable and putting the rest of the magic in a library which is released?

      I mean, games come with the same sort of copy protection, but almost every mainstream game has an SDK that allows you to modify the game code (which is housed in a linked library) without scratching the surface of anything in the engine (the Sooper Duper renderer, the copy protection, etc. etc.)
    3. Re:Two reasons... by Unoti · · Score: 4, Insightful
      What's stopping them from compiling the important our-eyes-only stuff into an executable and putting the rest of the magic in a library which is released?

      More improtantly, what's there to motivate them to do that? It's extra work for development, extra work for support, longer time to market, more risk of malfunction compared to just writing the code naturally. And what's the benefit? If I were managing a programming that wanted to do that, I'd ask him what the benefit is for this extra work and complexity, and if he didn't have an answer, I'd tell him to focus on what's important and get this product out the door without goofing off.

    4. Re:Two reasons... by Anonymous Coward · · Score: 0

      "What's stopping them from compiling the important our-eyes-only stuff into an executable and putting the rest of the magic in a library which is released?"

      That's the dumbest fucking thing I've ever heard.
      And games try to curb piracy with hardware (why mod-chips are needed), computer software doesn't have that luxury.

    5. Re:Two reasons... by ToasterMonkey · · Score: 1

      just to have someone else take it and profit off it I believe you can do that just as illegally without the source.

      As for the recipe, who knows, maybe there is something in there we DON'T want to know about ;)
      Anyway, it may only be protected as a trade secret, and not by copyright law and probably a slew of other laws that source code could be.
    6. Re:Two reasons... by maxume · · Score: 1

      Coca-Cola doesn't release their secret recipe because it is good branding; a couple of guys with some money and equipment could replicate it in a couple of weeks, at worst.

      People benefit from others hard work all the time, or did you never learn anything in school(which is generally where you learn a bunch of stuff that fools have published throughout history)?

      --
      Nerd rage is the funniest rage.
    7. Re:Two reasons... by fymidos · · Score: 1

      code is protected by copyright law, coca cola recipe is not.

      --
      Washington bullets will simply be known as the "Bulle
    8. Re:Two reasons... by ShatteredArm · · Score: 1

      You can do it illegally without the source, but it will take a heck of a lot more work than it would if you have the source. Tweaking source code and selling it is a little bit easier than reverse engineering, or rebuilding from scratch.

      As far as how Coca-Cola recipes are or aren't protected, that's irrelevant. Even if you can't protect your recipe the same way, they'd want it protected for the same reason. And that's what this discussion is about: why they'd want to protect their source code.

    9. Re:Two reasons... by Chmcginn · · Score: 1

      "What's stopping them from compiling the important our-eyes-only stuff into an executable and putting the rest of the magic in a library which is released?"
      That's the dumbest fucking thing I've ever heard. And games try to curb piracy with hardware (why mod-chips are needed), computer software doesn't have that luxury.
      Um, you do realize that many games are PC-based, yes? And those are what he's obviously talking about... For example, in Unreal-engine based games, it's generally possible to modify the level/texture/item libraries. (Not entirely sure how someone would port that idea to Photoshop, though.)
      --
      Have you been touched by his noodly appendage?
    10. Re:Two reasons... by WNight · · Score: 2, Insightful

      I get your point, but modularizing your code is hardly ever a waste.

      Technically it's usually a win for complexity alone - two smaller pieces are easier than one large one. But then there's the benefit that once all your heavy-lifting is nicely wrapped up, you can start coding the rest of your app in Python or something much nicer than C/C++.

    11. Re:Two reasons... by Anonymous Coward · · Score: 0

      Why would you put all kinds of money and resources into your work, just to have someone else take it and profit off it after just a few tweaks?

      I worked at a big company developing software which supported the engineers who built the actual product. We made no money from it. It was absolute crap, for reasons mostly out of our control (management mandated libraries and protocols we had to use internally, for example, and they were often 10 years old, unsupported, and/or undocumented). We would have been 100x better off if we could have made it open-source, or even started with an existing open-source project that did only 1/2 of what we needed.

      And no, somebody else could not have just picked it up, made "a few tweaks", and built our products. It was one tool (out of dozens) that our engineers used, and none of our company's engineering knowledge was part of the tool. We built extremely specialized things which cost a lot of money, so a garage startup wasn't a threat, either. Besides, we had a dozen people who needed to do a couple hours of work just to release one new version internally.

      Our competitors would likely have little use for it, either. It would have been far more work for our competitors to migrate to our tool, than to simply write their own (and vice versa).

      It's like asking, "Why doesn't Coca-Cola release their secret recipe?" Is it because it's bad?

      Never!

    12. Re:Two reasons... by fyoder · · Score: 1

      There actually is an open source cola

      I suspect a large part of the reason for Coka-Cola keeping the recipe secret is marketing, the mysterious allure of secret recipes, secret herbs and spices, and how do they get the caramel into the Caramilk bar? Open sourcing it wouldn't lead to reduced sales from people making their own, as it's a pain in the butt, and their competitors (esp. Pepsi) are looking to do their own thing and are also engaged primarily in a marketing game.

      I'm not sure a secret cola recipe analogy works with regard to something as complicated as source code. If you could take the cola recipe, configure, make, and make install it into the fridge all from the command line, then Coke would have something to actually worry about. And, being Slashdot, it's more traditional to use a car analogy, perhaps something about McLaren stealing Ferrari's secrets or something like that.

      --
      Loose lips lose spit.
    13. Re:Two reasons... by fyngyrz · · Score: 2, Informative

      code is protected by copyright law

      So are music recordings. And we all know how well that's worked out, right?

      As an earlier poster said, with precise insight: "The honor system is short on honor." We know this. There is no possible doubt about it. And with open source, it only takes one person to steal something in literally seconds that took many years to develop and hone. This is the reality that commercial developers have to live with.

      Speaking as a closed-source, commercial software vendor, I can say with absolute authority that the cleanliness of our code, the presence or quality of comments in it, unethical use of other people's code - these issues have absolutely no bearing on why we're closed source. We're closed source because we do have algorithms that others do not have, particularly in image morphing and geometrics areas; we do gain a competitive advantage from these.

      There is no open-source project that offers capabilities even remotely comparable to those we offer. The gimp takes a vague stab at it, but the present release version offers a fraction of the features while weighing in with a considerably larger executable. That double disparity - larger executable and significantly lower feature count - is one way you can get an immediate feel for the quality of algorithms.

      That smaller executable and some of the techniques we use with plug-ins, etc., also helps us load and get initialized faster and that in turn means our customers can get to work faster. This advantage could easily lost if other people gain access to our algorithms. In the case of features no one else even has, letting that source code out would be outright poison to our competitive advantage.

      Personally, I think the thesis of the FA is largely bankrupt. And copyright is a joke. As soon as you have to go to court, you've pretty much lost. The only winners there are lawyers and companies so large that legal expenses are lost in their revenue stream, and nothing any court does can stem the tide of underground software (and music) distribution anyway, short of shutting down the entire Internet. I consider the act of giving a lawyer money to be an ethical failure. As the owner of five businesses, I do it more often than I'd like to admit, but I dig my heels in all the way when I can. When it comes to protecting 22 years of carefully tweaked original source code, I'm certainly not going to hand the responsibility over to the copyright and patent clown brigades. Trade secret may have its warts, but Johnny Scriptkiddie running off with your work isn't one of them.

      --
      I've fallen off your lawn, and I can't get up.
    14. Re:Two reasons... by SL+Baur · · Score: 1

      are you really going to go into people's houses and see if they have a pirated version of Photoshop? Speaking of Photoshop and this topic, perhaps the worst boss I've ever had with respect to keeping code proprietary thought nothing of the matter of having his son use pirated Photoshop (or stealing other programs). I wrote some great code for that man, I (almost[1]) wish it was still alive.

      [1] Not really. It was hosted on SCO Unix and I'm glad SCO Unix is DEAD, DEAD, DEAD.
    15. Re:Two reasons... by msuarezalvarez · · Score: 2, Insightful

      code is protected by copyright law

      So are music recordings. And we all know how well that's worked out, right?

      Hmm, how? Have all artists starved to death, production and distribution companies collapsed, and is music no longer being created and played because the economic incentive has disappeared?

    16. Re:Two reasons... by vertinox · · Score: 1

      I think #2 would be the major reason here. It's not just to hide "bad code". Why would you put all kinds of money and resources into your work, just to have someone else take it and profit off it after just a few tweaks? It's like asking, "Why doesn't Coca-Cola release their secret recipe?" Is it because it's bad?

      In a perfect world, your code would be copyrighted, but everyone have the ability to see your code at the copyright office database. However, everyone else would have the same requirement so it would be easy in theory to find out who stole your code in their product and drag them into court.

      The whole issue around IBM vs SCO was something along the lines of:

      SCO: You stole our code and we have proof!
      IBM: OK. Let me see your code that you thought we stole so we can compare in front of the judge!
      SCO: No! Its proprietary!
      IBM: But if we can't see the code you said we stole, then how can you prove that we stole it to the court?
      SCO: That's not the point!

      If everyones code was out in the open then we wouldn't have this problem because we'd know what they stole. Hell... If your code was made public when copyrighted then I'd say software patents are fine and dandy because your idea of a certain way to code something is valid and deserves actually deserves patent protection.

      However, I doubt this would ever come to pass in my life time.

      --
      "I am the king of the Romans, and am superior to rules of grammar!"
      -Sigismund, Holy Roman Emperor (1368-1437)
    17. Re:Two reasons... by goslackware · · Score: 1

      I believe main reason is: that companies believe the FUD and myths about releasing their source. The two above points are don't hold true because of the art of reverse engineering. Go read: Exploiting Software http://www.cigital.com/books/expsoft/

      Killing aboves point 1: there are still law suits even though only the binary was released.

      Killing aboves point 2: It easier to get a crack patch for any software, max time to do this 2min, than it is to be reading the source code and trying to figure out what does and doesn't need to be changed. Most crack patches just put in a jump command to skip the serial authentication, which has the same effect as commenting out the source, except you don't need to waste time compiling as well.

    18. Re:Two reasons... by Paperkirin · · Score: 1

      Re. comments in the code, see the comments excised when Netscape 4 was open-sourced. Swear words, 'Mac OS/Unix/Windows sucks!' comments, and other stuff that was taken out before Netscape would dare release the source.

    19. Re:Two reasons... by digitig · · Score: 1

      I get your point, but modularizing your code is hardly ever a waste.

      Technically it's usually a win for complexity alone - two smaller pieces are easier than one large one. I suspect that's true, because I suspect code that hasn't been properly designed in advance is usually insufficiently modular rather than excessively modular. But it isn't always so (you caught that in your hardly ever) because the reduced internal complexity of those two pieces is set against increased boundary (interface) complexity. There comes a point when further modularisation actually starts to complicate things again (that's the real complexity, the difficulty in comprehending the program, rather than artificial measures like cyclometric complexity which aren't usually what you're really worried about).
      --
      Quidnam Latine loqui modo coepi?
    20. Re:Two reasons... by kimvette · · Score: 1

      Oh, they list the stuff we don't want to know about, like HFCS instead of sugar. :(

      What I can't stand is the "natural flavors" catch all on foods. Is it vanilla? Is it anise extract? Is it licorice? Or, is it an allergen like MSG from soy? For folks with food allergies, a wildcard like "natural flavors" is like Russian Roulette.

      There is a BIG difference between revealing code and revealing what is in food. Some ingredients can KILL people. Keeping Photoshop proprietary will not ever kill anyone, nor will it even ever give anyone an upset tummy or a migraine or hives.

      Bad analogy.

      --
      The Christian Right is Neither (Christian nor right). See: Matthew 23, Matthew 25, Ezekiel 16:48-50
    21. Re:Two reasons... by fyngyrz · · Score: 2, Insightful

      Have all artists starved to death, production and distribution companies collapsed, and is music no longer being created and played because the economic incentive has disappeared?

      No, all the artists have not starved to death. However, that is a very poor metric for the state of the musical community.

      The fact is, a lot of artists don't make it because the barriers to financial success — not to making a recording, mind you, but to financial independence so one can actually spend pressure-free creative time making music — are now much higher. That's why the radio is filled with utter pop trash; that's why bands *must* tour instead working in the studio, creating new music, that's why recordings are lowest common denominator compressed to the roof, so that every radio station and every moron DJ can have music that is "just as loud" as the other guy.

      Sure, you have "music." But you don't have very many great studio bands (at least, unless they were already great studio bands, like Pink Floyd, Rush, Emerson Lake and Palmer, and so on.)

      And what is really sad is the people who were raised on this utter crap... they don't even know any better.

      In 1970, if ten thousand people had your recording, it meant that pretty close to ten thousand sales had been made. Today, it means that pretty close to ten thousand people with an Internet connection have copied it with no funds flowing back in your direction. That's not a good change, and that has primarily happened because technology enabled it, and copyright law and enforcement is as toothless as a 2-bit crack whore.

      In 1970, you'd have made a few tens of thousands of dollars, you'd be at least encouraged, and you'd probably have a raft of new equipment or at least some studio hours paid for. Today, you'd have nothing. In the case where the music is good, but the audience is small, you're really screwed, because you're never going to make enough to survive. You know who makes enough to survive? Britney Fucking Spears, that's who. And the rest of her ilk. Because she's mainstream, and despite the copying, just as you imply, she does fine.

      And by the way, I'm a studio musician and a recording engineer as well as a guy who owns tens of thousands of recordings and eleven different high end audio systems to play them on. I also own a literary agency where our authors totally depend on copyright still working (only what it really is, is book copying is still very annoying to end users) so they can sell books. I've been paying close attention to copyright and anti-copyright viewpoints for decades now. Copyright stops working the day technology enables the end user to walk around it less expensively than obtaining a legitimate copy of a work. As a law, it never meant anything. It just felt like it did, because the technology was a higher barrier to cross (for instance, in 1970, if you were copying high fidelity audio, you owned a reel to reel, because that was the only high fidelity medium available at the time.)

      --
      I've fallen off your lawn, and I can't get up.
    22. Re:Two reasons... by alien9 · · Score: 1

      No, Atlanta kings don't want to release coca code simply because the 'coca' secret component. It is a small question with the law. Did you really think the addiction can be credited to sugar, huh?

    23. Re:Two reasons... by SnoopJeDi · · Score: 1
      Just to clarify, I understood this when making my comment, but I was trying to clarify that you don't have to release everything to release some source (the parent to my original comment seemed to suggest that this was an all-or-none situation).

      What's the benefit?


      Approaching it from the game standpoint (really the brunt of my programming experience; yes, I know I'm novice), the benefit of giving the community the ability to modify the game code means your game has more selling value. Prime example: Counter-Strike. Of course, I'm slightly biased myself, because I worked on Classic Doom 3, but people told us all the time that they re-installed Doom 3 just to play our mod. Sure, the company wasn't making any more money off it, although perhaps people who had re-installed it then decided to buy the Resurrection of Evil expansion when it came out. Who knows?

      Now, obviously the same principles don't apply, but opening up the source would make it possible for the community to get involved in bettering the project (note the bold; it wouldn't make it magically happen, it takes initiative). Don't like the way Program A does B or how C is handled? See if it's in the non-proprietary closed-source bit, and try to modify it. There are probably people out there who want exactly what you want. Hell, if you get enough support, the company might take notice and do something about it.

      But I see what you mean about waste. I don't think it's a problem with the work invested in it (in fact, that would encourage programmers to take on better practices to make the pieces fit snugly), it's a problem with the fact that the people who would actually get involved are a minority. That's where the 'waste' is.
    24. Re:Two reasons... by Anonymous Coward · · Score: 0

      "so one can actually spend pressure-free creative time making music -- are now much higher"

      Um, if you measure success by being independently wealthy then there are very very VERY few people in the world who are successful in your definition. Why the hell would I care about 'artists' being able to spend 'pressure-free creative time' when I don't have that luxury, and neither does anyone I know? I may sympathize with how they are forced to serve corporate masters, but hey join the freaking club.

      Britney Spears, pop radio, great studio bands, may you ramble on. Here's the truth - it's never easy becoming financially independent, people don't measure music quality the same way you do, and whining about the great unwashed not having your exquisite taste (oh yeah Rush is art at its highest) just makes you whiny not the elite you think you are.

    25. Re:Two reasons... by tjanke · · Score: 1

      That's exactly what MusicIP does with MusicBrainz - most of their code is open, but they keep part of it closed, and provide that as a binary.

      --
      Cheers, Tim -- Tim Janke Part mad scientist, part lion tamer: sr. software engineer, global team leader, project mana
    26. Re:Two reasons... by Antique+Geekmeister · · Score: 1

      Nothing, if it's a BSD license. GPL stops it in a legal sense, though not a technical one.

    27. Re:Two reasons... by AaronLawrence · · Score: 1

      Sorry, number two mistake that new(ish) programmers make, behind not being modular enough, is getting excited and being TOO modular. They abstract everything away and create a huge edifice that bears no obvious relation to the original problem being solved. Sometimes this happens because it's their second project and they are determined not to make a mess like the first one, sometimes it happens because they're fresh out of school and want to apply all the wonderful principles.

      Learning to strike a balance is, IMO, a very important part of a software developer's experience.

      And adding a whole layer just for the convenience of releasing open source is certainly NOT such a balance, unless those "secret" parts are naturally isolated.

      --
      For every expert, there is an equal and opposite expert. - Arthur C. Clarke
    28. Re:Two reasons... by Bert64 · · Score: 1

      Is their recipe really secret? The ingredients at least are openly disclosed on the back of every bottle.
      I would imagine they also have to disclose all details to the government, before the product can be approved for sale.
      I can't imagine it would be too hard to work out how coke is made, and replicate it.

      --
      http://spamdecoy.net - free throwaway anonymous email - avoid spam!
    29. Re:Two reasons... by Dr_Barnowl · · Score: 1

      Reminds me of an episode of TNG....

      Troi asks the replicator for something containing an disgustingly indulgent amount of chocolate

      "This station is configured to produce foodstuffs that fit within healthy nutritional parameters. Are you sure you want to ...?"

      The replicators on the Enterprise-D obviously run LCARS Vista....

    30. Re:Two reasons... by WNight · · Score: 1

      Abstraction and modularization aren't necessarily related. Abstraction is writing a translation layer of sorts, and that will get big. Modularization can be as simple as refactoring a large class into a parent + derived class or writing shorter functions.

      Some programs can be designed up-front, others need to be prototyped and developed interactively with the users. Some things like separating AI from rendering are a no-brainer, others need to be based on code-smell as you go.

    31. Re:Two reasons... by Fulcrum+of+Evil · · Score: 1

      The fact is, a lot of artists don't make it because the barriers to financial success -- not to making a recording, mind you, but to financial independence so one can actually spend pressure-free creative time making music -- are now much higher.

      They're actually lower. You can get a recording studio put together for $10k or so (or you can write music with a couple guitars and some rented space).

      That's why the radio is filled with utter pop trash; that's why bands *must* tour instead working in the studio, creating new music, that's why recordings are lowest common denominator compressed to the roof, so that every radio station and every moron DJ can have music that is "just as loud" as the other guy.

      No, it's the labels. They insisted on pop trash that sound like whatever was successful last year and wanted the album to be louder (because people rate those higher). Bands that are signed have to tour because that's the only way to make money - record deals suck. Bands sign because that's the only way to get heard, unless you go the mp3 route.

      In 1970, you'd have made a few tens of thousands of dollars, you'd be at least encouraged, and you'd probably have a raft of new equipment or at least some studio hours paid for.

      Nah, you'd have $1600 paid off of your advance. Regardless of what you're trying to prove, the mp3 scene is far better for most artists than what they had in the 70s - you can get your music out to millions and then go on tour (where the real money is).

      You know who makes enough to survive? Britney Fucking Spears, that's who. And the rest of her ilk. Because she's mainstream, and despite the copying, just as you imply, she does fine.

      There are exactly two or three of her at any given time - manufactured crap. Don't go after that because you'll never get there by being any good. You can get popular locally playing small venues, but I have no idea how to break into the big time without signing.

      --
      "We returned the General to El Salvador, or maybe Guatemala, it's difficult to tell from 10,000 feet"
    32. Re:Two reasons... by Fulcrum+of+Evil · · Score: 1

      "This station is configured to produce foodstuffs that fit within healthy nutritional parameters. Are you sure you want to ...?"

      Like the computer is stupid enough to get between a woman and chocolate...

      --
      "We returned the General to El Salvador, or maybe Guatemala, it's difficult to tell from 10,000 feet"
  6. It goes back too... by iknownuttin · · Score: 5, Informative
    American Airlines and their Sabre booking software. AA had a tech edge back in the 70's with their software. Other airlines actually rented, not licensed, AA's software.

    In a nutshell, I think corps think that their software is soooo competitively important, that they don't want to release it - regardless of how bad it is.

    --
    I prefer Flambe as apposed flamebait.
    1. Re:It goes back too... by darkmeridian · · Score: 4, Informative

      Sabre was crucial technology that kept AA at the head of the pack. The system was quick and assigned the quickest available flight to each passnger. Sabre began as a military system for assigning interceptors to incoming targets, but there was clearly an application to assigning passengers to planes. Sabre eventually got spun off into its own company. Travelocity is based on SABRE technology.

      Another reason for secrecy is that SABRE was used to manipulate rankings to favor American Airlines flights over others. This eventually got outlawed by the federal government as unfair competition.

      --
      A NYC lawyer blogs. http://www.chuangblog.com/
  7. Often companies can't release it for legal reasons by AaronW · · Score: 5, Informative

    A lot of software contains proprietary libraries or other pieces of software provided by 3rd parties, which they are not allowed to distribute. It can be a huge job to strip or re-write those libraries, like what Sun had to do with Solaris, and if it's old software, it just isn't worth their time.

    --
    This post is encrypted twice with ROT-13. Documenting or attempting to crack this encryption is illegal.
  8. Sometimes it doesn't help by Anonymous Coward · · Score: 0

    850*77.1

  9. Been there. Seen that. Got the T-shirt. by thatskinnyguy · · Score: 3, Insightful

    Some of the proprietary code that I've seen is like a beater car:
    -Held together with duct tape and bondo
    -Only works by the hand of God
    -Looking at it is an example of several works in progress from several different people

    Yes. Companies that do that have a right to be embarrassed.

    Then again, I've seen the other side of the spectrum where the proprietary code is "SOOPER" efficient and works better than any out of the box solution. Isn't that why you do things in-house to begin with?

    --
    The game.
    1. Re:Been there. Seen that. Got the T-shirt. by dc29A · · Score: 3, Insightful

      It is much worse than that in my opinion. I had to recode many parts of this ancient yet very important financial application. You wouldn't believe the horrors in that code. Goto galore, single threaded server components, buffer overflows and whatnot. However, that was nothing compared to the plethora of security deficiencies. Database root user with blank password for one. Absolutely no auditing. Everything sensitive transmitted in clear text. Insane amount of business logic bugs. If this company releases this source code, it closes shop next day because people would realize how insecure their software is.

      Another application I worked on, had vendors dictate features and managers (without any technical background) gave us encryption routines. Worse than hacks, retarded XOR and shift routines that a 2 year old could crack. These same managers have used really badly coded RadioactiveX components made for browsers as a "high performance" server component. And of course they wonder why their servers can't take any load.

      Embarrassment is probably a good reason why companies withhold source code, but I think it's more the fear of losing business over extremely shitty and insecure software is their primary concern.

    2. Re:Been there. Seen that. Got the T-shirt. by durdur · · Score: 1

      Yes, sometimes the Crown Jewels is something that's been optimized to within an inch of its life. I've seen some examples.

      But even if it isn't, and is a pile of cruft, it may be a pile of cruft that took years to write and is not something a competitor can easily duplicate. So keeping it under wraps could still give you an advantage.

    3. Re:Been there. Seen that. Got the T-shirt. by CaptDeuce · · Score: 1

      Some of the proprietary code that I've seen...

      Code? I don't need to see no stinkin' code!

      There's plenty of software out there are like Taun Tauns -- they smell bad enough on the outside. For instance, after finally getting into a BIOS setup screen (hold down which the F-what ke... damn, too late), do you really need to see the code to know what it smells like?

      --
      "Where's my other sock?" - A. Einstein
    4. Re:Been there. Seen that. Got the T-shirt. by thatskinnyguy · · Score: 1

      Just wondering, did any of those companies have any problems with corporate espionage? If not, they're damn lucky.

      --
      The game.
    5. Re:Been there. Seen that. Got the T-shirt. by Anonymous Coward · · Score: 1, Insightful

      If you look at smaller financial organisations today, you probably aren't going to find much of a better situation, focus is on implementing feature X that will make the company X million by making some users life somewhere easier, and doing so quickly. For some reason in house developers usually go as far as ensuring that there is some sort of authentication going on (whether its a user and password table in access, windows authentication or whatever) but leave it at that, no encryption of either communications or data.

      Most of the kit I have looked at involves some MSAccess kludge on a file share that will happily let you hold shift on start to log in, or database servers that either require no authentication, or have a single user for everything. Security is often simply a matter of ensuring that there is a firewall operating correctly and that people have their own name and password, internal threats that don't rely on someone either printing all the data out and leaving, or copying stuff onto a USB key are seen as unlikely and are not a priority, emailing vast quantities of confidential info is seen as OK (as long as you get the email address right) without any security because there is a lack of understanding as to how easily and undetectably things can be compromised. Of course these are the same small organisations that then happily install wireless networks to save on cable infrastructure. Not good.

      The COTS software available for these organisations is no better either (its prettier) and the IT systems that are in use in general are a joke, mainly because of the way company's grow, and the lack of planning or consideration from the start.

      Sorry about the anon post, but this issue is a little close to home.

    6. Re:Been there. Seen that. Got the T-shirt. by shippo · · Score: 1

      I used to work as a contractor at a major financial institution with some really embarrassing share trading software. I only saw the test/QA network, which was a mirror of the production system, comprising of several large Sun boxes running I believe Solaris 7, but the production system was virtually the same, only with even more servers. The software on each server comprised of hundreds of processes, all compiled STATICALLY against the same huge CORBA library. Whoops!

    7. Re:Been there. Seen that. Got the T-shirt. by Anonymous Coward · · Score: 0

      I concur - I was trying to extract data from one of the most widely used medical records software packages in Australia for clinical auditing purposes. This was unsupported by the ISV, so with the clients permission I investigated the database the information was stored in and found it was completely insecure. Anyone who can access an unprivileged account at a GP (doctor's surgery) can read unencrypted (although slightly obfuscated) medical records - no doubt this company would lose a lot of clients if their source code was available.

    8. Re:Been there. Seen that. Got the T-shirt. by smellotron · · Score: 1

      ...single threaded server components...

      You should be happy they didn't even try threading, judging by your opinion of their general skill level. Anyways, "single-threaded" by itself isn't strictly a bad thing. The best I/O throughput can be done with single-threaded asynchronous-I/O apps, where you can completely avoid context switches from threads and mutices (mutexes?). Though I doubt this was the case in your example (^:

  10. A deep thought by ILuvRamen · · Score: 1

    You know, not all code looks or works so pretty on open source proejcts either cuz there's always people that write bad code. But guess what happens then...someone says "well that's crap" and fixes it. You can't fix a ton of code when you're just sitting on it.

    --
    Google's Super Secret Search Algorithm: SELECT @search_results FROM internet WHERE @search_results = 'good'
    1. Re:A deep thought by ClosedSource · · Score: 1

      The problem is that sometimes the "fix" introduces a bug. Working code shouldn't be "fixed" until all the bugs have been corrected first. The criteria for "crap" code is often more religious than objective anyway.

  11. "Trade Sekkrits, Sooper Original Algorithms" by rueger · · Score: 2, Insightful

    God. My question is who would want to attribute their name to juvenile mis-spellings of common words like that. Really, there's no secret why commercial operators would keep their code secret, no need for speculation. It's a business! If you can do it, and your competitor can't, then you make money and win.

    1. Re:"Trade Sekkrits, Sooper Original Algorithms" by Sique · · Score: 3, Interesting

      I wonder why SAP is still in the business of ERPs then. SAP's R/3 code is open (but not freely distributable). If you are interested in the inner workings of SAP's R/3, log in with developer priviledges (or just SAP*), fire up the R/3 builtin debugger and look how the code is actually working.

      Yes. You can build a successful business with proprietary code and still show it to the world.

      --
      .sig: Sique *sigh*
    2. Re:"Trade Sekkrits, Sooper Original Algorithms" by Oligonicella · · Score: 1

      You'll note he didn't say you couldn't compete doing what SAP is doing, only that a business that can keep a better process to themselves has an edge. What's your point?

    3. Re:"Trade Sekkrits, Sooper Original Algorithms" by Anonymous Coward · · Score: 0

      he's nothing but another open source shill.
       
      these guys think their code is superior because it's open but look at the products themselves in action and you'll see who has the superior product.

    4. Re:"Trade Sekkrits, Sooper Original Algorithms" by Anonymous Coward · · Score: 0

      fuck off asshole windows clickaround. I bet you've never written one line of code apart from your gay homoEmo myspace page that you call "codez". You should really give up using your pirated versions of photoshop because you'll never be any good at drawing a straight line. Maybe if you spent less time sucking on proprietary software cock and actually paid attention to your machine, it wouldn't be part of a botnet because you forgot to update your pirated version of Norton Antivirus. Must suck having a shitty half functional computer because you insist on using insecure, buggy programs because it's proprietary. And since you like having the cock given to you where ever microsoft et al. want to stick it maybe you should get a mac. At least it's secure and pretty rather than your garbage pale green Windowz XP/Vista. Come back to me when you can say you actually get work done on your machine without having to pirate a copy of microsoft office.

      FAG!!!

    5. Re:"Trade Sekkrits, Sooper Original Algorithms" by Sique · · Score: 1

      Of course I note that. But I just doubt a little that it actually makes sense for the majority of software vendors to keep their source secret. Source code is protected by copyright law, and thus obfuscation by compilers doesn't add much of protection to it.

      --
      .sig: Sique *sigh*
  12. Duh by styryx · · Score: 3, Funny

    It's obvious why code is closed source; it's a security matter. You seem to be forgetting ignorance is strength.

    (No, really, it was all sarcasm.)

  13. There should be a change in copyright law by Anonymous Coward · · Score: 0

    In order to get a copyright, you should provide compilable source code in a standard language. Not only would that allow the end user to actually do something with it if there is a severe bug or if the program is not supported any more, but it would be a lot easier to check for copyright infringement.

    1. Re:There should be a change in copyright law by ajs318 · · Score: 1

      Or, just make it law that software be distributed in Source Code form. Absence of source code does nothing to prevent unauthorised copying. It just makes it a lot harder for users to (1) know what is going, (2) fix problems and (3) adapt the software to their established workflow instead of the other way around.

      --
      Je fume. Tu fumes. Nous fûmes!
    2. Re:There should be a change in copyright law by CastrTroy · · Score: 1

      And every car should be shipped with a full schematic for each and every part of the car. As well as documenting the complete manufacturing process. Who cares if the competing car company then uses all that technology you took years to develop.

      --

      Anthropic principle: We see the universe the way it is because if it were different we would not be here to see it.
    3. Re:There should be a change in copyright law by goslackware · · Score: 1

      A full schematics..... That would be great!

    4. Re:There should be a change in copyright law by ajs318 · · Score: 1

      It's not that long since they all did.

      Here's a thought: instead of fighting with a dozen other wolves over a sheep, why don't you go and chase a deer or something?

      --
      Je fume. Tu fumes. Nous fûmes!
  14. Don't forget NIH syndrome by $RANDOMLUSER · · Score: 3, Insightful

    Then there's the Not Invented Here effect. Need B-trees? Don't buy a third party implementation, 'cause that costs money, and don't use an open source one, 'cause it's encumbered with GPL, just write your own b-tree library. Of course, it's not as pretty and bug free as the other implimentations, but it's OURS; and yeah, it would be embarassing to let other people see how crufty it is. I think this is one of the secrets of Java's popularity, most everything is built in already.

    --
    No folly is more costly than the folly of intolerant idealism. - Winston Churchill
    1. Re:Don't forget NIH syndrome by thsths · · Score: 1

      > just write your own b-tree library.

      It it were only happening with B-trees. I have seen projects that even ignored libc, and had their on memory management, special logging and tracing routines, and even time zone conversion.

      Of course sometimes the API of libc is rather cumbersome, but the code is still hard to beat.

    2. Re:Don't forget NIH syndrome by fyngyrz · · Score: 4, Insightful

      It it were only happening with B-trees. I have seen projects that even ignored libc, and had their on memory management, special logging and tracing routines

      We have our own memory management; we do it because it allows us to ensure that there are no memory leaks, anywhere, ever. We have our own linked list management because it is a fraction of the size of the alternatives and does exactly what we need. We have our own file dialogs (and treeview dialog logic) because the OS offerings were buggy for almost a decade. We have our own JPEG routines because we need to load all manner of proprietary and oddball JPEGs. We have our own tree structure code for our ray tracer, particle systems and so on because we can make really big trees and unless we control the memory allocation, the tree becomes too fragmented in memory for it to be handled efficiently. I could go on like this for quite a while. In short, though, there are some very good reasons to skip over the canned solutions. And that's assuming that the canned solutions work perfectly, as described.

      When one of your operating platforms is Windows, you either learn to do for yourself or you end up with a buggy application, because Windows itself is prone to long term unfixed (and sometimes unfixable) problems. Write your own code and you can eliminate the problems. That's a pretty strong motivation.

      Code in libc may be hard to beat when it comes to doing what that code does; but who is to say you need exactly what libc offers? Memory management is a good example. We require firewalled memory boundaries, cumulative usage tracking by routines and by blocks of routines, named memory groups, live overrun detection, dead pointer detection, real-time and post-run logging. And the code has to be really, really good... if there's a bug, we can't wait for the libc maintainer(s) to fix it. With these kinds of needs, pretty soon you end up writing code. It's pretty straightforward, really.

      There's a competitive advantage, too. If a bug is found, your turnaround time can be measured in hours if it is in your own code. For every bug that turns out to be a consequence of an OS or otherwise "not your code" library, bugfixes are much more likely to take longer or simply be impossible. Example? We can process streams of image frames. MS's file dialog let you select many files at once. Seems like a natural fit, right? Click on one file, shift click on another, you've got a block, we should process them. Winner! Well, yeah. But.

      If you selected more than about 100 files, MS's file dialog would fail to properly terminate the returned file names, and cut off the last one arbitrarily. Leading to all manner of things, not the least of which was not the behavior that the user was trying to achieve. But wait, there's more! Unless the customer, completely unintuitively, selected the last file first and the first file last, the files would be provided to us by the OS out of order. So? (I hear you thinking.) Just process them in the other order, right? Well, yeah, but the first file in the list we got would be mangled in the natural order. And besides, it wasn't the first one the user selected, just a mangled file name somewhere around number 100 or so. What a mess.

      We complained to MS for years about these things without result, until I had simply had enough and wrote our own file dialog. End of problem. Now it just works. Plus, since I was writing it anyway, I did it so the file dialog offers tree views, thumbnails, properties, regular expressions, file management, clipboard tricks, you name it.

      No, it wasn't perfect first time out the door, but within a few weeks of release, the customers had ferreted out the weak points and they were all fixed and the working application was back in the customer's hands. I haven't seen a bug report on the file dialog in years now. But if I do... I'll put that bitch down like a KKK'er at an MLK rally.

      It isn't wasn

      --
      I've fallen off your lawn, and I can't get up.
    3. Re:Don't forget NIH syndrome by ctzan · · Score: 1

      Most serious people ignore the memory management
      routines supplied by libc - because they're crap.
      This includes your favorite open-source projects.
      If your application is malloc-bound, you /cannot/
      afford to rely on the provided malloc/realloc,
      unless you want your app to be 20 times slower
      and use 5 times more resources because of memory
      fragmentation.

    4. Re:Don't forget NIH syndrome by Anonymous Coward · · Score: 0

      We have our own memory management; we do it because it allows us to ensure that there are no memory leaks, anywhere, ever.
      You're just not trying hard enough to leak. Create a list. Add objects to this list continually, but never remove them, never use them, and never destroy the list. This sort of leak is impossible to detect except by a human, and even humans have trouble with it when the list is mixed with live and dead objects and the bits of code which "forget" about objects in the list without removing them are scattered everywhere.
    5. Re:Don't forget NIH syndrome by Ryan+Mallon · · Score: 2, Interesting

      We have a memory allocation library at that we wrote which wraps the standard C memory allocation and freeing functions. One thing it allows you to do is create memory checkpoints. To find memory leaks, you set a checkpoint before the memory for some structure is allocated and another after it should all be freed (ie, anywhere the program terminates, or once a structure should no longer be needed).

      The program can then dump a full list of the memory allocated, and where is was allocated from at the checkpoint. Granted it is a fair amount of work to wade through a checkpoint in a large application to see what is and isn't needed, but it can be used to detect and fix memory leaks. I successfully used it to track down a very small memory leak in an application (just a few bytes excess), which weren't being freed in a loop. The program would run okay for a short time, but start eating up significant amounts of memory if run long enough. We put a checkpoint before a loop which caused the problem, let the loop run 1000 or so times and did another checkpoint. Looking at the difference between the checkpoint we had 1000 allocations all done from the same file and line number. Pretty easy to fix after that.

    6. Re:Don't forget NIH syndrome by fyngyrz · · Score: 2, Interesting

      This sort of leak is impossible to detect except by a human, and even humans have trouble with it when the list is mixed with live and dead objects and the bits of code which "forget" about objects in the list without removing them are scattered everywhere.

      No, not impossible.

      Our manager would catch this, or any variation of this, first time it happened. This is because on exit, after legitimate cleanup is done (meaning, we deallocate the things we have been keeping proper track of... memory for windows, palettes, layer lists, that sort of thing), the internal memory pools are all tested for pointers that have not yet been deallocated. Every individual pointer, and the groups they belong to, would be reported along with the name of the pointer(s) and the pool(s) which would generally take you right to the problem area. Then they are automatically cleaned up. It would also catch the list that wasn't destroyed, by the way, because the list resides inside memory allocations we track as well.

      So now the questions arise: Why are there pointers remaining allocated? Why is this list still hanging around? What are the names of the pointers? Are they polygons? Image layers? Blocks for list elements? What pool asked for them? Was it a filter? A plug-in (mind you, the plug-ins have their own subversion of all this, they get their memory and other resources from us, not from the OS, but we could have a fault in the plugin handling, for instance) Is it an object we made for the OS, like an icon bitmap? Whatever it is, between the pool ID(s) and the pointer ID(s) we'll be brought close to the source of the error pretty quickly.

      Once you know there was a leak, you think about what you did with the software, combine that with the ID's on the pools and pointers so you're looking in the correct area, and the hunt begins. Usually doesn't last too long, either. If it isn't obvious (and it usually is), you just keep reducing user level cases until the problem begins to appear and disappear, and pretty soon you're looking right at the problem.

      There's just no substitute for rigid, detailed memory tracking, fire-walling, and monitoring. As a debugging tool, it is a very, very big hammer.

      --
      I've fallen off your lawn, and I can't get up.
    7. Re:Don't forget NIH syndrome by Blakey+Rat · · Score: 1

      We have our own file dialogs (and treeview dialog logic) because the OS offerings were buggy for almost a decade.

      Wow, way to guarantee your software will have terrible usability.

    8. Re:Don't forget NIH syndrome by udippel · · Score: 1

      don't use an open source one, 'cause it's encumbered with GPL, just write your own b-tree library. Of course, it's not as pretty and bug free as the other implimentations, but it's OURS

      If I had mod points, I'd give you a +6. This is most insightful and true. On my side, I found my tiny efforts of writing simple applications very much helped out with referring back to existing FOSS code, calls, utilities, libraries. Usually, the only thing needed was the glue and some I/O.

      While those wanna-get-rich-quick parties either steal FOSS-code, or gobble together their own crufty, barely-working libraries.

      Lastly, as supervisor of mostly undergraduate students, somehow fitting to the topic in general, I tend to feel embarrassed when comparing the amount of code my students write for their Final Year projects, compared to those others who usually start by firing up VC++. In average, they have to write (much) less than their friends. Because about everything exists, and the only thing they have to do, is to find out where; retrieve and integrate it.
      I can't exclude that this applies to the shiny world of Windows just as well, but
        - I have never bothered
        - I don't see this happening with the others students (except those downloading a complete existing solution and subsequently fail for plagiarism)

      It is my conviction that code in general would become better, could our students only understand the beauty of modularised functions. Shell-scripts are very powerful, perl offers about any function, python is written easily, php connects splendidly with MySQL (though I do have reservations about the latter).
      Unfortunately, at least the students in this country, tend to resist learning anything new to them.

    9. Re:Don't forget NIH syndrome by fyngyrz · · Score: 2, Interesting

      Wow, way to guarantee your software will have terrible usability.

      Why would you say that? I didn't remove the OS file dialogs. I just added some that actually worked the way Microsoft said they were supposed to, and had (a lot) more features in addition to the OS's version. If you really want to use a buggy OS dialog that gives you a list of names instead of a properly functioning one that presents thumbnails and names, why, you certainly still can. You can even block select files in the OS dialog. Maybe they'll even fix it some day, you never know.

      But until then, when block selects fail, you can find out why in our docs, and then you can learn how to use the image manger dialog instead. Because it, you know, works. And our tree view works just like Microsoft's. Except ours doesn't leak memory, wasn't designed for a C++ interface (we use C) and is a good deal faster than theirs. Other than that, it's just like Microsoft's. We even used their icons.

      I know, I know. IHBT. Still, when a troll gets all up in your face, it's fun to poke 'em in in the eye with a stick from time to time.

      --
      I've fallen off your lawn, and I can't get up.
    10. Re:Don't forget NIH syndrome by smellotron · · Score: 1

      I have seen projects that even ignored libc

      Probably a bad idea, but it is the ultimate in flexibility and platform independence.

      had their on memory management

      Any OS's default malloc implementation is optimized for general usage. If you have specialized needs, memory management is not that rare to override. Google for Doug Lea's malloc.

      special logging and tracing routines

      Depending on the language used and the corporate infrastructure, this might not be a terrible idea. If you can log via reliable multicast on several channels, why not? If you have a logging system based on C macros that removes debug-logging in release mode, you've shaved off microseconds from every function call.

      and even time zone conversion

      Now *this* is hard to justify. Time zone conversion absolutely sucks, because it's nothing but a long list of gotchas.

    11. Re:Don't forget NIH syndrome by cnvogel · · Score: 1

      Ok, stop it.... I'm impressed already. Now it seems that you and your company are lucky to have both users demanding a very powerful product and obviously are willing to pay for it and your developers are very knowledgeable. And I'll go with Joel (www.joelonsoftware.com) who once stated, that if you have great programmers as a matter of fact, most 3rd-party libraries in comparison are indeed of very low quality.

      But -depending on the number of developers you have at hand- it might not even be feasible to code everything yourself, so the big question to answer is: Which of my components will I code myself and which will I put together by using 3rd-party code.

      And for most applications out there -especially if you look at in-house development- the answer is probably, that they should have used a lot more 3rd-party code, because their own programming is so shitty ;-)....

    12. Re:Don't forget NIH syndrome by Anonymous Coward · · Score: 0

      Our manager would catch this, or any variation of this, first time it happened. This is because on exit, after legitimate cleanup is done (meaning, we deallocate the things we have been keeping proper track of... memory for windows, palettes, layer lists, that sort of thing), the internal memory pools are all tested for pointers that have not yet been deallocated. Every individual pointer, and the groups they belong to, would be reported along with the name of the pointer(s) and the pool(s) which would generally take you right to the problem area.
      So let's say you actually free the contents of the cache on exit. All memory is freed before exit, you see no leak. And yet memory usage grows unbounded as the program runs.
    13. Re:Don't forget NIH syndrome by AaronLawrence · · Score: 2, Interesting

      The problem with this idea is that it is really unlikely you actually have implemented everything that Microsoft did, albeit with bugs.

      Does it resize? Does it work on every language and codepage supported by Windows? Does it support the full set of Unicode characters? Can you sort in all the optional ways? Can it view in a detail list as well as thumbnails? Does it support every different font size? All the possible icon formats? Does it monitor the file system for changes and refresh itself? Does it handle right-to-left text? Does it handle all the in-place explorer operations like open, delete, rename? Are the icons it displays matched to the COM objects explorer users so that special objects behave correctly? Does it support all the possible media? Does it handle special cases such a path names longer than the traditional 256char maximum? Does it support all the accessibility addons, key shortcuts, etc? Does it work on every version of Windows? Does it support screen-readers?

      In my experience, people can do exceptionally great jobs of some ASPECT or aspects of what Windows does, but they won't implement 90% of the background features, mostly because they don't even know they are there. Microsoft have been building these features in for decades (of course, somewhat to their cost in maintenance) and it is a huge hurdle to match them all.

      --
      For every expert, there is an equal and opposite expert. - Arthur C. Clarke
    14. Re:Don't forget NIH syndrome by fyngyrz · · Score: 2, Interesting

      I wrote you a nicely detailed answer using quoting and so forth, but slashdot won't let me post it; claims there are too few characters per line. Very irritating. The general answer is that we support what we need to support; some of what you are asking about isn't relevant for a special purpose dialog that displays thumbnails (detail listings... we do show image properties which are far more extensive and appropriate... screen readers... you can't screen read an image); some of it isn't relevant for a dialog that isn't shared with other developers. We do handle Unicode and left to right languages such as Arabic. In addition to the general functionality, we provide a lot of features that aren't otherwise available, and of course there is the "feature" that our dialog actually works for its intended purpose.

      The key thing here is that the dialog meets the needs of our customers; and that, it does very well.

      Finally, as I mentioned earlier, we didn't get rid of the OS dialogs. We just added another. So should the day come where a user needs a feature only available in the OS dialog, it'll be right there for them.

      --
      I've fallen off your lawn, and I can't get up.
    15. Re:Don't forget NIH syndrome by NoOneInParticular · · Score: 1

      Reading the OP, the thing they really wanted was a file dialog that could select more than 100 files without starting to truncate filenames. The MS one wasn't up to that, and that was a show-stopper for their application. All the other stuff are nice-to-haves, being able to select 100s of files was however important. So they provide both, one that works with the application, one that's from MS. MS might provide lots of background features, but given their track record, they all are expected to break when things need to scale. Toy software.

    16. Re:Don't forget NIH syndrome by spectecjr · · Score: 1

      If you selected more than about 100 files, MS's file dialog would fail to properly terminate the returned file names, and cut off the last one arbitrarily.

      Which OS version, and what language were you writing this in?

      --
      Coming soon - pyrogyra
    17. Re:Don't forget NIH syndrome by Fulcrum+of+Evil · · Score: 1

      Cool - next trick is to dump only those allocations made after the checkpoint and still active. Suddenly, the output is more manageable.

      --
      "We returned the General to El Salvador, or maybe Guatemala, it's difficult to tell from 10,000 feet"
    18. Re:Don't forget NIH syndrome by fyngyrz · · Score: 1

      The software reports max memory use, max pointer use, and can - if compiled in - do this on a pool basis. We don't ship it that way generally (it's slower) but we can hand one out that does it if someone reports a case that seems to need it. In house, we almost always have that stuff on.

      --
      I've fallen off your lawn, and I can't get up.
    19. Re:Don't forget NIH syndrome by fyngyrz · · Score: 1

      I believe this started in Win95; it continued through win98. Before XP came out, I'd written the new dialog, and I don't know if XP still did it. It was a documented bug, though, MS would own up to it - they just wouldn't fix the darned thing.

      It is easy to reproduce. Get any program that can load multiple files, and feed it, say, 200 small ones. Text files for a text editor, etc. The mechanism was supposed to be, if I recall, a memory allocation that was (where lower case "O" is a NULL) FILENAMEoFILENAMEoFILENAMEoo for a return of three filenames. But there was some kind of arbitrary memory limit or other failure that seemed to occur around 100 files or so, and it broke the termination. Since selecting normally (normal alpha list, select A, then Z) got you a reversed list from the OS, you had to go to the end and then grab the files last to first, list-wise. But the end wasn't there, and that'd break you pretty much right out of the gate.

      We use C. Nothing else.

      --
      I've fallen off your lawn, and I can't get up.
    20. Re:Don't forget NIH syndrome by spectecjr · · Score: 1

      KB article covering this problem.

      I think you might have possibly missed an error code that it would return if the buffer wasn't long enough. Of course, you may already have handled that case, but you don't mention it in your description above.

      --
      Coming soon - pyrogyra
    21. Re:Don't forget NIH syndrome by fyngyrz · · Score: 1

      We have exactly that code in CDN_SELCHANGE; I just went through it line by line to be certain. The related WM_INITDIALOG code and WM_DESTROY code is there too that deals with the "OFN" property allocation and disposal.

      Under Win98, the buffer is improperly truncated and terminated in my test set (a bunch of little jpg thumbnails) at 104 files. Fewer files work fine. I didn't bother testing on any of the other OS's.

      Every time I see it fail, I have the urge to disable multiselect. But it does work for small numbers of files, so technically I'd be taking away functionality. Sigh.

      Thanks for the pointer, though. Always worth a look just in case.

      --
      I've fallen off your lawn, and I can't get up.
    22. Re:Don't forget NIH syndrome by Anonymous Coward · · Score: 0

      And our tree view works just like Microsoft's. Except ours doesn't leak memory, wasn't designed for a C++ interface (we use C) and is a good deal faster than theirs. Other than that, it's just like Microsoft's.

      Every Win32 header file I've ever seen is intended primarily for use with C rather than C++, except COM stuff which isn't necessary for trees. But perhaps you're referring to MFC instead of the Win32 API. If not, could you list some of the headers - I'm genuinely curious.

      - T

  15. Code Paranoia by edibobb · · Score: 3, Insightful

    Most companies who protect their code don't need to worry too much about it. It would take their competitors as much time to steal their code as it would to write new code. Analyzing a "foreign" project and then integrating it into another usually takes a lot of time. And then, the result would probably not be as good as new code. There might be some "ahh... so that's how they do that!" moments, but probably not worth the effort of stealing and analyzing the software. The main reason I would protect code would be to prevent lawsuits. Someone could analyze the code, find flaws, stage losses, and sue. Even this is pretty unlikely in a medium-to-small sized company.

  16. There's good and bad code by Anonymous Coward · · Score: 1, Insightful

    Proprietary vendors don't have exclusivity on bad code, plenty of open source projects feature terrible code too. That said, anyone who ever worked on a crufty proprietary codebase knows there's a grain of truth here. Programmers know their kludges will remain unseen if it's in a proprietary app and product managers may be pushing for a feature ASAP when the elegant way would be to re-engineer part of the codebase. Finally, many coders in commercial shops (esp outsourced shops) are actually clueless and where contributors to open source projects are likely to have an active interest in the project, code monkeys are more likely to care only about their paycheck.

    It's by no means a black and white situation. Browsing repos for a few PHP projects ought to destroy any illusion that all open source projects are well written.

  17. Open Source: inefficient and often buggy by Anonymous Coward · · Score: 0

    Some of the most used applications in the open source movement have some of the worst written code ever. It's hack on hack on hack. People writting wrappers for no other reasons then to hide what they don't understand or to create an interface they would want to work with which all leads to very inefficient code. Sometimes it's just best to start from scratch, use what you've learned from the previous experience and don't make the same mistake twice.
    Oh and document your design decisions, don't just assume that design patterns are enough.

  18. The Crown Jewels by Anonymous Coward · · Score: 1, Interesting

    In one company I worked with we were having real performance issues with a billing application. We staged a meeting with the software supplier to try and resolve things. One of the main problems we had tuning the database was the use of obfuscated pl/sql code in the Oracle database. I could see what was executing, but couldn't even add hints to help things along.

    I asked them if we could get access to the code to help in tuning efforts.

    "That's our Crown Jewels. We can't just let anyone see that" came the reply.

    "Well, your Crown Jewels appear to be made of brass" quipped one of our project managers.

    It's always been my experience that software companies prefer to hide what's behind the scenes. Having worked in some, I understand why.

    Where there's muck there's brass. And vice versa.

    1. Re:The Crown Jewels by Anonymous Coward · · Score: 0

      Amdocs, right?

    2. Re:The Crown Jewels by Anonymous Coward · · Score: 1, Interesting

      I can't say I'm surprised. I worked for a large billing software vendor.

      One day word came from above to drop *all* referential constraints in the product. The reason? Performance.

      I remember a meeting where one of the senior DB person was strenuously arguing to add a completely irrelevant field to the primary key, again for "performance" reason. It finally emerged that she (senior DB expert!) was unaware that you could create non primary key indexes, had (correctly) identified the field as requiring indexing and was merely arguing for this to be done the only way she knew of...

      The thing with databases is that at least DBAs can peek under the hood to see what happens (well, not in your case, but usually) and try to fix things.

      There's no telling what's happening above tho. It was a pretty standard operating procedure for on-site consultants to get down and dirty and fix the data right in Oracle when something went wrong. We'd often have to integrate with other applications, internal or external, running on other databases. Do you think anyone would have thought about distributed transactions and 2-phase commit? Nah, just do two commits. Done.

      Another app was a real success story. On time, on budget. Flew through testing. Perfect. Right until it was deployed. Turned out nobody had designed, coded or tested the possibility that multiple users might use it concurrently.

      I remain of the opinion that the only thing "enterprise-class" about enterprise-class software is the amount of money the sucker will pay to get the project more or less working and save face.

  19. Obvious? by dracocat · · Score: 5, Insightful

    Well, we invested a lot of money and resources to get the product written so that we could make money from it.

    If we publish it and another companies takes it and uses it to make a competing product we will make less money.

    Do we need another reason?

    1. Re:Obvious? by Brandybuck · · Score: 1

      Precisely. If it was more profitable for a company to open source their product, then they will do it. And many have. It is natural for businesses to seek out and exploit advantages, and that is a good thing. They are not charities. Even in a world without copyrights, companies aren't going to provide public access to their repositories.

      --
      Don't blame me, I didn't vote for either of them!
    2. Re:Obvious? by Anonymous Coward · · Score: 1, Interesting

      Yes, because that's baloney. The only value your company is selling is the knowledge capital in your engineers, technicians, sales and marketing staff. Other companies pay for your crappy code because its works. But they only know it works because of whatever moderate success they believe your company to have. If some other company stole your code, the market would have no clue whether the code works or not; they'd still buy your services. Nor could that new company wield the code like you code; if they could do it any better then they'd write their own code, because the code is a reflection of the knowledge growth of the company.

      Code only ever matters to other engineers. Its not a capital asset in and of itself, regardless of what the lazy, inept investors and bean counters fool themselves into believing.

    3. Re:Obvious? by Ichijo · · Score: 1

      If we publish it and another companies takes it and uses it to make a competing product we will make less money.

      If you publish it under a license that requires licensees to credit your company for authorship, then that's free advertising.

      --
      Any sufficiently unpopular but cohesive argument is indistinguishable from trolling.
    4. Re:Obvious? by Anonymous Coward · · Score: 0

      You're so naïve. They would just steal the code and sell their product as their own.

    5. Re:Obvious? by ClosedSource · · Score: 1

      Sure, just tell your potential investors that you're using the "bragging rights" business model. We aren't going to make any money, but everybody will know who we are.

    6. Re:Obvious? by Antique+Geekmeister · · Score: 1

      You don't actually write much open source software, do you?

      The result with better open source is that the patches contributed by your customers, and partners, and sometimes even by your computers, allow you to evolve the code far faster, more reliably, and flexibly than if you keep it internal. If your work is good, it allows your developers to spend time adding features and integrating into new environments, instead of fixing debris that they hadn't noticed. It does force you to evolve your software and your codebase, but it protects us from you going out of business for other reasons and losing the ability to continue our work.

      And that protects you, too, with open source development tools, testing environments, libraries, and toolkits.

    7. Re:Obvious? by NoOneInParticular · · Score: 1

      Hmm, ok. So advertisements in general are a no-no for investors? If this were only the case!

    8. Re:Obvious? by ClosedSource · · Score: 1

      "So advertisements in general are a no-no for investors?"

      No, but advertisements for products that can be cloned for free because you gave away the source have no value.

    9. Re:Obvious? by Bert64 · · Score: 1

      There are many terms under which you can release source code.
      You can put it under a microsoft-style shared source licence, where people can look at it, fix bugs and make improvements but those improvements become your property.
      You can do as ID do, and release the code openly but which is unuseable without proprietary data files which you still sell.
      You can add advertising clauses, ala BSD, so that any competitors who copy it have to advertise your company all over the place, this will very much discourage them.
      You can make it free for non commercial use only.
      You can bundle the source along with the binaries, such that only legit buyers can get the source (and perhaps have an internal customers-only website where customers can discuss things and contribute patches etc). You can differentiate between company supported "official" versions, and unsupported modifications made by users, and you can roll those user changes back in.

      Infact the latter would be very good, there are plenty of commercial apps which could benefit from such a system. Things like linux support are in a catch 22 situation, not enough users to make porting profitable, and the user base wont increase without certain kinds of apps. Third parties could provide ports, they can either be used unofficially (you buy the official version, then download the linux version from the customer portal) or released with later versions. Similarly, bugs can be fixed by end users etc.
      Companies already use their customers for beta testing, why not use them for development too?

      --
      http://spamdecoy.net - free throwaway anonymous email - avoid spam!
    10. Re:Obvious? by Bert64 · · Score: 1

      It depends who your target market is...
      Corporate users are more likely to buy a commercially supported version, than download a free version. End users are more likely to download a free version (or pirate a non free one), but end users increase mindshare and are generally less profitable anyway.
      The more widespread your product, the greater the chances that corporate buyers will have heard of it.

      --
      http://spamdecoy.net - free throwaway anonymous email - avoid spam!
    11. Re:Obvious? by Bert64 · · Score: 1

      And they would have to comply with your licencing terms (ie advertise your company all over it)...
      If they didn't, you can have them up in court for it. And the fact that you released the code long before they came out with a product, goes a long way towards proving it's your own code.
      If you keep your code closed, and someone else steals it you'll have a much harder time proving what happened. And they may try to claim that you stole the code from them instead.

      --
      http://spamdecoy.net - free throwaway anonymous email - avoid spam!
    12. Re:Obvious? by NoOneInParticular · · Score: 1

      So I repeat: "Advertisements in general have no value?". Sponsoring a tv show by showing an obnoxious message during it has, as I can see it, less value than giving away the keys to obsolete past products. Both have the value of increased brand recognition. The latter might actually lead to brand loyalty. Opening up your past accomplishments definitely has advertisment value.

  20. Re:Companies hostages of their programers by canuck57 · · Score: 2, Insightful

    (see what happens in google, etc). These people think they have a team of very good programmers but it's a bunch of tired old-timers.

    Google old timers are very rich.

  21. So what's the big deal? by TheLink · · Score: 1

    So what's the big deal about companies keeping all that bad code proprietary?

    0) What are you going to learn from bad code that you can't already from "The Daily WTF".

    1) There's good code and bad code whether it's open source or not. I've seen plenty of crappy code (PHP Nuke comes to mind). I've written some crappy code myself, but I like to think I've also written some good code - all closed source for now.

    2) You don't usually have to see the source to know whether it's bad code or not.

    3) Whether it's bad or good, why should companies take the effort of releasing something as OSS? If they just chuck the code out as is without docs that outsiders can understand or use, they'll get flamed. There are extra costs involved. So what's the benefit? You get praise? When there's lot more money to be made from that, than from the code, then sure the code gets released.

    4) Whether you have a good hand or a bad hand in poker, you don't let other people see it unless you're letting them "see" what you want them to see for strategic reasons.

    5) Most of the smart OSS people don't actually want to see the bad code. They just want the specs and APIs, but producing full specs isn't always easy or cheap. Sure having better specs may benefit the company in the long term, but most companies think short term, plus they might change the specs + APIs later for other reasons (some even valid), and then they'll get flamed for that.

    --
  22. Moldy Binaries by Anonymous Coward · · Score: 0

    I take exception to Moldy binaries being the vendors fault. Its the OS's damn fault. I can write a windows program that worked 15 or more years ago on windows and it still executes just fine today.

    With linux thats impossible because distributions don't care about backwards compatibility they think that recompiling is the answer to everything so you end up supporting everyones version of linux only by coding to the lowest common denominator and telling people to install the damn compatibility library *OR* releasing AT LEAST A DOZEN different versions of your software targeting subtly different versioned runtime libraries and expect anyone to be smart enough to pick the right one. This is the OS's fault!! Other UNIX systems such as Solaris do not suffer from this problem.

    WTF is with the 30-60 second Bios boot time? It takes 5 seconds to start booting windows on my notebook, my PC is the same. Only idiots who have not turned off the POST tests get to wait 30-60 seconds.

    Samsungs rootkit is my favorite :)

    Also the last I checked the major Diebold issues were related to hardware and *design* shortcommings rather than code quality?

    I suspect the real reason companies don't release their source code is quite obvious... Its because their in business to make money and giving their competition their code is not good for business. (Although with Java and .NET they might as well be:) It tends also to create a support nightmare (giving rope to your typical user base is generally not a good idea) and muddy upgrades. Instead of source code software needs good and well factored APIs to enable users to extend functionality while at the same time isolating fault and responsibility.

    All and all if these are the only examples Carla can spit out to support her position in her FA then its not very convincing. Sometimes I look at the crap done in open projects just to make myself feel better about my own crap... everythings crap!! Show me one thing you think is well written and I will find an infinite number of reasons to call it crap. You only learn and improve if you think in these terms.

    The more public/popular projects tend to be fairly well designed however not always. IMHO code quality tends to have more of a relationship to the number of people using something and the level of local complexities at their cores.

    1. Re:Moldy Binaries by segedunum · · Score: 1

      I take exception to Moldy binaries being the vendors fault. Its the OS's damn fault. I can write a windows program that worked 15 or more years ago on windows and it still executes just fine today. With linux thats impossible because distributions don't care about backwards compatibility...
      I have games that were released for Linux seven or eight years ago that still work, Motif applications written over a decade ago that still work and there is COBOL code written twenty or thirty years ago that still works. Within the open source world itself there are breakages, but that's to be expected. I'd still take a CUPS printer driver over anything a third-party ships any day of the week, and it means that I never have to muck about installing lots of third-party software.

      WTF is with the 30-60 second Bios boot time? It takes 5 seconds to start booting windows on my notebook, my PC is the same.
      BS. Sweetheart, the only time Windows ever booted in 5 seconds for me was when I installed a Linux distribution to dual boot and the installer resized the NTFS partition to something much, much, much smaller. That's the only time that phenomenon has ever happened to me, so no, you are not getting 5 second boot times with Windows.

      Samsungs rootkit is my favorite :)
      Because Samsung wrote shit code, which is pretty much the point of the article. If you install any third-party code on any system you have, you have to accept that people who wrote it might simply be fucking incompetent. Install Zonelarm on Windows and look at the bizarre things that does, not to mention the 75% speed reduction.

      I know you hate Linux, but I'm afraid that's no reflection on Linux at all.
    2. Re:Moldy Binaries by Tim+Browse · · Score: 2, Insightful

      BS. Sweetheart, the only time Windows ever booted in 5 seconds for me was when I installed a Linux distribution to dual boot and the installer resized the NTFS partition to something much, much, much smaller. That's the only time that phenomenon has ever happened to me, so no, you are not getting 5 second boot times with Windows.

      Indeed. That's probably why the poster actually wrote:

      It takes 5 seconds to start booting windows on my notebook, my PC is the same.
    3. Re:Moldy Binaries by Anonymous Coward · · Score: 0

      "BS. Sweetheart, the only time Windows ever booted in 5 seconds for me was when I installed a Linux distribution to dual boot and the installer resized the NTFS partition to something much, much, much smaller. That's the only time that phenomenon has ever happened to me, so no, you are not getting 5 second boot times with Windows." - by segedunum (883035) on Saturday September 29, @02:54PM (#20795069) Well, well... look everyone: The ALL-KNOWING "Linux penguin" speaketh!

      New news for you buddy:

      It is absolutely possible to get SUB 5-second loads of Windows when you prune out unecessary services &/or drivers (i.e.-> ones you don't actually need or use, but are set Automatic by MS by default from the oem distribution media) via compmgmt.msc using its services & devices (with "hidden devices" made visible from the VIEW menu) applets/subsections & using a 1/2 way fast HDD.
  23. Intellectual bugs by Anonymous Coward · · Score: 4, Interesting

    Having worked for a large stupid company, this really rings true. We were a startup with a product that did X. A big famous large stupid company bought us and said, ok, we want this HUGE thing Y that does this and does this and does this and does this- and it has to be built on X (because it was "prestigious", although it did NOTHING similar) and totally integrated with it and the Y data types have to be completely intermingled with X data types so you can transfer objects from the context of X to the context of Y seamlessly. (I have to change details to protect the guilty, but imagine that X was a raytracer, and Y was a vote counting system.)

    So we basically spent a year fucking up X into a conglomerate X-Y system, and ended up doing all sorts of horrible things to get it done on time ("fooling" old code, etc.) And I found out for myself how disheartening it is to be ordered to do something hopeless that makes no sense. Meanwhile we discovered that the sales guys had been running around for months promising a system that did X and Z, and that it would be ready next month. They called a meeting. (This is one thing they were good at- scheduling meetings.) They said we need to combine X, and this "Z" we've been promising, into one product. (Z would be a missile guidance system.) X was "prestigious", Z was the hot new thing, and Y was going out of style (denoted henceforth as "y", lower case). Only two customers used y, but they were IMPORTANT ACCOUNTS.

    So there's a panic where everyone is trying to convert X-Y to X-y-Z (something nobody in their right mind would want), in the absence of any specifications at all. ("You guys are smart! Tell us what we want it to do!") And it's getting nowhere and bugs are starting to appear in X and people are using old versions like with XP and Vista. So much time passes that we could have written Y from scratch and Z from scratch without fucking up X at all. (I'm simplifying things somewhat, because I ran out of letters- there were a few more after Z.)

    Right in the middle of it all, they pulled everyone into a meeting with patent lawyers and demanded that each of us produce a list of all the intellectual property in the application. The top 20 most patentable things.

    What do you write? "System and method to cope with your incompetence?" I shudder to think that they might have filed a patent that prevented someone from doing something worthwhile, but I doubt they found anything they did that anyone would ever want to repeat.

    1. Re:Intellectual bugs by Anonymous Coward · · Score: 0

      The top 20 most patentable things.

      You know I've read similar stories to yours quite often on slashdot, but pulling people off of a project to quiz them on what parts of the code are patentable? Man that just takes the freaking cake.

  24. Look at the losers and you'll see ... losers by kscguru · · Score: 4, Informative
    This blogger did something quite insidious and quite stupid: she chose only examples that support her claim. Let's look at all her ugly/evil/l3me closed-source whipping boys: Diebold The poster child for make-a-buck quick. Diebold saw a "need" for electronic voting software, lobbied a few politicians to get sweetheart deals, and came up with substandard, shoddy software. Same moral as always: you get what you pay for, and the gov't paid for the lowest bidder. Samsung's Linux rootkit So Samsung wrote some truly crappy Linux drivers? Well, Samsung's printer driver looks like it was written by a college intern on his first assignment - which probably means it was written by a college intern on his first assignment. Do you really thing Samsung is going to assign their best developers to writing a Linux driver, especially when Linux folks will just reverse-engineer it anyway because they don't like something about it? No, Samsung is going to give the project to the lowest-level code monkey they can find. OF COURSE the code looks crappy. BIOSes Did you know there are exactly two major BIOS vendors out there? That there are no more than a hundred or so professional BIOS developers in the world? Yet there are more copies of BIOS software out there than Windows; everybody expects BIOS to support new whiz-bang features (boot from USB, PXE boot, boot device ordering, processor errata, microcode updates). There simply aren't enough people to make BIOS code look good. BIOS programming is hard - harder than writing a kernel. It's understaffed, and the code quality shows. You think BIOS vendors stick with BIOS because they want lock-in? Ha. How about they don't have enough people to create a replacement, they are too busy patching up last year's code with this year's features. Netscape Yup, the Netscape codebase is an ugly mess. You'd think they implemented features without planning months ahead, almost like they were competing with some other major web browser ... the Netscape mess is a result of competition. I know enough former Netscape engineers to know they don't write crappy code. But when your schedule gets cut from 1 year to 3 months to compete with Redmond, crap will result. Remember, Open Source has the luxury of not having schedule competition - if a company delivers a feature late, developers will find themselves out of a job. StarOffice/OpenOffice Isn't the revisionist history here fun? Do you really think Sun was proud of the StarOffice codebase? No, Sun released it because the Open Source community begged for it (and Sun was the most likely to give in), and Sun wanted an office suite competitor to have SOMETHING to start from. No one ever claimed StarOffice code was any good; the only claim here is that StarOffice was better than nothing. You think Sun's best engineers worked on StarOffice? No, they worked on Solaris and Java. (With apologies to anyone who did work on StarOffice.)

    So... we look at five projects that have every right to contain crappy code, and therefore conclude that companies keep code closed to hide crappy code? Pick crap and you will see crap. How about some successful projects: Microsoft Windows (kernel), Adobe Photoshop, VMware?

    --

    A witty [sig] proves nothing. --Voltaire

    1. Re:Look at the losers and you'll see ... losers by Anonymous Coward · · Score: 0

      Same moral as always: you get what you pay for, and the gov't paid for the lowest bidder.

      "Lowest bidder?" People don't bid for government contracts anymore, old man!

    2. Re:Look at the losers and you'll see ... losers by Wavicle · · Score: 1

      BIOSes
              Did you know there are exactly two major BIOS vendors out there? That there are no more than a hundred or so professional BIOS developers in the world? Yet there are more copies of BIOS software out there than Windows; everybody expects BIOS to support new whiz-bang features (boot from USB, PXE boot, boot device ordering, processor errata, microcode updates). There simply aren't enough people to make BIOS code look good. BIOS programming is hard - harder than writing a kernel. It's understaffed, and the code quality shows. You think BIOS vendors stick with BIOS because they want lock-in? Ha. How about they don't have enough people to create a replacement, they are too busy patching up last year's code with this year's features.


      I'm going to pick on this one a little bit. You are mostly correct about BIOS though.

      There are two major BIOS vendors out there, but they really do not do very much. For example Intel develops almost all of its BIOS in-house but they have licensed the base configuration from (think think) AMI(?) I'm not completely sure, but I know people there whose job it is to develop the BIOS for their boards. There are probably a couple hundred professional BIOS developers around because just about every board manufacturer has a team and every chipset manufacturer has a whole BIOS department.

      Second, this Carla Schroder person has absolutely no clue what a modern BIOS does and is completely oblivious to the fact that there are several things the BIOS does that the OS has no opportunity to "ignore." We are all familiar with the hard drive detection issues that long ago led to OSes ignoring the geometry of the hard disk...

      I can't tell you how many times I've had to muck with the linux kernel boot parameters because I installed on hdb but put the drive into a new system and now it comes up as hda but lilo believes root=/dev/hdb. Let's see your OS ignore the memory timings that BIOS selects. How about the bus clock speed? Was your USB hub not enabled in BIOS? Does your OS reconfigure the PCIe endpoints? I doubt it. What about re-choosing which cards get which interrupts? That might be possible on some cards, but for most of them that write can only reliably done once - during BIOS' PCI enumeration. There are many hardware things that if BIOS doesn't bringup or otherwise actively disables, the OS does not veto that decision.

      The BIOS still performs a useful task. Regardless of what some clueless hack thinks.

      --
      Education is a better safeguard of liberty than a standing army.
      Edward Everett (1794 - 1865)
    3. Re:Look at the losers and you'll see ... losers by Blakey+Rat · · Score: 1

      I dunno. My brand new Dell out of the box won't boot with an iPod plugged in... I think it thinks the iPod is a bootable HD, tries to boot from it, and fails, and doesn't ever try the HD after failing. I had to disable USB boot on my Dell.

      I've never had that problem on any Apple computer I've owned. Why? Apple doesn't use BIOS. Yet despite that, their computers seem more capable in that area than PCs. (Take, for instance, Target Disk Mode. By holding down a key when I boot, I can make my iBook pretend it's an external HD. Where's that option on my PC BIOS? Not there. Or to use a more shallow example, when you select a disk at boot time on a Mac you get nice clean icons for every bootable disk in a GUI, not a crappy text menu that isn't even smart enough to figure out which disks are bootable and which aren't.)

    4. Re:Look at the losers and you'll see ... losers by Wavicle · · Score: 1

      Why? Apple doesn't use BIOS.

      Call it BIOS, call it bootstrap. Yes, they do.

      By holding down a key when I boot, I can make my iBook pretend it's an external HD.

      That should be your first hint.

      --
      Education is a better safeguard of liberty than a standing army.
      Edward Everett (1794 - 1865)
    5. Re:Look at the losers and you'll see ... losers by Blakey+Rat · · Score: 1

      Why? Apple doesn't use BIOS.

      Call it BIOS, call it bootstrap. Yes, they do.


      So if Apple uses BIOS, and PCs use BIOS, then what the hell are we talking about here? What computer *doesn't* use BIOS if you define it in that way?

      Look, I think the general understand is when people say "BIOS sucks" they mean the little DOS-like application that runs on PCs and lets them set your boot drive.

      By holding down a key when I boot, I can make my iBook pretend it's an external HD.

      That should be your first hint.


      Hint to what? What are you even talking about?

  25. Re:Windows is an example of bad proprietary code? by julesh · · Score: 2, Insightful

    Exhibit A is Windows itself?

    I don't need to read any further.


    Right. Because, of course, Windows is perfect, so the article must be wrong.

    You don't need to be a zealot to realise that Windows is probably pretty close to the classic definition of the codebase that's outgrown its original purpose by an order of magnitude or more and is now getting pretty hard to maintain. Why else did it take MS 6 years to release Vista, which isn't really much more of an upgrade over XP than XP was over 2K (which took them only 1.5 years)?

  26. #2 is bullshit. by SanityInAnarchy · · Score: 1

    At least with your example, it is complete and utter bullshit.

    Who buys Photoshop?

    There was a Slashdot article awhile back about how casual piracy has gotten, even among non-technical people. Photoshop included, Windows included... In general, your copy-protection scheme is probably already zero-dayed, and will almost certainly be broken within the year.

    You know why?

    Because while it's not as easy, it's still very possible to comment out those bits in the assembly. It's a lot easier than most other modifications you'd try to make. And you don't usually have to go that far -- for awhile, the simplest solution to Windows was to download the Corporate edition and use the same serial as everyone else.

    The copy protection bullshit is mostly illegal -- really only enforced at the corporate level, where source code availability doesn't matter, because the BSA will track you down. At the corporate level, they make sure to have licenses for everything.

    All this is assuming a model of selling/licensing the software anyway, which isn't always the case.

    --
    Don't thank God, thank a doctor!
  27. Different Approaches by quo_vadis · · Score: 5, Insightful

    Another thing to consider is the fundamentally different mentalities the two camps (open source vs closed source) have. For closed source, all that matters is shipping a working product. So what if it breaks if you have more than 4GB of RAM or your directory naming convention must be exactly so. The open source approach on the other hand tends to be we wont call our product done till the code is perfectly optimized for all systems from a VAX to a Blue Gene. Also, one must consider that individuals and companies are at different ends of the spectrum when it comes to reasons why they have not released code. For individuals, there is personal criticism from programmers about their code. But, one has to keep in mind that not all individuals are programmers. If a recent physics PhD chooses to release the code he used to process output of his high energy particle physics simulations for his thesis, he would be heaped with scorn for spaghetti code despite the fact the code accomplished its primary purpose (get enough data to get the guy his degree) and did it in a reasonable time frame. For companies, there is simply a strong sense of possessiveness. They are loath to give away anything; including code for products they dont use or support anymore.

    --
    Legally obligatory sig : My opinions are my own... etc etc
    1. Re:Different Approaches by scot4875 · · Score: 1

      The open source approach on the other hand tends to be we wont call our product done till the code is perfectly optimized for all systems from a VAX to a Blue Gene.

      You must be using different open source projects than I am...

      --Jeremy

      --
      Jesus was a liberal
  28. Re:Often companies can't release it for legal reas by GPL+Apostate · · Score: 1

    It's also the case, though, that when a company goes in and cleans up, unifies, and replaces all that third-party croft, they come out with an improved product. Sadly, it isn't the kind of 'improvement' (i.e. eye candy and more 'features' on a bullet list) that the people who hold the purse strings in a company often acknowledge.

    --
    Microsoft says legacy (serial/parallel) ports are bad. They don't obfuscate the hardware enough.
  29. Then we... by Anonymous Coward · · Score: 0

    ...shouldn't forget the authors of free software don't hide their code.
    We can open it up and learn from them.

  30. Riiiight by DurendalMac · · Score: 1

    As opposed to open-source, where everyone can see how shitty the code is. Gimme a break.

  31. Soooo True by SolitaryMan · · Score: 2, Interesting

    At my previous place of employment this reason for keeping software closed was actually named several times by different people.

    --
    May Peace Prevail On Earth
    1. Re:Soooo True by mAx7 · · Score: 1

      I agree, there's definitely a lot of truth there.

      I've been working on a tool to visualize technical debt in large software systems over the past year (see http://complexitymap.com/ .

      From a supplier-side (e.g. IT-development groups, large system integrators), there is very little interest in tools which visualize problems in code, to use a big understatement. Most enterprise code is not worth looking at, so these organizations tend to keep their client out of the kitchen and manage the perception that everything is going fine. Usually at client/buyer-side, the relevance is missed, since the main question they're asking is: does it work yet? When talking to the client's contract management group however, could leads to a more interesting discussion; why would a company have to accept software which clearly contains flaws in thinking or programming?

  32. NoMachine by Cheesey · · Score: 1

    NoMachine's Linux server and client, for one example, rely on an ancient version of libstdc++ that sends you wandering all over Google trying to locate a copy of it.

    I didn't have trouble with that myself, but NoMachine's Windows client does annoy me beyond belief. It refuses to coexist with fullscreen Direct3D applications, so if you want to play a game and use a remote Linux system, you have to reconnect every time you task switch out of the game. I cannot understand this behaviour as the NoMachine software doesn't use 3D features at all. Thanks to the combined magic of closed source software, and support that's reserved for paying customers, I have no way to fix it.

    --
    >north
    You're an immobile computer, remember?
    1. Re:NoMachine by Danga · · Score: 1

      Thanks to the combined magic of closed source software, and support that's reserved for paying customers, I have no way to fix it.

      You do have a way to fix it, PAY FOR IT. Can't do or don't want to do that? Then that sucks but don't complain that there exists no way you can fix it. Seriously, if you use something for free where it is clear support is something that must be paid for then don't come here complaining about how you can't fix something because you don't want to pony up the money for the support. They also do have "pay per incident" support which is much less expensive than the subscription cost.

      If all you use NoMachine for is playing games (just a guess bassed on your D3D problem) then you should just be happy you can get something for free that does something so complicated. If you use it for more than personal entertainment then either don't knock it for some bugs it has that you "have no way of fixing" or pay for the support so the people providing you that support can fix your issue as well as put some food on the table.

      --
      Hey, there is only one Return and it's not of the King, it's of the Jedi.
    2. Re:NoMachine by Cheesey · · Score: 1

      Actually I was rather hoping that someone might have hit a similar problem, and would be able to suggest a workaround for the problem - either fixing NoMachine's broken behaviour, or suggesting another program that could be used for the same purpose. Failing that, a report along the lines of "It works fine for me" would also have been helpful, as the problem might be due to my particular hardware/software configuration. But thankyou for your comment anyway.

      --
      >north
      You're an immobile computer, remember?
  33. This is total bullshit by jgarra23 · · Score: 1

    "We are drowned in tides of twaddle about precious IP, Trade Sekkrits, Sooper Original Algorithms that must not be exposed to eyes of mere mortals, and all manner of silly excuses. But what's the real reason for closed, proprietary code? Embarrassment."

    That's like saying because I want my privacy that I have something to hide. I think we're all a little bit past 5th grade now.

  34. It's oursss... by Anonymous Coward · · Score: 0

    ...thief, thief, thief! Torvalds! We hates it, we hates it, we hates it for ever!"

    Seriously, this thread remained serious for over 30 posts. That's just not right. I had to act.

  35. Not the reason by Brandybuck · · Score: 1

    I am a consulant that works with a lot of companies, and I get to see the source for lots of proprietary software. The idea that they are embarassed by their code is ludicrous. They keep it proprietary for real and perceived trade secrets, don't want brand dilution, don't want to support user modified software, etc.

    I've seen proprietary code that was truly embarassing. But I've seen a lot more that was of very high quality and design. Funny thing, I've seen the same range with Open Source software as well!

    --
    Don't blame me, I didn't vote for either of them!
  36. Re:Often companies can't release it for legal reas by kisielk · · Score: 1

    Well, if you think about it, the whole reason these companies are being held back by the 3rd party components is because the 3rd parties didn't open up their code in the first place. A bit of a catch-22.

  37. "Just so long as no-one laughs" by Anonymous Coward · · Score: 0
    Many years ago I worked on a project that relied on a little interface box running MS-DOS with a proprietory C comms program of some sort. Our application talked to the hardware via this thing using a home grown protocol.

    However, it didn't work reliably and the customer (a major oil company) had failed to secure the source code, so they contacted the engineer who wrote it and asked to buy it. He pretty much refused for a long time (despite it being completely site-specific and having no resale value).

    The oil company were being badly hurt by this stuff as failures were bringing their plant to its knees regularly and would have paid any price to get what they wanted - except that the guy had a special condition which he ultimately revealed as "just so long as no-one laughs or comments on the code". He wanted that condition in writing.

    On the same day my project manager told me this, I accidently found some editor back up files of the source which consisted of thousands of lines like [ I am not making this up, this is literally what it looked like, down to variable names ]:-

    for ( i = 0; i < x ; i++ ) {
            for ( ii = 0; ii < y; ii++ ) {
              for ( iii = 0; iii < z; iii++ ) {
                  for ( iiii = 0; iiii < xx; iiii++ ) {
                      for ( j = 0; j < xxx; j++ ) {
                          for ( jj = 0; jj << xxxx; jj++ ) {
    You get the idea.

    We told the company there was no point in buying the source as we would never be able to understand it or fix it.

    Instead we got the hardware documentation, implemented tested and deployed a direct interface of our own (using the hardware manufacturers protocol and not the antsy hodge podge "middleware" invented by the engineer) in under 2 months.

    Mean-time-between-failure went from 4 hours to 4 weeks and mean-time-to-repair (aka "down time") went from 30 minutes to 5 minutes. Not great, but for a lot less than what the source code was going to cost.

    We even got paid a bonus, flowers for our wives and an expensive lunch. Good times.

  38. Ridiculous article. by rjh · · Score: 4, Insightful

    The proposition here is "upper management knows the code is a mess and is embarrassed by it, so they insist on keeping the code closed."

    Who here thinks upper management knows what code looks like, at all? Not bad code, not good code, but code, period. Does anyone really believe that the executives who make policy decisions about whether to release code are in any way qualified to comment on code aesthetics?

    Hell, I think most programmers are unqualified to comment on code aesthetics. For a lot of people, programming is just the daily grind. People who actually put their heart and soul into crafting a piece of mathematical art are very rare. So if management can't recognize good code and an awful lot of the IT department is apathetic to good code, how is it possible that the decisionmakers know enough to be embarrassed by the code?

    And if we can realize this in just ten seconds of thinking, why didn't Schroeder think of it herself?

    As near as I can tell, the reason why companies like closed source is very simple: it preserves the asymmetry of information necessary for their bottom line. A free market depends on both parties knowing the product being bought and sold. When you buy a new car, you can read Consumer Reports, you can read Car and Driver, you can read any of a dozen specialist automotive rags that will tell you in excruciating detail what a certain car's dual overhead cam configuration means in context of their competitor's choice for a single overhead cam. The buyer has complete access to information, and that puts the buyer in a position of strength.

    Asymmetric information, where the seller knows far more than the buyer, puts the buyer in a position of weakness. If the product is a black box, then you can't really get an informed independent critique; you have to instead rely on the claims of the people selling the product. Which is great, as long as you're the seller.

    1. Re:Ridiculous article. by Epistax · · Score: 2, Interesting

      Our CEO refers to our code as "spaghetti code". I work for a multinational corporation with an engineering base of a few hundred in the US and a hundred or so in India, as well as a manufacturing base of around a thousand (I believe) in East Asia.

      The code has been incrementally worked on for at least fifteen years, so yes it is more or less a jumble of sorts. Efforts have failed to make it cleaner, and have actually made it worse. The solution is obvious, and we're doing it now. My point is although our CEO has likely no knowledge of any programming language at all, he knows what our code is like.

    2. Re:Ridiculous article. by tjjfv · · Score: 1

      It's true that Management doesn't know what code looks like, and most programmers are unqualified to comment on code aesthetics.

      However, Management knows that since it can't recognize good code, and since an awful lot of the IT department is apathetic to good code, the company certainly doesn't have good code, so they must have bad code, and hence they are embarrassed.

      --
      tjjfv
      http://tjjfv.com
  39. I have seen some of this first hand. by www.sorehands.com · · Score: 2, Interesting

    Back at Aspen Technology, I was working with the IRMA card. They provided source code (In C)for their file transfer code for $100. I tried their code and found really dumbass bugs, such as:

    int wait_x(int milsec)

    But, when they didn't want it to wait, they would would call wait_x().


    When I wrote a list of bugs, it was 3 pages, single spaced.

    When at Microsystems Software, there were functions named, "we_are_fucked" and comments that
    said, "I know this is crap, but Dick wanted this now. I'll fix this later."

    That was 3 years after that programmer left.

  40. Is All Proprietary Code Bad? I think not! by Anonymous Coward · · Score: 0

    The article assumes most proprietary code is bad. Proprietary working code is not bad. Proprietary working code is valuable and worth hiding from other companies who would copy and resell it.

    The article is really an argument for those who want everything free and against those who believe you should be able to charge for a service or product. That is, non-capitalism versus capitalism.

    1. Re:Is All Proprietary Code Bad? I think not! by Anonymous Coward · · Score: 0

      You lack reading comprehension. The article explicitly does not assume that all proprietary code is bad. Oh I know, true slashdotters don't read articles. Can't let information and facts get in the way of dumb opinions, can we.

  41. Well I disagree by Anonymous Coward · · Score: 0

    I write lots of Perl code, and most of it looks as good as I can possibly make it, because that's the only sane way to make something maintainable. Ditto with adding comments for every sub/method, and making sure your error checking and logging are tight.
    It makes no difference to me whether the code will be released publicly or not.

  42. Reproduceable research ... by Pinky's+Brain · · Score: 1

    I understand the sentiment, but I think it's an attitude which hurts scientific progress. The data and your software for analyzing it should be part and parcel of the papers you write IMO.

    1. Re:Reproduceable research ... by sdedeo · · Score: 1

      I actually kinda agree. The problem is sort of cat-and-bell -- right now, only a few do it, and are penalized, whereas if it were required we'd all get used to seeing crappy code.

      --
      Protect your liberties. Donate to the ACLU
  43. Precious IP? by Anonymous Coward · · Score: 0

    There is very little 'intellectual property' contained in programs these days. Programmers are just glorified typists, using algorithms devleloped by the true guardians of intellectual property, scientists and engineers. Most of the algorithms implemented in programs are slow, and poorly done. This is especially true of java, since it shields the programmers from most of the complexity.

    Companies taking credit for this, are taking credit for other peoples work. The engineer develops the algorithm and proves it, the programmer simply types it in, or converts it into another language.

    There is nothing ground-breaking in code, just sloppiness on the part of programmers.

  44. So what else is new? by Tim+Ward · · Score: 1

    I've know this for decades, for far longer than the open source movement has existed (and the main difference there is simply that they don't mind people seeing that their code is crap).

    Someone asked me just this week for a copy of the code for my web site, so that they could set up something similar. I refused, because it is crap code and I don't want anyone else to see it. But at least I explained this reason honestly!

  45. I own some "proprietary code". by dpilot · · Score: 1

    I can't release it because it belongs to my employer.

    But other than that, embarrassment is certainly part of the deal. I try to do a good job, but to be perfectly honest, I'm not really a programmer, and this code bridges the gap between my "real designation" and programming, simply because I'm one of the people who can stand in both worlds. Beyond that, it's a learning experience - there are some number of stupid things embedded in there. Every now and then when I have spare time, I try to remove some stupidity. But let's face it, the code works and it delivers working, qualified products, embedded stupidities or not. My desire and effort to remove "unlearned practices" is just that - my own - and largely on my own time, as I said, because the code "works," and I'm being paid to deliver something that works, not something that is elegant and pretty.

    That said, the code is being used in its second production technology. The new version is much "prettier" and more elegant. Is it clean? No, though it's much better, there isn't enough time to really clean it. Have I backported the cleanups to the last technology? No. The old version is "qualified", and the effort would be only for my own vanity. Current plans are to port the code to a third technology. It'll be cleaner, and maybe at some point I wouldn't be embarrassed for it to be seen.

    But remember... at the moment, delivering clean code is MY goal, delivering working code is my employer's. There is some congruence between the two, but not necessarily a lot. Sometimes we do ugly things to meet schedules.

    --
    The living have better things to do than to continue hating the dead.
    1. Re:I own some "proprietary code". by Tweekster · · Score: 1

      so you dont own it, you just wrote it. your employer owns it. you are immaterial

      --
      The phrase "more better" is acceptable English. suck it grammar Nazis
    2. Re:I own some "proprietary code". by dpilot · · Score: 1

      True. For that matter, my embarrassment at someone else seeing it is immaterial. If my employer wanted it released, it would get released, though I could probably wrangle a bit more time to make it less embarrassing.

      --
      The living have better things to do than to continue hating the dead.
  46. Secret UI Too by MrSteveSD · · Score: 1

    In certain vertical markets e.g. software bought by energy distributors or water companies, rival software companies don't want each other to see their products at all let alone the code. The idea is that if the rival sees some of the cool things in the product, they will just copy it. You usually can't even get to see the software at all unless you are clearly a potential customer.

    1. Re:Secret UI Too by PPH · · Score: 1

      In certain vertical markets e.g. software bought by energy distributors or water companies, rival software companies don't want each other to see their products at all let alone the code. The idea is that if the rival sees some of the cool things in the product, they will just copy it. You usually can't even get to see the software at all unless you are clearly a potential customer.
      I've seen some of it, and its crap. The code might be pretty, well documented and elegant. But if a newcomer who actually new the business ever got a peek at it, they could easily knock the incumbents out of the market .... if the customer was interested. It appears as though the developers put all their money into a kewl UI without figuring out how to calculate voltage drops or system stability correctly (I'm thinking of electric utility operations applications here, my area of expertise).

      This may be due, as you stated, to the vertical nature of the industry. Also to the small customer base and the way the s/w is marketed. This stuff is expensive! This is mainly due to the small customer base over which the cost of product improvements can be spread. Its not like you can count on the Halo 1/Halo 2 customer base to fund the next version. The marketing is pretty closed as well, probably in part to keep competition away from the market. In fact, the entire industry is strangely closed. The application vendors have a pretty good deal going in that if the system blows up at one utility, the IT department at the one next door will probably never hear about it.

      Following some major f*kups in utility operations due in large part to software, I'm surprised that the utility industry hasn't pushed for more open source applications. See the code, audit the code, and get critical bugs patched fast. If the vendor won't do it, patch it yourself. The vendors would have to shift their business model to a maintenance contract basis and then they'd be forced to perform.

      --
      Have gnu, will travel.
    2. Re:Secret UI Too by MrSteveSD · · Score: 1

      I've seen some of it, and its crap. The code might be pretty, well documented and elegant. But if a newcomer who actually new the business ever got a peek at it, they could easily knock the incumbents out of the market ....

      I used to work as a developer for such a company and there was a real lack of knowledge of the business area. The company was always too stingy to hire people who really knew the particular business sector, so we often just had to make educated guesses. The code could also get pretty bad because they liked to hire cheap people. After 6 months I had usually managed to train them up pretty well, but by that time they had already generated lots of crappy code.

      This stuff is expensive! This is mainly due to the small customer base over which the cost of product improvements can be spread. Its not like you can count on the Halo 1/Halo 2 customer base to fund the next version.

      Yes, it's expensive due to the low number of sales. We used to have a joke that the ultimate nightmare would be to win the lottery, get really drunk, then wake up in the morning and realise that you had bought ten copies of our software while under the influence.


      The marketing is pretty closed as well, probably in part to keep competition away from the market.

      Well here in the UK any procurement over a certain cost has to be open to everyone. So if a company is looking for some new electricity system, it has to be public and open to all suppliers. We used to spend a lot of time responding to these RFPs as they are called, but often I think the customer had already made up their mind who was going to win anyway. Everyone just lies on these RFPs anyway because they can't take the risk that the competition is not lying. So if the RFP says "Does your product make cups of tea?", we'd just say yes, because we could not take the chance of being eliminated at an early stage when we knew everyone else was probably going to lie anyway.

      In fact, the entire industry is strangely closed. The application vendors have a pretty good deal going in that if the system blows up at one utility, the IT department at the one next door will probably never hear about it.

      Well usually the customer would have another company supporting our product and the associated database servers. This was a nightmare because you end up with a game of blame tennis whenever anything goes wrong.
  47. No. by oGMo · · Score: 2, Insightful

    No, this isn't the reason things are kept proprietary. Stop and think for half a second:

    1. Design, Policies, Marketing
    2. Development
    3. Delivery

    If something is going to be designed and released Open Source, this is decided up front. It has legal implications, especially when you might be interfacing with external third-party libraries and making platform decisions. Then code is written.

    Things are exactly the opposite: closed source leads to poor code. No one's going to see it. The product has to get out of the door fast. You hire crappy budget programmers. You don't enforce disciplines of good design and code. Marketing runs the show. There is no ability for the community to see, contribute, and fix. All of these things about the closed source process make crappy code easy. I've seen them all.

    But of all of these, no, crappy code is not the reason people don't release their source. I've seen plenty of craptastic code released by companies, that of all things is hardly going to stop them. Especially when improving the code is one of the benefits of releasing it.

    --

    Don't think of it as a flame---it's more like an argument that does 3d6 fire damage

    1. Re:No. by ClosedSource · · Score: 1

      "You hire crappy budget programmers"

      So the theory here is that paying programmers a poor wage leads to bad code, but paying them nothing leads to good code? Please explain the economic model you base that on.

    2. Re:No. by oGMo · · Score: 1

      No; when you're only willing to pay low wages, you get what you pay for. "Good programmers" are good because they love to do what they do, and often do it just for the love of it: thus free software. Low-paid programmers who scraped through college to get that "high-paying" tech job, but otherwise don't care, and are crap. But they're the only ones willing to take that low-paying job. They're not the sort that will write free software.

      --

      Don't think of it as a flame---it's more like an argument that does 3d6 fire damage

  48. Coca-Cola's secret recipie by Jeremy_Bee · · Score: 2, Informative

    Why doesn't Coca-Cola release their secret recipe? Is it because it's bad? Coca-Cola's "secret recipe" is basically just to add massive amounts of sugar.
    McDonalds "secret sauce" amount to mixing ketchup with mayonaise.

    So, Yes. Part of the reason for these kinds of secrets is that they are "bad" in a sense.
    At the very least, it would be embarrassing to the companies in question to have stuff like this spelled out. :-)
    1. Re:Coca-Cola's secret recipie by DMUTPeregrine · · Score: 1

      Actually, in the US, it's to add massive amounts of High-Fructose Corn Syrup. For some reason they seem to think this tastes like sugar, it just makes the cokes taste like a diabetic's piss.

      --
      Not a sentence!
    2. Re:Coca-Cola's secret recipie by evilviper · · Score: 1

      Coca-Cola's "secret recipe" is basically just to add massive amounts of sugar.

      Except Coke has ~5% less sugar than Pepsi, and the two taste nothing alike.

      --
      Slashdot gets worse every day... Pipedot: News for nerds, without the corporate slant
    3. Re:Coca-Cola's secret recipie by tknd · · Score: 1

      In my younger days, my dad used to work at a Pepsi distribution plant. There, they would maintain the machines that filled the cans and bottles with soda and package them for delivery to the local businesses. The materials came to the plant and one of the materials was the syrup that was mixed with the carbinated water to form the soda.

      While he worked there we basically had an unlimited and free supply of Pepsi. Drinking Pepsi was basically cheaper than drinking our own tap water.

      And I'll tell you, after a year of drinking Pepsi like water, there is a huge difference in the tastes of Pepsi and Coke! I still taste it up till this day. If it was simply a trick to adding enough sugar or caffeine, I would buy your argument. But I'd say the real answer lies in the artificial flavors since Pepsi actually has more sugar and caffeine than Coke.

    4. Re:Coca-Cola's secret recipie by Antique+Geekmeister · · Score: 1

      Don't forget when "New Coke" came out, which tasted more like Pepsi, then they realized people liked Pepsi in taste tests but actually preferred to buy the old Coke, and came out with "Classic Coke". But in the process they stopped using cane sugar and switched to corn syrup, at least in the US.

      Try the Coke that's kosher for Passover and notice the taste difference: the kosher stuff has cane sugar. (I'm an engineer: I've drunk enough of the stuff on late night work sessions to be a connoisseur: yeah, there's a taste difference.)

    5. Re:Coca-Cola's secret recipie by kyz · · Score: 1

      Coca-Cola's "secret recipe" is basically just to add massive amounts of sugar.

      Nonsense! All fizzy drinks are primarily sugar water (or HFCS water in the USA). What distinguishes them, and gets people to buy one rather than the other, is marketing and flavour. Coke retails at over 7 times the cost of generic cola. How the fuck do you think they get anyone to buy that?

      Firstly, extensive brand marketing. This is the main reason people buy Coke and not generic cola. Generic cola doesn't sponsor your favourite sports, associate itself with your favourite bands and saturate the media with feel-good advertising.

      Secondly, consistent product. Look at the New Coke debacle if you somehow think this is unimportant.

      Coke's "secret recipe" is the difference between generic cola and "tastes exactly like Coke" generic cola. You can trademark a "dynamic ribbon device", but you can't trademark white writing on red background, and you can't trademark a flavour. Now do you see why they protect it as a trade secret?

      --
      Does my bum look big in this?
    6. Re:Coca-Cola's secret recipie by Bert64 · · Score: 1

      I always preferred the taste of Pepsi to Coke...
      I do hate the various "diet" and "low sugar" variants of both tho, they are utterly disgusting and taste completely awfull, they also taste a lot sweeter, but not a nice sweet, it's a sickening artificial sweetness.

      --
      http://spamdecoy.net - free throwaway anonymous email - avoid spam!
    7. Re:Coca-Cola's secret recipie by jadavis · · Score: 1

      Actually, in the US, it's to add massive amounts of High-Fructose Corn Syrup. For some reason they seem to think this tastes like sugar

      Fructose (sugar from fruit) and sucrose (cane sugar) are both sugars.

      It's actually somewhat more natural to use fructose in a drink. A naturally sweet juice is sweet because of fructose, not sucrose.

      There may be ulterior motives, or you may prefer one over the other, but fructose is a real sugar.

      --
      Social scientists are inspired by theories; scientists are humbled by facts.
  49. The Emperor's New Clothes by kidphoton · · Score: 1

    The problem with this thesis is that in order to be embarrassed you have to 1) know that you did something wrong,
    and 2) care. The only people who might know that the code wasn't beautiful are the developers, and who listens to them? To the rest of the company, it doesn't matter if clicking on a button causes some message passing to happen in some elegant MVC architecture, or if it yanks a string tied to the tail of a gerbil on a wheel. As long as the pretty lights happen, then the product is flawless. I think what they're protecting is their customer's perception of the value of their IP. If they open sourced their code, the marketing department would have a much harder time selling their product because they couldn't fall back on the "our product has bigger juju" argument. Who would want to pay for a product that has no visible difference from a lower priced or free product unless the higher cost product had extra magic? Actually creating IP that's worth protecting is really hard, it's much easier to just claim that you have, and hide the truth in closed source.

    1. Re:The Emperor's New Clothes by ClosedSource · · Score: 1

      "The only people who might know that the code wasn't beautiful are the developers, and who listens to them? To the rest of the company, it doesn't matter if clicking on a button causes some message passing to happen in some elegant MVC architecture, or if it yanks a string tied to the tail of a gerbil on a wheel."

      I'd go even further. If you are a professional developer (i.e. someone who develops real products - not just an academic) the value of an "elegant MVC architecture" entirely depends on the needs of your business. Doing additional work to make your software "elegant" without a business case is a bad trait in a developer. Now you may do it to make future enhancements easier to make and that's a valid reason as long as you've determined that's a reasonably likely scenario, but it shouldn't be done blindly just because somebody who knows nothing about your business says it's a "best practice".

    2. Re:The Emperor's New Clothes by Fulcrum+of+Evil · · Score: 1

      The value of MVC is that it results in a better seperation of interface code, isolation of business logic, and lower bug count than alternatives. This results in lower overall cost and the option to add new interfaces in the future. Sure, it may not be appropriate for one off hacks, but how often do they end up being used for years anyway?

      --
      "We returned the General to El Salvador, or maybe Guatemala, it's difficult to tell from 10,000 feet"
  50. Re:Companies hostages of their programers by PPH · · Score: 1

    Google old timers aren't very old though.

    --
    Have gnu, will travel.
  51. Dangerous Assumption by Anonymous Coward · · Score: 0

    This article is based on the assumption that all closed source software is poorly coded and that open sourcing a software project will ultimately result in clean code.

    For large projects, good software engineering practices are part of what make good software. It typically follows this path:

    * Requirements taken and formalized
    * Architecture designed from requirements
    * Software constructed (coded) from architecture and design
    * Extensive testing done through each stage to ensure correctness

    Bad software does not discriminate against open source and closed source.

    1. Re:Dangerous Assumption by ClosedSource · · Score: 1

      "This article is based on the assumption that all closed source software is poorly coded and that open sourcing a software project will ultimately result in clean code."

      And of course, since the author hasn't seen the vast majority of closed source code, there really isn't anyway he could prove that assumption anyway.

  52. That didn't stop Slashcode from being released by Anonymous Coward · · Score: 0

    I guess that, having no shame, Commander Taco was immune from the influence of embarrassment.

  53. doubt is a barrier to entry into a market by technoCon · · Score: 3, Insightful

    Last week at XP West Michigan, the speaker advanced the theory that a company with an older codebase is invariably a competitive disadvantage and that anyone who builds a new system that does the same thing will eat their lunch. He went so far as to claim that this mechanism would result in Microsoft's doom. And I partially agree because "technical debt" in a codebase behaves just like this.

    I think that an existing codebase may occasionally NOT be a mess or a competitive drag on a company. I'm not claiming this is frequent, but that it is possible.

    Now, let's suppose I'm a young, hungry company who wants to eat a big, established company's lunch. If I know his codebase is chock full of "technical debt," I'll know he's at a disadvantage because everything he does to respond to me will have to carry along the burden of that technical debt. This means I have a better chance of beating him than if he's got clean code. BUT if I don't know if his codebase is crufty or not, that'll sew doubt into my analysis. That doubt will give me pause and provide a barrier to entry into that market.

    You'll note that I made no mention of IP heretofore.

    Thus, the company with a codebase that is ashamed of its codebase will be keep the extent of its cruftiness secret, to discourage competitors. Conversely, if a company knows its codebase rocks may consider IP to keep things mum, but if it buys into the line of thinking above, it may show off its codebase to warn off potential competitors.

  54. Absolutely true. by etnu · · Score: 1

    Anyone who's worked for a large company (even companies with "good" software engineering practices) knows how awful the internal systems are compared to the stuff released to the public. There's not a single company in the world that has an internal engineering department that doesn't have a ton of shitty code. The scary thing, though, is the denial of the bulk of the employees. I'm pretty sure that this is because the people who wrote the original shitty code are now VPs and directors, and nobody wants to say bad things about their boss' code.

  55. Samsung's Linux rootkit by MillionthMonkey · · Score: 1

    So Samsung wrote some truly crappy Linux drivers? Well, Samsung's printer driver looks like it was written by a college intern on his first assignment - which probably means it was written by a college intern on his first assignment. Do you really thing Samsung is going to assign their best developers to writing a Linux driver, especially when Linux folks will just reverse-engineer it anyway because they don't like something about it? No, Samsung is going to give the project to the lowest-level code monkey they can find. OF COURSE the code looks crappy.

    That was the first rootkit I ever wrote after college... * sniff *...

  56. Embarrassing comment by dascritch · · Score: 1

    Heeeeemmm... Perhaps in the code there is a comment by a former employee about bad financial practices ? And as nobody in the legal or the director department know how to code, they didn't remove it, incase the programmes don't work anymore.

    --
    (Sorry my bad French) Je fais parler les Guignols de l'Info. Le pied, quoi.
  57. Nah by markov_chain · · Score: 3, Funny

    it's still there, they just renamed it "Perl Contest" ;)

    --
    Tsunami -- You can't bring a good wave down!
  58. It isn't the code that has the most value by Anonymous+Brave+Guy · · Score: 1

    Yes. You can build a successful business with proprietary code and still show it to the world.

    Indeed. I'm always somewhat amused when you see these company acquisitions in the software development business where the PHBs in the acquiring company talk about how wonderful a job they've done. It's always about two things: the customary tip of the hat to the "great staff" they've got, and then the patting each other on the back over all the IP they now own.

    What most PHBs don't get is that the people usually have far more value than the code. People who've spent a lot of time solving certain type of problem could solve it again if they had too, probably much faster and with a better solution since they'll learn from their mistakes. However, as anyone who's ever joined an established and moderately large project can tell you, just having the source code without the people who are experts in how and why it does what it does has very limited value, and almost none at all unless the documentation is unusually good. I suspect that most companies could open up most of their code bases with very little real damage, if there was any worthwhile business reason for them to do so.

    --
    If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
  59. True... but FALSE by TheAwfulTruth · · Score: 1

    My ghod, talk about not seeing the forest for the trees :(

    Sure, internal code can be embarassing. Whee, is that a revelation to anyone that works in or with software engineering?

    But that is NOT the reason AT ALL.

    Why doesn't Adobe open source Photoshop?

    Because then no one would buy it! You just DL a free compiled version from the net, or if you are a little elss savvy, from one of the 50 value added clones now all selling by people other than Adobe for $65 to the same peolpe that buy it now for $650.

    DUH!

    Companies don't just give away code they have been working on for years and has earned them and is still earning them millions of dollars. Virtually all of the large projects that have gone closed to open have done so because the original company went out of buisness or was bought by someone else and the bigger company didn't care about the source (re AMD/ATI for a recent (partial) example) Or the code really was now outdated and had no real profit potential anymore.

    Embarassing or not, if code is earning a company money, it's extremely unlikely they are just going to give it away.

    "Because it's embarassing" yeah, THAT'S the reason :(

    --
    Contrary to popular belief, coding is not all free blow-jobs and beer. Those things cost MONEY!
  60. What a load of twaddle. by AllergicToMilk · · Score: 1

    There are a many different ways to measure software.

    As programmers, we get very caught up in the concept of "code quality". We truly understand that there is good code and bad code. Shoot, there are websites ( http://worsethanfailure.com/ for example ) devoted to exposing bad code.

    However, from the non-programmer's point of view, the value in software is that it solves a problem. If you give something that solves a problem away you are giving away value. Publishing a solution to a problem can often make it easier for someone else to solve the problem. Either of these reduces the value of your solution and therefore directly diminishes the financial value of your venture. Investors don't like this sort of thing.

    These are the blatantly obvious reasons that people choose not to release source code.

    --
    There are only 6,863,795,529 types of people in the world.
  61. Re:Often companies can't release it for legal reas by arth1 · · Score: 1

    A lot of software contains proprietary libraries or other pieces of software provided by 3rd parties, which they are not allowed to distribute.

    And, in many cases, not even allowed to use. I've seen blatant theft more times than I care to count, mostly of open source code.
    I'm sure a major reason why companies won't let outsiders look at the source is because of legal implications, and the risk of lawsuits. The average CTO has no idea what's in the source -- whether it's gems they can sell in the future, or crap that makes them look ridiculous, or it plainly belongs to someone else. So just to be on the safe side, it better be kept under lids, like Schroedinger's cat.
  62. 3rd reason - barrier to entry by davros-too · · Score: 1

    If I release my source that removes a massive barrier to entry for new competitors who would otherwise have to spend a lot of time and money developing the equivalent of our in-house systems. Why would I want to encourage new competitors? If we can say we're the only one in our space offering a particular service or feature why would I throw that competitive advantage away? I do understand there's usually a lot more to each offering than just the software - but it can be a major factor.

    I believe our code base is way ahead of all our competitors - that is a competitive advantage and there's no way I'm going to give it away.

    This logic clearly doesn't apply in many of the situations already discussed in this thread. But I haven't seen any mention of this particular dynamic which applies quite commonly.

    --
    In theory, there's no difference between theory and practice; in practice there is.
    1. Re:3rd reason - barrier to entry by Bert64 · · Score: 1

      Because when you release it, you get to dictate the licensing terms...
      Your competitors won't use the code if one of the requirements is that it displays your company name all over the place (like the older BSD licence), but many other people/organisations who might learn from it couldn't care less.
      You can always dual-licence too, some companies may want to use the software but not comply with the advertising clause, you can decide wether or not to licence it to them under different terms. You might get as much value back as they get from the software, they might be in a completely different industry that doesnt compete with you, they might operate a similar business but in a different country where you have no intention of doing business.
      Or you can release it under a "no commercial use" type licence.

      Also, if people do rip your code off you can easily point to the code you released to prove it happened. If you keep the code internal, and a rogue employee stole it and gave it to a competitor, how would you know? How would you prove it? And how would you prove it was your code that was stolen and not the other way round?

      --
      http://spamdecoy.net - free throwaway anonymous email - avoid spam!
  63. Bullshit! by Anonymous Coward · · Score: 0

    I work for a company that produces traffic managers for ISPs and the like. These allow our clients to block or restrict P2P traffic, streaming media etc. The company is the only company in Europe that can detect Skype. I don't consider that to be embarassing, actually I think it's something to be proud of (from a purely technical PoV, that is). Even more important, it's a competitive advantage for us, and it would be very unwise to give that away by publishing our method to detect Skype.

  64. Re:Windows is an example of bad proprietary code? by renoX · · Score: 1

    Nobody said that Windows is perfect but the biggest reason why Windows is hard to maintain is the compatibility with all these applications, and it's also a big part of why Windows is successful.

    And yes, Windows is still successful: Vista's issues are only growing pain, I remember similar comments on XP: XP is a beast, W2000 is much better, it's using too much resources compared to W98, etc.

  65. Bullshit by timmarhy · · Score: 1
    What crap. the bottom line companies don't release it is they don't want to pay shittons of money to write a software app for their business then have their competitors come along and use it for free.

    I'm not suprised that the obviousness of this escapes many of the OSS crowd, who tend to not have any grasp of what a business needs or how a commercial entity "thinks"

    --
    If you mod me down, I will become more powerful than you can imagine....
  66. Re:Often companies can't release it for legal reas by Cjstone · · Score: 1

    I've seen blatant theft more times than I care to count, mostly of open source code. That's why they usually use BSD code instead of GPL code.
  67. Having read the article... by Captain+Sarcastic · · Score: 1

    ... I can see some of his complaints. His main gripe is that there is seriously bad software out there that is trying to keep people from seeing how bad it is with a variety of defenses like "copyright," "trade secret," and whatnot.

    However, I would suggest that "badness" (horrible grammar, but the idea comes through) is in the eye of the beholder. I worked for one company that had licensed its source code to a customer, with the idea that they could make changes to "fix bugs." The customer proceeded to take the entire source code and write their own program, claiming that a "bug" is where a system doesn't do what the user wants it to do ("Minesweeper won't let me open Word documents! That's yet another bug in the program!") and convinced a judge that our software was so "bad" that they were justified in using our code to develop their system and to write utilities that let them migrate the data from our system to their new one.

    Yes, the examples listed in the article were pretty egregious (and the Diebold debacle has convinced me to use absentee ballots instead of the machines our county has picked up), and the article is an opinion piece rather than a legal decision, but the point remains that "trade secret" protection shouldn't be thrown out because some use it to prevent embarrassment, because of the many worthy companies that it does help.

    --
    Strike while the irony is hot! -- The Freethinker
  68. Reasons for keeping code secret. by Z00L00K · · Score: 1
    • Avoid embarrassment due to bad code/style/formatting/comments.
    • The code actually contains code stolen from somewhere else and the company don't want to show that.
    • The code may contain parts protected by government etc.
    • You actually have something worth protecting like a very special algorithm.

    There may be more reasons, but those are the ones that I think are plausible.

    --
    If builders built buildings the way programmers wrote programs, then the first woodpecker would destroy civilization.
    1. Re:Reasons for keeping code secret. by Anonymous Coward · · Score: 0

      Another one which I haven't seen mentioned yet is that there would no longer be anything stopping people from using your software without paying the licensing fee. If all the source is available it would become far too easy to find the line of code that makes sure the serial number is authentic (or whatever other system is in place) and simply comment it out. I think it is safe to say that many software companies depend on licensing fees as a means for revenue generation and this would take a major chunk out.

      And what is the company to gain for having released the source? Perhaps a few security flaws will come out and hopefully be patched before exploited. It seems unlikely that the people reading your code will give as much back as they take from it.

  69. Right up until the next revision cycle by crovira · · Score: 1

    if your competition is able to prove the capability of their software to evolve to meet changing business requirements, the competition will get the business, not you.

    (M$ Vista versus Linux on the server and OS X on the client, anyone? That's the real reason Vista sucks and Linux and OS X rock. And M$s customers are starting to be aware. [Microsoft, the Erie-Bucyrus of the software world.])

    --
    MSBPodcast.com The opinions expressed here are my own. If you don't like 'em... Think up your own stuff.
  70. I don't think so by 91degrees · · Score: 1

    Usually the people making the decision aren't even aware that there is such a thing as "good" and "bad" code. They'll assume that it works so it must be okay.

    They most likely refuse to release because they don't have to. The default state is to not release. Unless you give a good reason to release they'll go with the default

  71. Rabid FOSS zealots... by TheVelvetFlamebait · · Score: 1

    ... ATTACK!!!

    --
    You know, there is a difference between trolling and pointing out the flaws in your reasoning. Just saying.
  72. This only makes sense by hey! · · Score: 1

    if the people who are making decisions would be embarased by code quality issues.

    I think the answer is more straightforward. It is easier to (a) value and (b) liquidate the value of your know-how if it is in the form of patents, copyrights, and secrets.

    Suppose you want to sell a business that comes down to having better people than the competition. The buyers have to negotiate with those people, figure out how to manage them, and worry about them quitting or even defecting to the competition. On the other hand, if you are selling "IP", the buyers can quantify what they are buying more easily.

    It comes down to whether you treat the software as a commodity or the people as a commodity. Wisdom says not to treat the people as a commodity, but sadly people are much harder to control than software.

    There are exceptions to this rule, but generally IP in the form of trademarks and brands plays a big part in the valuation of open source businesses.

    --
    Post may contain irony: discontinue use if experiencing mood swings, nausea or elevated blood pressure.
  73. Hogwash by gatkinso · · Score: 1

    The management who decides to keep code closed has no idea if the code is great, lousy, or mediocre. They simply think that for whatever reason they will profit more by keeping it closed.

    The same thing can be said for much classified software and harware for that matter. Once it is classified, it becomes far easier for a company to keep it's intellectutal property secret (from competitors). This is an open and rife abuse of industrial security that is not ever going to go away.

    --
    I am very small, utmostly microscopic.
  74. Other Reason by trimCoder · · Score: 1

    I agree that this is 'a' reason. But one out of many. Others include:

    Protection of competitive advantages within the software.

    Protection of competitive advantages of processes illustrated through the software.

    Security (this is the biggest one in my opinion).

    Costs - Support and compatibility costs

  75. I know other reasons by Anonymous Coward · · Score: 0

    I make my living writing code, and it's a matter of pride that it be elegant. Helps future sales if you can show beautiful, well commented code to the software engineers in the prospective new customer's outfit. No one much will ever see it, that's not the point. Maintainers do like the clean code and they tell us so!

    But: I do mainly embedded programming. A rather famous microchip maker's CPUs has the usual sorta broken dev system (which is mainly free, and I wish open sourced so I could fix it). Here's why it's not open.

    Some of the debug code they put into the target is real well hidden, and their memory dump tools refuse to dump that part of memory to keep it so. We asked them about this, as we have an NDA with them already. Absolutely no go, and the guy sounded freaked we'd noticed. Well, there's no stopping someone who knows all the basics, doh, so we reverse engineered and recovered that code -- we had the tools as this app needed incircuit updating anyway, so we did our own burner/reader.

    Patent violations galore!

    In this crazy world of IP and patenting everything in sight, it's darn hard to avoid stepping on someone's patent on something stupid/obvious like "inserting a call to debug code where the breakpoint was set" or "comparing PC with a hardware register". Both of those patents currently exist!

    And in M$ case, it's probably not only embarrasment, but much stealing from GPL open source (ugly or not) and similar issues.
    Having devstudio, I once trolled through the source code for printf. Thoroughly obfuscated for some oddball reason, and split across multiple files, gheesh. MFC is moderately clean inside though, so it shows they CAN do alright. Most bad MFC based code is done because someone didn't realize a style bit could be set and solve their problem, or that they were trying to handle something in the wrong place. Paul DiLascia and I have had some good belly laughs on this one, and we've both been caught writing elaborate and completely unnecessary workarounds.

    Most of M$ bugs are due to features that were inserted without thinking about interactions with say, security. Now they can't fix them (like remove activeX) without breaking everybodies apps including their own. COM/activeX are a main reason they don't like ODF as well -- It doesn't easily support running unsafe binary code along with your document...
    I feel for them. When they break backwards compatibility as they must to actually fix Windows, well, what exactly will be the advantage over linux at that point? None.

    I don't care if Adobe open sources Photoshop, as I use the Gimp. The adobe pdf reader is the only thing on this ubuntu system that crashes. I know for a fact that part of the lousy UI in the free reader is to get you to buy the paid for one, as I know one of the programmers there.

  76. The right way about it by Anonymous Coward · · Score: 0

    Don't run away scared that someone might sue you for code you released. BSD GPL and many other OSS licenses state "AS IS" for the code. No guarantee.

    And someone will, if they think they can bully you, WILL try to sue you but remember they don't have any standing to sue. Ask them for the contract between you two.

    Arseholes exist. If you live your life according to what they might do, they've already won.

  77. So you wrote some of your own libraries by dgym · · Score: 1

    That's nothing, I wrote my own language, three times. If only I was joking...

    Now that you have all these libraries have you considered releasing them under an open source license? I know there is no direct incentive to do so, it is extra work to give away lots of original work for free, but what benefits society benefits you.

    You might even get lucky and have some bugs reported, sometimes even fixed. If you are proud of your product then the best bug is the one that is fixed before your clients ever see it.

    1. Re:So you wrote some of your own libraries by fyngyrz · · Score: 1

      Now that you have all these libraries have you considered releasing them under an open source license?

      They aren't libraries. They're built right into the application. They could be released as libraries with a little work, as they certainly are highly modular, but generally speaking, code that goes into my commercial work stays there. Should I release something, it'd be using public domain, not a restrictive mechanism. Like this.

      --
      I've fallen off your lawn, and I can't get up.
  78. So True by Anonymous Coward · · Score: 0

    I spent some time working as a programming consultant for Accenture. I saw some pretty awful stuff, including a 1,200 line gem that simply flipped a table from the db so the rows became columns when displayed. Yeah, I'd want to keep that hidden too...

  79. Maybe they don't own it all by Maximum+Prophet · · Score: 1

    Another reason that companies don't release their code, is that they might realize that they don't own it all, or can't prove that they own all their source. Some programmer, long gone, might have copied substantial portions from a book or previous employer. By keeping it secrect, they limit their exposure to lawsuits.

    --
    All ideas^H^H^H^H^Hprocesses in this post are Patent Pending. (as well as the process of patenting all postings)
  80. Commoditization and FOSS/proprietary projects by Da+VinMan · · Score: 1

    I think your explanation is the best and simplest I've read in years as to why FOSS doesn't work for non-commoditized software markets. You're not selling an algorithm, a specially patented method, a trade secret or anything like that. Instead you're selling the sum total of your experience in the field as expressed in a software package. I understand where you're coming from entirely.

    However, the same argument could be asserted against all of FOSS for exactly the same reasons. Why should an efficient and well written network stack be free? That also represents years of experience. The same could be said for word processors, web browsers, web servers, ray tracers, 3D engines, etc.

    I think the key difference is in the business model and the evolution of the information-driven economy. As certain practices become common knowledge and relatively easy to implement, someone out there is going to scratch the itch and produce an open source version of that functionality; especially if they don't have a model or interest around leveraging that implementation for profit.

    Specialized interests and non-commoditized areas require too much effort to support with too little help from the public at large to be good candidates for FOSS implementations over the long haul. So, they stay proprietary because someone needs to get paid to keep it alive.

    Which brings me to my main point, and I think this is something I've always understood, but this line of thinking finally puts a finer point on it for me: FOSS is not about undermining the free market for software. The market forces after all are what has ultimately led to FOSS. At some point, it becomes my best interest to be open with commoditized implementations; why should I bear that burden alone when everyone needs it and could help with the package too?

    So, FOSS is for the commoditized software market. Proprietary is for the software markets of competitive advantage.

    Based on that reasoning then, I would have to say that using FOSS is never a competitive advantage for an enterprise, but not using FOSS can be a competitive disadvantage for an enterprise because I may in fact be bearing costs that my competitors do not because they have leveraged FOSS; where I may have opted for a more expensive option.

    And vice-versa, if I wish to produce specialized software that is about producing a competitive advantage to companies that they can not already obtain with FOSS (in which case, that would be the new market baseline in order to say efficient and would not actually represent a competitive advantage because its presence as FOSS package proves that is is in fact commoditized already), then it stands to reason that I would have to develop a proprietary product.

    Open sourcing a package that represents true competitive advantage would only ensure that I would bear the full cost of developing an expensive package (and developing anything that represents real competitive advantages is necessarily hard by definition), while potentially deriving no benefit from having done so, because as a FOSS effort I have no effective way to force my users to pay me for that effort. Because such an implementation is inherently difficult, my customers probably would not be able to "repay" me by helping with continuing development and maintenance.

    And that finally clarifies for me everything that's been happening in the industry over the last 10 years or so. FOSS is a great thing, and I think everyone should support it. However it can not and will not ever be the cause of any particular software company's fall from power because unless those company's stop developing products with competitive advantages built in to them, FOSS can not consistently actually advance the state of the art beyond the commoditized baseline over the long haul.

    --
    Please mod this post only if you think others should/n't read this. I have enough ego^H^H^Hkarma. Thanks!
    1. Re:Commoditization and FOSS/proprietary projects by DudeTheMath · · Score: 1

      I'm still considering your post. Allow me to expand on mine.

      As I said, any of our customers that wants to can expend the resources to create the (subset of the) financial calculations they require (we, of course, need to program to handle the requirements of all our customers). Any of them could then open their own source to their competitors. I think that's what prevents our customers from doing this. That, and the fact that when they lay out a small (compared to software costs) amount of money in consulting fees to look over their results, we often find they've managed to get it wrong :(.

      I think what's going on in my industry is that we haven't reached the (as you say) "relatively easy to implement" stage (the calculations are all common knowledge and have been for decades). Some of the calculations are the result of government regulation, and many of the interested parties fail to properly read the regulation completely.

      I don't know what will happen to my current company when someone decides to do this on a FOSS basis. We may be reduced to support and consulting (we already make it a selling point to have a research department whose responsibility is to follow all the financial laws at the federal and state level); we might be able to charge for bespoke programming that we know the client will release with an open license. In any case, I can hope the company is bought (presumably by one of our clients) before that happens.

      --
      You save only 59 seconds over 8 miles by going 75 instead of 65. Do you really have to pass that guy? Do the Math!
    2. Re:Commoditization and FOSS/proprietary projects by Da+VinMan · · Score: 1

      I wouldn't assume that your company would be put out of business anytime soon. I'm currently working with a customer that performed their own hedging calculations for years and they're just now converting to a package (might even be your company's or a competitor for all I know) because they finally figured out that they aren't accurate or consistent enough over the long haul. Regulations, changing trends, new models, etc. are all good reasons why that area will probably never be stable or easy enough for FOSS to address. It's kinda like using Quicken for your personal taxes: sure you can do it without the package and sure you could develop your own, but it's telling that there isn't a FOSS equivalent to Quicken (AFAIK anyway). It must be difficult enough to maintain that there's a reason the market has supported a proprietary package for this many years; despite the fact that it addresses a relatively well known domain.

      When, and if, your company's products are ever obviated by FOSS, I'm sure you'll just plot a new product strategy that involves ever more complex instruments, calculations, and that are ever more sensitive in splitting the ROI hair. No worries man. You're set for life. :+)

      --
      Please mod this post only if you think others should/n't read this. I have enough ego^H^H^Hkarma. Thanks!