tags:

views:

493

answers:

11

This is a question I have been pondering for quite some time. A lot of the time when I'm programming and I want to make use of something, say, a plugin for a program or a library, I tend not want to do it because I can't even figure out how to install it.

For example, let's take jMonkeyEngine, let's say I want to use this engine for a java project in Eclipse: http://www.jmonkeyengine.com/wiki/doku.php?id=setting_up_eclipse_to_build_jme Why do I have to go through 10 long steps just to install it?

Or, another example, Boost: http://www.boost.org/doc/libs/1_39_0/more/getting_started/windows.html The only thing I wanted was to use its thread library, and I spent the entire day trying to figure out how to get it working. For some reason bjam didn't work like it was supposed to because, I don't know, the compiler wasn't in my working directory or something, and I had no clue where exactly I had to include which files in my IDE (CodeBlocks at the time).

There are just two examples of, as far as I know, easy to use libraries. So why can't they make this stuff easier? Why can't I just import a library with a single button? Or is it just me and does everyone think this stuff is as easy and natural as it gets?

+2  A: 

I guess this should be a wiki type question, but anyway. There are actually environments that deal with this. Windows is unfortunately one that is notoriously bad at it. If you look closer at other systems like Debian (or derivatives, e.g. Ubuntu) or RedHat, or other linux distributions, you'll notice that installing and using this kind of stuff is exactly that, a click of a button (or a short command line, apt-get install libboost-thread-dev in Debian, there are GUIs as well though).

The point is, the provisioning system knows your system layout, and is able to incorporate libraries into that environment. This is not something the library itself can solve.

roe
I must say that using Microsoft .Net libraries and external controls (over Windows, of course) is extremely easy. That can't be said about many Java libraries, as the question's author pointed out.
Elad
A: 

Good things take time. It takes time for users to learn as well as it takes time for developers to make it easy to use.

codemeit
+16  A: 

I think that the fundamental problem is that it is hard to make things simple.

Stephen C
+1 it is hard to make **simple** things simple, let alone **hard** things
flybywire
@x-x: +1 for your comment!
Stephen C
I have to disagree. It's simple to make things simple. What isn't so simple is making a complex mind think simple (how's that for simple ;) ), not to be confused with simple === stupid. There is a time and place for complexity, but it is way overused and too many unnecessary excuses are made for it.
Tres
But then again, maybe that's what makes it so hard :D
Tres
As Mark Twain once said, "I'm sorry this letter is so long, I didn't have time to write a shorter one"
KevinDTimm
I disagree, look at jMonkeyEngine - they force u to download stuff from repo, because they dont care about people that are using this. I think every bad java programmer knows how to make jar file, but they wont.
01
A: 

Often (especially with open source stuff) its because things are built by individuals for their own purposes. So they're not necessarily interested in making it 100% polished & super usable.

To follow that thought further, if there's limited time to spend on a project, people are generally more likely to spend more time adding features, etc than doing "boring" stuff like documentation/installers/etc.

Alconja
u r right, however here we have something different. people that made those project doesnt care how hard is it to install. they could make it easy, but they just dont care.
01
+1  A: 

Was it Einstein who commented that things should be made as simple as possible, but no simpler.

Ed Guiness
It was me, actually.
Randell
What is simple about using jMonkeyEngine? in java we have jar files that are like dll's. it can even include source.
01
@01 - ¿Qué ....
Ed Guiness
A: 

I believe it's because a lot of programmers have a hard time separating the complexity of building something how it's actually going to be used.

Building an API should be like building a user-interface because, well, essentially that's what it is. Most UI methodologies and principles can directly applied to programming an API.

Tres
A: 

As has been said before Windows is notoriously bad at this. Windows is excellent at installation of applications but for whatever reason shared libraries are different. On the other hand in situations where you rely on a number of shared libraries it is almost essential that you understand exactly how they are installed and configured so that you can ensure that the dependencies are distributed with your application or you have a clear idea of what the requirements are for it to work. It is very frustrating to have to unravel a train of dependencies and magic installs in order to understand how it is that your code is referencing a library.

Jack Ryan
A: 

There are at least 3 perfectly valid answers to your question.

1) It's not as complicated as it seems, it just might seem like a bit if you've never done it before. That jmonkeyengine tutorial doesn't seem too bad to me, it just seems to be very verbose with where to find items in the menus, and goes as far as stepping you through adding it to source control as well.

2) Tasks such as installing new frameworks is not a common task so it tends to get pushed deep in the menus to make room for the common tasks at the top; as well as not being hit as often to warrant more attention. Which brings me to...

3) Making things easy is hard. When it comes to setting up application installation and integration there often arises the choice between spending a considerable amount of time and effort making it a one-click setup that will work for most people, or a couple hours putting together multistep install instructions that can be modified to individual user situations if the normal process doesn't work for some reason. As you may have noticed, when the decision comes to the core developers, it has a tendency to go toward the easier (for the developer) solution, partially as for developer tools it's often assumed a developer should be able to figure it out easily enough.

To put it briefly, there are a lot of reasons for it, and when it comes to open source, feel free to smooth it out a bit!

Drakonite
A: 

The process isn't made more complicated than it is, it's just that complicated to make an installation like that. So the question really is why they don't develop something that can perform the process for you.

The answer to that is usually that there is something lacking for that to take place, like time, knowledge and/or motivation. It's a lot easier to describe what to do and use your knowledge to adapt that to the specific system, than to write a program that is sufficiently adaptive to work on different setups.

Sometimes it's not even possible to make an automatic installation process, as the OS/framework/IDE doesn't allow it. In that case the same question applies to why they didn't develop that, and the answer is usually the same.

Guffa
A: 

I am a Java programmer and an Eclipse user. The answer to your question is simple. The developers/managers of the frameworks dont package things up so that they are easy to use.

For proof of this simply look at Microsoft Visual Studio or Apple xCode. Things there are much much simpler.

If you want to rely on free tools your stuck with it.

corydoras
@corydoras: try to develop an Eclipse plugin. In addition to learning a whole stack of new APIs to just implement the base functionality, you will find that there lots of things needed to make your plugin easy to install and configure and nice to use. And, there are many ways to get it not-quite-right ... especially when people want to use other Eclipse plugins as well. It all adds up to "hard".
Stephen C
This no doubt explains why this would be a problem with eclipse, but it further proves my point. Large companies tend to have an interest in making things easy to use and install (cut down on support calls and other problems). As a GENERAL rule, developers dont tend to polish things as much.
corydoras
+1  A: 

I suppose it's because these libraries are written by programmers for programmers and programmers are that type of person who suck at writing texts, designing interfaces, making things user-friendly and ultimately facilitating achieving of the user's needs.

The best example is the notorious Windows vs. Linux. Both are good operating system with lots of potential, but in the first case the work is targeted at end users with usability in mind, in the second case these are just programmers themselves whose attitude to user is somewhat close to "If he can't figure it out, he's an idiot and should stay away from computers".

User
As a framework developer I battle with this each day - its not easy!
Preet Sangha