I recently started learning open source technologies and very soon got frustrated as there are thousands of technologies and tools (each one having their own pros and cons). I am wondering if Windows approach of "All in One" is actually better.
views:
314answers:
14They both have their advantages. Which one you prefer to use on a regular basis is purely a matter of what works for you.
I think a big reason for this is because people want to make improvements to something that had the right idea, but it wasn't being applied well (or the way they wanted it to be).
Some software is also a popular choice for projects among University/College students for finals that they end up continuing development on afterwards. You can't always come up with something useful and easy enough for a project that hasn't been done before.
I think the main reason is people tend to suffer from the NIH syndrome (Not Invented Here). Most of us suffer from this but in controlled environments we are restrained in what we do. In the FOSS domain people don't have such restraints.
There are countless examples where people have insisted on doing something differently even when it's blatantly worse than the existing solution. This is actually quite an intriguing thing in FOSS where we are supposed to "steal" from each other. Look at KDE and Gnome for instance. Both camps are determined that they look different from the other camp so sometimes they make changes that really don't work just to differentiate.
In most cases it would be much easier to take an existing code base and make your changes there, but there is a certain satisfaction in knowing that you did the whole system yourself. But there is an upside and that's that you get far more new ideas when people start from a clean slate.
Actually in Windows too there are a lot of different tools for the same task. Just look at the plethora of editors and IDEs that are available.
The reason why open source has so many has much to do with the open source model itself. IF I don't like the way you have implemented something in your open source software, I can branch out. Each time I branch I create a new version of the software. Github takes this to a new level by encouraging developers to branch. Sometimes the hope is that the branched software will have innovations that can be integrated back into the original software. Sometimes it happens that the branched software takes a life of it's own.
Since you didn't specify what kind of programs exactly, I guess you talk about software development tools.
First, I'd like to point out that on windows there are many programs that do the same thing too.
Second, we don't live in ideal world, and tool A is good for some cases, but doesn't do well for other cases, tool B is ideal for cases that tool A isn't good with, and tool C requires you to invest time getting involved in internals of other tool, library, soure code, et cetera, but it handles almost any case a lot better than tool A or B.
As a tool developer/contributor point of view, if I don't like how my favourite project is being developed and I do have something to contribute (like a bug fix) but the project maintainer rejects for any reason (for example 'give me money'), I can fork off the project and do what I want myself. Eventually, if my contributions are useful for many people, my project will probably will be useful than the original one.
Why are there so many companies that produce cars, bread and tables? Wouldn't it be more productive to consolidate them into a singe mega-car, mega-bread and omni-table company?
It all starts with an "itch". When people dont find "exactly" what they want, they start writing their own. Even if the differences are minor. Also NIH (Not Invented Here) syndrome plays a role.
But given sufficient time, the good ones stand out. Tomcat emerges as the leader for servlet container, Apache for webserver, Eclipse for IDE, MySQL for database and so on.
Open source is all about freedom. We'll have to put up with this problem of plenty.
I am wondering if Windows approach of "All in One" is actually better.
Hmm, maybe people would still be using visual source safe as the "one and only" source control system.
No Thanks.
From my perspective it's an important part of the evolution in the open source ecosystem.
People tend to start their own projects if they don't like how someone is doing a similar project in terms of code/programming language/project leading/focus. When they do it well, the project will grow until it supersedes its predecessor. If it doesn't do well it won't "live" long or continues to be a small hobby project with only a few users.
That's evolution.
And as some other people stated, on windows are duplicated solutions too, like IDEs, Office suites, ERP programs, even games.
The choice that a user has to make may be hard for non educated users, but that's why there are PC magazines or just professionals, that (think to) know what software is good for which purpose.
Both in the open source world and in the non-free world, dozens or hundreds or thousands of people or groups start to work on some problem. Many of them have to give up early. In the world of commercial software, they simply disappear, hardly leaving a trace. In the open source world, they are just another abandoned project on sourceforge.
For many tasks, only very few solutions survive. In some cases, more than one solutions survive, but only because each solution offers something that other solutions lack. Obviously, conflicting goals (e.g. resource usage vs. eyecandy) make it more likely that different solutions exist, where each solution emphasizes one goal.
There are many tools, because people create different solutions and approaces. But then again, I am using only SubVersion for version control and not going anywhere else so far. There are many tools, but you don't need all of them. What is needed is a good categorization of the tools according to type, features, usability, popularity, support, continuity, what works with what, and so on. Then you just pick what you need. I agree that there is work to do in open source world, but for example SubVersion is quite easy to install and use.
Sure Windows world is alternative to open source. But it isn't necessarily better, if a component you need is in fact open source, you want to go to open world, want to save in license fees, or such.
A) Redundancy is not an exclusive FOSS phenomenon. Even monopolies have their (less notable) competitors -- while almost everyone uses Adobe Photoshop for raster graphics, some still use similar programs by Jasc, Corel or others.
B) Doing the same thing doesn't mean they're doing it the same way. Even if two programs seem almost identical, they usually differ in functionality, interface or paradigm. Merging "the best of both worlds" would often result in usability nightmares and inconsistent behaviour.
C) The easiest way to learn how something works is to make it yourself. Nothing teaches you as much about the way a certain API or language works as writing software in it. Often these toy programs end up becoming useful in some way or another and some of them eventually find widespread use or get picked up by a skilled programmer finding potential.
D) If programmers migrate, software has to, as well. Sometimes you learn a new language or settle on a better one only to find out your favourite API or application doesn't support it. Porting them to your new language of choice often leads to further changes making them unique and distinct from the originals. In some cases they'll get ported back to their original language and the result is reminiscent of a game of FOSS telephone.
E) Everyone has an opinion. Not every feature request results in a feature and not every program is up to the unique task at hand. Also, some people just crave perfection. The beautiful thing about programming and FOSS in particular is that if you THINK you can do it better, you can actually go ahead and try. No DMCA to stop you either.
If you want, you can look at it as an evolutionary process, yes. Some programs and APIs find their niches, some become stupidly popular and some just linger in obscurity or get eaten by the dreaded 404. But as long as there's still some traces of it on the web, someone could still go ahead and pick it up and breathe life back into it -- this is what distinguishes FOSS from non-FOSS. Death is not a dead end.
Basically, it's a combination of NIH Syndrome and an understanding of Open Source as a learning tool rather than a method used to create a product.
I don't think NIH is necessarily bad in Open Source, mostly because a really high percentage of Open Source projects never make it out of the "hobby" stage.
I have built complex systems on both sides of the fence, both FOSS and also on Windows platforms. While I love the free-ness and flexibility of Linux-based systems (making architectural decisions based on license costs instead of what you really need sucks), I can say with absolute certainty that I get more done with less people on Windows.
With FOSS, if you have a complex system and hire a new programmer, you generally need weeks to spin the person up on all the different pieces of the puzzle - languages, compilers, tools, etc.
Every Windows programmer I have hired in the last few years has been checking in code within one day of starting, sometimes within a few hours. That's the benefit of a homogenous platform. I'm guaranteed to get somebody who already knows our whole stack.
You really have to do a cost-benefit analysis of FOSS, to see if you really are in fact saving money. If you can get by on just one less person, over the course of a year, how much does a developer cost you vs. your license costs?