Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I'm sure it's not about laziness or anything like that but I fail to understand why developers of even mainly consumer facing apps don't make any sort of installation wizard where you go next-next-finish. The same apps usually have installers for Windows and Mac OS so why not Linux?

Is there any technical reason for this trend or is it just convention?

share|improve this question
3  
There is no lack. Windows is not Linux. Linux is not Windows. –  black 10 hours ago
4  
We don't want wizards. We are the wizards. –  Michael Hampton 5 hours ago
1  
@MichaelHampton not everyone is. My dad is not for sure, and I would love to see him be able to use GUI to do all the basic stuff he needs to do. –  Arsalan00 5 hours ago
9  
@Arsalan00 You're missing an important point. There is usually a GUI for package managers (Ubuntu Software Center, Synaptic, YaST, etc.). –  nyuszika7h 5 hours ago
5  
I could never understand a point of such wizards, 99.99% of users will blindly click "Continue" anyway, so a silent, non-interactive installation makes much more sense. –  SK-logic 4 hours ago

8 Answers 8

Developers just need to provide a package for a distribution. Each distribution then has a way to install this package. This way can be in a terminal (apt-get) or via a graphical interface, e.g. Ubuntu Software Center.

The beauty is that developers just have to care about building a proper package; the distribution makers take care of the rest, and each package installation has the same process.

share|improve this answer
2  
+1 ..."each package installation has the same process." –  Uwe Plonus 11 hours ago
1  
Well, the developers just have to care about building a proper package for every single distribution they want to support, so they will need one or more different RPMs, debs, build scripts for ports, etc. Package managers are great, but trying to support all the systems as a developer is hard. That's why most of the people maintaining packages for distros are not actually the upstream developers. –  Alan Shutko 6 hours ago
1  
Well that's another matter entirely :-) but yes, this is a problem. It has been tackled with projects such as fpm though. –  Florian Margaine 5 hours ago
    
A serious downside of this approach is the packages being (in some cases seriously) out of date. On Windows I can install the latest version wherever I can; on Linux I have to use (install, and understand!) a version control client to obtain the source, and different compilers or Make/CMake/etc. to build it. –  marczellm 54 mins ago
    
Many projects do provide the latest stable version without the need of source control (unless you want the latest development version...). You will still need to compile them however, because it's impossible to create a binary that just works out-of-the-box for every *nix-like OS (unlike Windows, which is a very stable and homogenous platform). Fortunately, compilers are very easy to set up and install on Linux compared to on Windows. –  Rufflewind 47 mins ago

Because they don't need to. Linux distributions usually have working package management systems, unlike Windows, where every single application has to re-implement installation and updating over and over and over and over again.

share|improve this answer
2  
Yet, most non-techy people I know would prefer to download an installer and run the wizard rather than open up a terminal and type a command. This package manager thing is great for us geeks but it really bothers a common PC user who started using PCs after Windows 98 era. –  Arsalan00 5 hours ago
4  
@Arsalan00 Think about Linux model as AppStore - it's the same model really. You could ask why there are no wizards for Android or iOS. –  Maciej Piechotka 5 hours ago
    
Jörg's point still stands. Users are just conditioned to tolerate a deficiency in Windows. Linux package managers are a technically superior solution. Still, nothing prevents an independent developer from posting some RPMs on a web page. Users should be able to download and double-click to open it. –  200_success 5 hours ago
1  
Android and iOS are far far more restrictive in the way they operate and in the way that they let the apps operate. Linux is the polar opposite of that. Mobile OSs enforce conventions, Windows seems to recommend conventions (program files folder, registry, etc. ) while Linux is more configuration than convention. –  Arsalan00 5 hours ago
    
@Arsalan00: Setting aside that this changes, I wasn't talking about what applications can do and about sandboxing - just installation model. And installation model on Linux is almost the same as in Windows Store/AppStore/Play Store. –  Maciej Piechotka 5 hours ago

Linux distributions (as well, I think, as BSD-flavoured Unices) have a user-friendly interface to program installation, via so-called package managers (or ports management in the BSD case): pacman for Arch, dpkg for Debian, apt for Ubuntu, and so on.

