Free Software, Get What You Pay For?
An anonymous reader writes "The Xooglers blog is running an interesting article on how big businesses may start out running free software but there is always the continued question of 'Should we go with something "real"?' at some point in their evolution. How often are technologies like PHP, Perl, and MySQL being pushed out once startups get managers who know nothing about the technology and only worry about name brands?"
I think it's unfortunate but in the IT world it is generally true there is no relationship between quality of software and cost . Some of the best software I've ever used has been free, some of the worst software I've ever used has been expensive.
IT and technology and particularly software can be (is) difficult to understand on many levels: functionality; efficiency; ergonomics; stability; etc. In a book (and God, I wish I could remember the title of this book -- one of my faves) talking about manipulating perceptions one of the discussions centered on the fact that when all other criteria are indeterminate or unavailable, it is human nature to assign credibility and worth based on price or cost. This is rife in the world of software.
Unfortunately, I see this as something taken advantage of rather that properly addressed.... sigh.
Since data management has a complete, underlying theory, as well as several decades of best-practices, it's pretty easy to assess quality. Just look at the list of what's possible, and see if product X or Y correctly implements more of the items. If both products are free/open and are equally reliable and secure, what's the point in using the product with the smaller number of features?
... I am .. a huge supporter of MySQL although I also have heard of instances where MySQL has had corruption problems. Hopefully the new version 5 has fixed that.
Some of the comments here are pretty scary. I'd expect to hear this from a summer hire working on a content mangement system, not somebody working at a big company on a system that involves MONEY:
If you don't have transactions you just roll your own. It's actually not hard at all.
Whoa.. he must be pretty fucking good. Let's suppose you have a DBMS with, say, two major apps using it. You need to adjust a value in 500,000 rows in a single transaction. If one doesn't get changed, and the others do, you are totally fucked. If one application ever sees a state where all 500,000 haven't been changed, you are totally fucked. Power failures, application death, DBMS death, all should maintain this invariant (of not being totally fucked). Your assignment: do this at the application level with a MyISAM table.
I can think of ways to do it, but they aren't transparent to the applications. They involve basically implementing a DBMS layer in between the app and MySQL and putting implementation-dependent columns in the tables (bad design: only business-related data should be explicitly placed in columns).
We have been using MySQL on our site (www.degreeme.com) since its inception and have never had a single problem.
Yeah, hopefully... WTF?
People who push the "no transactions" FUD also forget that transaction support often reduces the reliability of applications
Unbelievable... maybe he means "instead of silently accepting crap, the application returns an error when an error actually occured".
The truth is that it's not the end of the world if you mess up a row or two in most databases
Whew, now I know what to tell my clients when they cut checks to their suppliers based on bad data printed on invoices.
Well, that depends on what you mean. In some sense we had no need for [transactions] at all, obviously, because we built the system without them.
Translation: we didn't have transactions, so we just left them out and crossed our fingers.
Question: if you aren't using transactions (or constraints, etc), how do you know if you had a problem? Do you hand-check the data? Do you have a script running ever 10 seconds to check?? "Consistency guaranteed by wishful thinking".
Oh well. Glad to see MySQL backpedaled on all the BS they used to spout and actually implemented some basic SQL features in the latest version 5.0.
Time is money.
Free and/or open source software such as Linux, the GNU tools, Mozilla, Open Office, GNOME, KDE, MySQL, Apache, Postgres, and many other wildly successful tools have been worked on for countless hours by skilled programmers and designers. Whether out of the kindness of their own hearts, desire for recognition, or a business investment, people have spent millions of hours designing, developing, testing, and documenting Free Software. Consider for a moment how much it woud have cost to pay each and every one of those people for their time. That's the amount of money that hass been put into Free Software.
If someone gives you a mansion, you don't assume it's worthless because you didn't pay for it. The worth is still there; someone else already paid for it.
The nice example given in the article clearly shows clueless managers and not convincing enough developers.
In small startups you may pick it because it's free. In giants like Google you pretty much disregard costs of software purchase and just compare features. "Does it do all we need, well?" is the first and ultimately relevant question. All the others are secondary once the only competitors in the field have been estabilished. In case of databases there is no competition here, and all discussions should have ended at that first question. Does it do all we need, well? Yes, NOW it does, all we needed was added, it works fine. Does anything else do all we need, well? HELL NO! MySQL is an absolute master in the field of speed, when properly optimized beats everything and everyone (at costs of all the quirks we had to fight in the meantime). Everything else is much slower, and most choices will be simply way too slow for the expected workload.
Free (Gratis) or not, doesn't matter here at all. Open Source matters, if it doesn't do what we need, we can get it to do it, but that's not essential.
Managers who don't get it, won't work long. Simply because they will keep failing delivering working projects on time.
Anagram("United States of America") == "Dine out, taste a Mac, fries"
That is when they die. Seriously. Look at these guys, what was their name again, ah, yes, Google -- kinda silly but you know these computer types -- anyway, where would they be if they had dumped their Linux and stuff for Windows XP or even OS X (the Unix of the great GUI but crappy thread performance)? Not trading at about $400, that is for sure.
Don't worry. This is evolution in action: The clever ones, the more efficient ones survive. Those who pay $400 for Microsoft Office instead of using OpenOffice for free are not efficient. If Open Source can keep the legal playing field level, the rest will take care of itself.
Perl is definitely a prototyping language. Rolling out anything serious in Perl is, let me put it that way, unwise. Performance about 10 times worse than C/C++, bug-prone syntax, source=executable approach, all great for quick and dirty fixes, not for serious projects.
PHP is good for making DHTML and that's all. If you want something serious, get a backend in a mature lower-level language, launch it through PHP to get things done, post results to pages generated through PHP. Anything more in PHP is definitely dangerous, and always a hack.
MySQL - Wrong, wrong, wrong. It's not a toy/prototyping/testing database. Sure it's easy to use and gratis, so integrating it with quick&dirty hacks in PHP or Perl feels natural. But it's like recreational riding a thoroughbred horse, a smooth, easy fun ride. And if you try to put the thoroughbred to a cart, the effects are definitely poor. Jumps? Okay, not impressive though. Cross-terrain, endurance, dressage? Sucks. It's not a versatile horse, and MySQL is not a versatile database. Just put the thoroughbred to gallop and you'll be far first in the means of speed, same about MySQL. Give it a highly specific, simple task where speed is essential. Not synchronizing sales over the whole corporation, not optimizing routes for train schedule, not managing an air traffic tower, where the complexity requires really sophisticated solutions. You put it to pull a single random ad that matches a keyword from a database of ten millions and increase display counter on associated field by one. And do it ten times a second. That's the kind of work which MySQL is made for, and that's where all the alternatives suck.
Anagram("United States of America") == "Dine out, taste a Mac, fries"
That simply illustrates the articles point: RHEL is expensive therefore it's considered real and not a toy.
But [MySQL is] like recreational riding a thoroughbred horse, a smooth, easy fun ride.
Heaven forbid we actually get to use technology that is fun, Fun, FUN! Now get back to maintaining that Fortran app, you insensitive clod!
I'm amazed that anyone would say this. Certainly MySQL didn't have certain features like views and stored procs pre-5.0, but these don't make for a "real" database. We've been using MySQL since 3.23 and haven't had a single failure and gotten every scrap of work done that we needed to do. We've leveraged the binary log files to make near-real-time replicas of servers on multiple machines and have yet to lose a single piece of data. It amazes me just how robust MySQL is. Of course I'm not a SQL purist. I think that DBs exist as part of a larger system and play a specific role. I prefer my app-level logic and data where it belongs - in the application driving the db. Call me old school, but I can live in a world without views and stored procs just fine. (I can even live without subselect, but I will admit that was a nice add-on in 4.x).
If you don't want crime to pay, let the government run it.
Java is so clumsy that, if you are doing something with it, you always start by doing a lot of design before you code.
Come again? You code without software design ? Tell me exactly how do you write C or C++ code without designing, or python code ? (and who let you near a computer in the first place
Yeah you can definitely write a 5-line perl hack without designing, but if you write just about anything that is worth a dime, you better plan first and dont fix/patch/alter the stuff afterwards for years. Maybe it's just that i have not had 1-day or 1-week projects for a while, but i usually don't write one line of code on the first day at all. I prefer brainstorming, research and analyzing that will save me a headache and hopefully give me a few extra days at the end of the project to polish stuff.
Java is not slow when code goes into millions of lines, it's the coders who mess it up. I have seen working huge java code, i have written huge working java code which is fast. You are still being fooled around the fact that the swing gui used by java is slow and that java is often used along with oracle that is slow. Don't let this fool you. Java is as fast as C++ in pure arithmetics. If you really need some freaky speed boost, you can write the speedwhore code in C and JNI to it. You can also have your pointer tribble there if you need it, but Java is designed so that it would avoid the need pointers in the first place (all the regular objects in java are actually pointers). Besides, Java is the only thing that will work on almost any platform. And this is what counts in year 2005.
C and C++ are not platform independant and that is what you rarely want to use nowadays. You can never know if your stupid management wants to run this on windows or linux or even sun tomorrow. And once you get your code compatible with all major os's , the source is so #define'd that it's nearly impossible to manage. I won't even start about the library dependancies.
Just use every language where it belongs and don't go around bashing java or anyone else with accusations that can't take 1 mm of water.
Oh well, ok, you can bash php, i have nothing against that.
I'd tell you the chances of this story being a dupe, but you wouldn't like it.
Perl allows non-CS users to write moderately complex programs such as those needed for chip design whilst shielding them from some of the intricacies of other languages. I think that using it for that purpose is a wise thing, as it enables non-specialist to make progress without becoming experts in decrypting the behaviour of templates, reflection or multiple inheritance.