You could use something like Kickstart, which is a feature of the anaconda
installer of Fedora, CentOS, RHEL, and derived distributions that lets you completely customize an installation to your liking. You can choose which packages you want to install, the partition layout, network configuration, package repositories, root password, and much more. You can also create pre and post-installation scripts that do whatever else you might want. You can run the install fully automated, or pick and choose what you'd like it to prompt for. All settings are defined in one simple (not XML) text file, which you can make by hand or with the graphical system-config-kickstart
tool.
Once you've got that put together, you can roll your own custom CD if you like, or set a network location in your kickstart file, which can be a local or Internet mirror, via FTP, HTTP, or NFS. Your kickstart file can also be on the network, so you can just burn one stub install disc to bootstrap the installation (or use vanilla install media) and have it use as many different configurations as you can stand. You can even network boot it, eliminating removable media altogether.
The network options or custom spun media eliminate you from needing the "huge package repository", yet it will still be there if you decide you want to add something. But, if you want to go whole hog, you can build your own repository, cherry-picking RPMS from upstream, customizing SRPMS to your liking, rolling your own, or even hacking a make && make install
or tar -jxf
into the post-install script.
Many distributions have similar functionality, some of which also understand Kickstart files even if they don't implement their entire feature set (like Debian).
I don't think you'd find a general standard answer to this question. The truth is only you know the answer to it.
Some random points to take into consideration:
Avoid exotic distributions
There are solid distros around (debian
, centos
, opensuse
, ubuntu
, fedora
, ...) to chose from. No need to consider getting your own LFS or something like Gobolinux. Not only are mainstream distributions more field tested, but they're also easier to get help for.
What's on your server?
It may be easier to get the same distro (or a close relative debian-ubuntu, centos-fedora, ...) to your work stations. Can you imagine an incompatibility between developer's env and production server?
Ask your developers
No need to impose a distro that is "better" if none of your programmers know how to use it. Ask them for an opinion, it'd be far more accurate.
Consider paid support
Sometimes, even the most skilled linux guru doesn't have the time to support dozens of workstations. Canonical, Red Hat, and so many others, offer paid support. Even though it seems expensive, delegating support to 3rd party will allow you to focus on your core business, what you do best.
Avoid Rolling Releases
This is a small variation of the first point. There's nothing worse than supporting a version-less product. Arch Linux, Sabayon, Gentoo are great distributions, but since they lack proper versioning, it's very easy to get lost. Remember, if you're asking this question here, you're probably looking to unify the working environment of your developers. Versions are a must.
Read up on the specifics
Your business probably relies on some specific packages (like PHP, MySQL, git, memcached, ...). Browse the documentation of existing distro looking for common/known issues before adopting it.
Best Answer
Try TinyCore (or MicroCore even).
TinyCore is at 10MB (ISO) and MicroCore at 6MB. TinyCore has X and a minimal GUI, while MicroCore is text mode only. I use it on a 12 year old laptop with 199MHz and 32MB RAM. Works perfect, even with WLAN, etc.
TinyCore is made with customization abilities in mind. You can easily fork your own minimal dristro from TinyCore. To facilitate this, there's even a remastering how-to in the Wiki.