These package manager provide a way to install programs by means of uniform configuration files. Once the program you need is packaged according to your distro's package manager you can simply run its install command over the selected package (with occasional user-specific customizations, though often none at all) and the manager does the rest.

Package managers are usually more user-friendly than Windows' program-specific installer processes, just for the uniform way programs are packaged for installation. They usually also allow you to query the package manager database for the program you're looking for, see its dependencies.
They also support centralized update of the packages.

share|improve this answer
1  
user-friendly is a subjective term. IMO, most computer users are very reluctant to use command-line tools and would find it easier and more comfortable if they could just use a wizard. Even if it takes more time. –  Arsalan00 5 hours ago
    
dpkg and APT are used in both Debian and Ubuntu. apt-get, apt-cache and aptitude are wrappers on top of dpkg. dpkg is rarely used directly, one use case I can think of is installing a package from a .deb file. –  nyuszika7h 5 hours ago
4  
@Arsalan00 there usually is a graphical user interface for package managers, like Ubuntu Software Center or yumex. Package manager != terminal. –  Florian Margaine 5 hours ago

Usually, the installation doesn't need interaction with a user (most apt-get packages for example), or can be scripted. This makes it very easy to automate in order to deploy a piece of software on many machines. Instead of doing things through the wizard, you do those same things through scripting or through configuration files.

Given that in Linux world, terminal comes first, and the GUI is optional, it becomes obvious why do they lack actual installation wizards.

Windows, on the other hand, is very user-oriented. Most MSI files can easily be deployed in unattended way, in the same way Windows installation can be unattended (how easy/difficult is to get WAIK to work is a different subject). This also means that a bunch of applications for Windows are not based on MSI, and are not scriptable. Among enterprise-scale application, Adobe products, for example, are known for being rather difficult to install in a scripted way.

share|improve this answer
    
That's an easy problem to solve. Many windows installers have a silent option and are pre-filled with good defaults so that the user doesn't have to do anything other than just press next buttons. –  Arsalan00 12 hours ago
5  
I hate pressing next just because the developers failed to do it in a simpler way. –  Silviu Burcea 11 hours ago
    
