10

So this is probably a very basic and obvious question for most people, but my google-fu is failing me and it just seems something is going over my head. I've heard numerous people refer to having a 'dedicated linux box' as a central part of a developer's setup.

I have been doing web-dev programming for about a year and understand the benefits of programming on a Unix/Linux system. But I seem to be missing what role a 'dedicated linux box' plays in the development process.

I would assume that it is used as a server of some sort, but I am yet to run across any needs to have a computer dedicated to running a linux server. Am I just being nieve and mistaking the commonality of programmers preferring to work in linux for a tool used by developers? What do most developers use their 'dedicated linux box' for?

5
  • 4
    It absolutely depends what it is dedicated to. Could be testing, could be database, could be VCS. In general, a box is not dedicated to Linux.
    – user281377
    Jun 24, 2011 at 9:31
  • Right, a box is dedicated to a functionality/task/purpose. Linux underneath as an OS is a casualty of the desired task. Lets not forget if you are running a linksys/cisco router most likely you have a dedicated linux box in your house.
    – Chris
    Jun 24, 2011 at 12:18
  • What role does a dedicated linux box play in software development? Running Emacs. Jun 24, 2011 at 13:31
  • Haha, parse error! I believe their intended meaning is "a computer running Linux dedicated to some purpose" and not "a computer dedicated to running Linux" as you seem to have understood it.
    – Zhehao Mao
    Jun 25, 2011 at 0:30
  • @Catcall So we have another emacs devotee... Don't forget that Linux has tons of development tools, and almost all of them are free, unlike in windows where a fresh install has nothing for you to start developing, while in Linux you have at least a C/C++ compiler, an C/C++ library and a editor that is vim. But yes, most people use a dedicated linux box for testing stuff, mainly software that is meant to be cross platform. Apache and Mozilla come to mind...
    – Coyote21
    Jul 30, 2011 at 15:52

9 Answers 9

4

The open nature of Linux allows you to do a variety of tasks.

It could act as:

  • A personal webserver/code repository

  • A testing platform for beta code before you upload it to the interwebs.

  • A hardware firewall

  • A torrent downloading box

  • A glorified media player (running Boxee or XBMC)

  • A code compiling station

  • A box to run video game emulators while code is compiling on your 'work' machine.

  • A place to try out new coding tools before you add them to your tool belt.

Because Linux is free and open source, if one of these use cases is no longer relevant to your needs, you can format the box and start again with a different goal in mind. No harm, no foul.

Looking for more uses? Try checking out Linux Journal, particularly their articles focusing on programming in Linux.

10

Put simply a "dedicated" Linux box is whatever one decides to dedicate it to! :)

1
  • Agreed, I have a linux box for storage purposes (backups and media and documents) running Samba so users on the LAN have access. I also have a linux box for development and another linux box for routing.
    – Chris
    Jun 24, 2011 at 12:17
7

I do development targeted at hardware running Linux so a dedicated Linux box (i.e. not a Virtual machine) is essential for me to work.

We also have a dedicated linux build server that is used to ensure all our builds are built from a known system state.

But you can have dedicated database servers, web servers etc. Depends entirely on what it is you're trying to do as to whether you need a dedicated box or whether a VM would do.

5

A dedicated linux machine is used for continuous development and is a machine that allows one or more users to customise all software according to their needs.

For example, if a linux box was used for web development, at the bare minimum, it would host a web server (e.g. Apache) with all required modules, access to a version control system, and provide remote access. This saves you having to run everything on your own computer and only being able to development when your computer is on.

As well as offering convenience, it also ensures the same environment as the production system. This removes any unintentional issues arising from tinkering with your computer.

2

Dedicated Linux box is basically a machine which runs Linux and only Linux. In context of web development it probably means a test server, which emulates target environment. In other words you would push your work to the Linux box, test it there and only then push it to production server.

1

I've never heard this, but I would guess it means having a Linux box always available, as opposed to having a Windows machine with a Linux VM image. This doesn't really make sense to me, but then where I work we have a handful of really big servers that just host VMs, so instead of four huge servers we have like seventeen +/- five virtual ones for various purposes and projects. For all practical purposes, most are "dedicated" boxes, because they are always running.

I would guess what people really mean is that you should have a separate server (running whatever) available for test deployment, hosting large databases and other resource-intensive tasks that you don't want slowing down your development machine.

1
  • +1 for "I've never heard this" - i don't think this is a standard term. In my firm, we have Linux desktops, and Linux fileservers and so on, through which we connect to Linux VMs at the client site to do development, checking code in to source control running a Linux box, from where it is built by Jenkins running on a Linux box to various target servers running Linux (and most of us have Android phones!). Some are virtual, some physical, but it's basically Linux all the way down. I have never heard anyone describe any of the machines as a "dedicated Linux box". Jun 24, 2011 at 13:02
0

A dedicated Linux box is a box which runs Linux and is dedicated to a specific task.

Put in the context of your question this would be a machine (could be a VM could be physical) which is available to the developer and the developer only for developing and testing applications which are expected to run under Linux. The critical thing though is that it is used solely for this purpose and there will be no contention in terms of it being needed by other people or for other things.

The reason this is useful / necessary in some situations is that to maximise the developers productivity you shouldn't have to wait if you need to test something under Linux, or worry about your install or configuration changes causing problems for some other user or application. Basically you should be answerable to no-one for what happens on that box.

So the contrast with having access to a Linux box but having to arrange time to use it, agree changes that can be made and so on. This is workable (usually) but will result in wasted time while you try to get time on it and have to work around the constraints placed on you by others.

Is it necessary? It depends - do you develop anything that is expected to run on Linux? If not then no, it's completely irrelevant, if so then probably yes.

And there really shouldn't be a question of cost - you can run Linux perfectly fine on a $500 box and the license obviously costs nothing so that really shouldn't be an issue.

0

In the context of web development, "dedicated Linux box" usually refers to a server owned by someone else. You lease the hardware and usually some (often minimal) support services. You don't share the hardware with anyone else. You might or might not be allowed to pick the operating system and applications.

A dedicated server usually has more to do with deployment than with development.

Opposed to "shared server" or "shared virtual hosting environment", where multiple companies (commonly meaning multiple web sites) share the hardware, but are isolated by software. Sharing hardware means other people (whom you typically can't identify or contact) can really make life hard for you by monopolizing CPU, disk, etc.

0

If you don't like botched deployments, you want the closest copy of your production environment as possible. Usually it's a VM, and running such a VM on a e.g. notebook is usually not fun. (At least, you need to store the image for everyone to use.) Also, you'd like a common integration/testing environment for everyone in your team, e.g. with a common database, a central VCS repository (convenient even with a DVCS), store for all dependencies (of exact versions), etc.

This all could take a dedicated box, not necessarily Linux, while Linux is easiest of all.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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