@Arsalan00: the "user doesn't have to do anything other than..." breaks automation. If the user has to do anything, it cannot be automated. Ideally, you should be able to turn a machine on and let it boot through PXE, install an OS and then install and configure everything you need, with no user interaction whatsoever. With Linux, you can do that (except maybe a few applications, but I haven't encountered any so far). –  MainMa 9 hours ago
    
@MainMa your edit really hits the nail. If the developers want, they can make their installers scriptable or silent. But the wizard system really helps the novice user get introduced to what the setup is about, and wizards inform the user like package managers can't. Plus offline installs are something that is a major necessity for many people. –  Arsalan00 5 hours ago
2  
@Arsalan00 usually package managers can ask questions if they really need to. Offline installs are possible with package managers, just download the package first, just as you do when you download and install file. And last, it's more userfriendly, most novice users should not care about "where do you want to install this" etc. it should "just work". –  iveqy 5 hours ago

To large extends it's both. The Linux distribution model is closer to AppStore/Play Store then traditional Windows/Mac OS X one - and even those platform are moving there from what I've heard.

The convention is that it's simpler. Most arguments for the AppStore/Play Store applies to Linux as well:

  • Automatic updates. Having 20 programs update separately on Windows is disruptive and inefficient. User needs click though Java/Flash/Adobe/... updates on boot.
  • Single, trusted, repository. Do you check if you download via secure connection? Or you haven't download from an Reader update from get.adobe.com.hackers.example.com/setup.exe? Even if you do most users, especially not power users, don't. Instead you go to software centre or similar program in Linux and get a trusted copy.

Furthermore there are following benefits, which may not apply to AppStore/Play Store:

  • Not every Linux has GUI - think http server - yet most distros supports such configuration. Ok. Not everyone needs one but sooner or later someone will want to use it for whatever reason.
  • The ABIs of libraries on various distros may differ. Not going into details having an installer would put responsibility of the program working on you instead of people maintaining a package in repository.
  • Connected with previous one - you need to manage dependencies somehow. Bundling is considered improper for a reason - in such case you need to ensure that you have updated the library to version without a bug - for example you didn't include openssl 1.0.1f into your bundle. Practise shows that people do include outdated libraries with known security vulnerabilities.
share|improve this answer

Most closed-source, non free-as-in-beer software for Linux does come with installation wizards. So does some closed-source, free-as-in-beer software, at least until most major distributions pick it up. For open source software, package managers are a clearly superior solution.

So what about the early stages before open source software gets picked up by the major distributions? Why don't developers create installation wizards during that phase?

First of all, a lot of open source developers plain don't care about distribution. They write software for themselves to use, and put it out there in case it is useful to others, but they see packaging for distribution as someone else's problem. If it's liked enough, someone will take upon themselves the task of getting it into their favorite distribution.

The open source developers who do care about distribution are still better off working within the package manager system, because that's where their customers are. Linux users don't typically search the web looking for software. They search their package manager first. Failing that, they search the "community maintained" repositories, like Ubuntu's PPAs or Arch's AUR. If you aren't in those places, your software most likely won't get noticed, and if it gets noticed, it's less likely to be trusted.

Foregoing those existing distribution channels is sort of like deciding superbowl ads are too expensive, so you're going to host your own football championship and advertise on there instead. It may be less costly, but it's also less effective.

As far as customizing the configuration goes, for software like a web server that's traditionally easier to handle with a config file, which makes the configuration easier to share, back up, and restore.

For client software like a web browser, it's much better to create a configuration wizard that appears the first time a new user runs the software, rather than do it at installation time. The main reason is Linux is a multi-user operating system, so you want to customize it per user anyway. This also makes it easier to rerun the configuration wizard later, for whatever reason, without having to keep the installation program around to reinstall the entire software. This type of wizard is fairly common in Linux software.

share|improve this answer

I've often asked myself, and others this question, and I'd like to address a point I often see brought up before I get to why I see fewer installers:

Linux distributions provide package managers.

However, I wouldn't say that a Linux distribution's package manager is a replacement for an installer for in part the following reasons:

  • These package managers aren't standardized in operation

    A package manager is a bit like providing your binary and letting the end-user choose the installer. They can choose the terminal, or they can choose a tool with a more advanced GUI, but it doesn't afford you the same level control of the process as with a "traditional" installation wizard.

    An example of what I mean by control is documentation. You can't give your end-user instructions like "Click Next, and you should see ". You can give command-line instructions for a specific tool, but then you're not only relying on the fact the user has that tool, but also losing most of the benefits of an install wizard (after all, most wizards are providing a front-end for simple command line instructions and kicking off scripts).

    This also ties into aesthetics. Now you're depending on your end-users distribution to provide an intuitive/appropriate interface. While you are fully aware of that fact, it's not unreasonable for a more casual user to complain if double clicking your file (installer in their view) opens up an ugly package manager, does nothing at all, or worst of all opens up a terminal window. (The experiences I've had with users and their aversion of the "dos prompt" / "black and white box" / "Thing that's going to delete all their files if they look at it funny" could probably fill a book)

  • Package formats aren't standardized across platforms.

    There are tools to convert between systems like rpm and deb, but it's not reasonable to expect your end-user to convert your packages if you're using them in a situation where an installation wizard would be provided on another platform (i.e. clicks-and-done). Providing up-to-date packages for an additional package format can be rather straight forward if you have a rudimentary build system, but you're still adding a new binary that needs to be supported.

    That's also adding a new binary people have to choose from depending on their platform (it sounds minor, but I'm sure someone here can attest to having to explain x86 vs x64 before [yes, there are ways to deduce the right platform from the browser, but then you're getting into even more complicated, and harder to support, procedures])

  • Package managers are "nicer" to open-source software.

    This isn't saying that you can't share closed-source software with a package management system, it can definitely be done. But once you try to share close-source software on Linux distributions you run into a wall as far as your options for getting your software into common repositories is concerned. Things like PPAs or the openSUSE Build Service are out, and even the Canonical Partners repositories aren't enabled by default.

    That means, unless you provide your own repository, you can't many of the major features of package management systems, including automatic updates. In my opinion, this is the most important benefit across most platforms that use these systems (e.g. iOS, Android, and Windows Store).

    And even if you provide a repository (another job of variable triviality), you still need to get users to set it up (which is another layer of support, another set of non-standard approaches, and another diversion from the original point of the installer)

Now, having said all that, I still haven't addressed the original problem, why installers are less common on Linux in spite of these factors (amongst others). The original question asks if it's technical, or based on convention, and it's based on both in part.

If you look at the above factors I've mentioned, they also make things more complex for a "wizard-like" installer. For example, would your wizard include multiple package formats to install? How do you handle look-and-feel across distributions? The list goes on, and one thing that that packages do afford you is that none of this will be your concern (for better or for worse) as long you provide the right packages. And depending on the nature of your project, you can start to take advantage of those more "specialized" resources, like submissions of apps to the Ubuntu Software Center. This would all relate to the technical.

But the aspect that I personally find to be the driving force is convention. (I hope I've buried this deep enough that the people who downvoted that other answer to oblivion have stopped reading..)

I feel that poster had a point, but might have stated it too bluntly, and not actually provided objective reasons for that point. If you examine the differences I stated for a package manager and an installer, I wouldn't be surprised if you found most of them to be nearly non-issues (maybe even bordering on pedantic). But (excuse what I hope is viewed as legitimate use of an ad hominem argument) we're also users on site for programmers. I see Linux distributions pushed as an excellent Windows alternative for casual users (amongst many other things obviously). Not providing a commonly defined clicks-and-done procedure that all of these users can use really isn't ideal imo.

But at the same time, I don't find that many things in Linux to be especially ideal for that group either. Sure some distros have GUI-based package managers, but that means these people have to start looking into how to use a separate tool, on that isn't strictly focused on your program's installation (compare this and this to this).

Naturally you can use the GUI a majority your average casual user needs to do, especially with certain distros (ironically the things those distros are doing aren't always embraced in the open source community [look at complaints about Ubuntu and it's "walled garden"]) But I don't think it's deniable that Linux conventions favor someone who's comfortable with a CLI, or at the very least not deathly afraid it's appearance means they did something horribly wrong.

I'm not saying that this is what they aim for, but it's really what I see those conventions do. And package management systems in Linux seem to be following that. After all, most of their "downsides" nearly non-existent if your end-user is more comfortable with the underlying concepts.

Installers on most other platforms aren't really affected by that, and are designed so, to quote comment on the question, "99.99% of users [can] blindly click "Continue". The problem with package management is getting those users to a "Continue" button, letting them know what that "Continue" button is (I've seen users get tripped up by tools that said press enter with other text), and letting them know when they've hit that "coast on clicking the "Continue" button" stage.

share|improve this answer

The target audience is different. Unix, and Unix-like systems, were usually used by professional programmers, sysadmins, engineers and serious hobbyists who customized each system to their needs. Any "installation wizards" would only limit their choices instead of giving access to all the variables they need. And the ones now out there still do.

Windows is not targeted at professionals in the same way and, thus, has more general purpose installers geared toward "users" who only want the thing installed. Linux is garnering more of these user-types who would probably appreciate such a thing but, possibly, most distros still have the professional in mind.

share|improve this answer
1  
An installation wizard let you customize more than a package manager that is usually used on linux. –  iveqy 7 hours ago
    
@iveqy Any text config file will give you far more abilities than any installation "wizard" ever will. If such wizards could do better, they would exist, but they don't. –  Rob 6 hours ago
2  
that's true, but editing text config files is not a part of the installation process of most package managers. Typical the questions on a windows installation process is "where do you want to put this", a package manager already decides this in the linux enviroment and "which components of this program do you want to install", and that has already been decided by the package maintainer in the case of package managers. You can see that a package manager is more userfriendly since it's used for android and iphone, (app store and google play). –  iveqy 5 hours ago

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.