[Very likely to be stupid question] How does Open Source programmers survive?

I got this professor from the States who love to tout the virtues of Open Source. He used OpenOffice for his lectures, pushed Subverison and Eclipse down our throats by making it part of our tutorials and at every moment possible discredit the evil Software Empire that is headed by Bill.

But even so, I find myself wondering – Open Source is fine and dandy for big giants like IBM or Sun. With the spread of their free software, they divert attention from the Big Evil Software Empire, spread their agendas and make their names known.

Yet for a hobbyist Open Source programmer, how does he get by day to day? Is it possible for a medium or small software house to go Open Source? How would they benefit from it?

Thanks in advance!

Don’t have any immediate experience with open source programming, but two things:

  • One, a true hobbyist programmer, like any other hobbyist, does it as a labor of love and not for money. This would presumably mean having a day job, inheritance, or being supported by family in some way. (Or other means of financial support, unspecified.) Maybe they believe in the open source cause, or maybe they just like writing code and sharing it with other people.

  • Some small software companies might be established with a business plan that their software product would be open source, and yet that they would take fees from users of the software either 1) on a consultation basis… ‘I’ve used your software, I like it, but can you tell me the best way of accomplishing X with it, if that’s possible?’ 2) as an incentive to get new features on the development list. ‘How much do I have to pay for you to write in open-source code that will do Y?’

That second one is based more on open-source programmers in movies than anything more concrete, so take with a tablespoon of salt.

  1. Open source is not the same as free software.

  2. Open source is not the same as free software.

  3. Open source is not the same as free software.

You can sell a commercial product while making the source available. You can give away software without making source code available. These are two different terms with two different meanings. (Note that there are several entities that use the term “Open Source” (with capitals), but not all use the term in the same way.)


Compare software to water. Water, in this region, is everywhere. It is practically free. Why do people pay for it? Because it’s the storing, purifying and transporting water that costs money.

The “cost” of software is only part the cost of the source code. You have to install it, maintain it, upgrade it, teach users, etc. That is a huge expense for many companies. Ergo other companies are making money providing such services. (Not all do it inhouse.)

So keep in mind that the cost of a product does not have to relate to what people pay for it.

So MS sells “Southern California quality” water in utility quantities at Evian rates. It really doesn’t take much to do better than that and make money. So there is a huge market for alternate software services available.

Take Redhat. It started as just a handful of people. They made a decent Linux distro package. They sold the CDs the software came on. They built up a good rep. They went into the business of providing Linux support. Now it’s a good sized company.

You want to make money supporting a product? Being a contributor to the product is a great way to get credentials for knowing that product.

What chrisk and ftg said.

I’m the network and security admin at my company. One of the things I do is to configure VPNs so that our customers can securely access our system.

Recently, we brought on a customer that uses a certain open source package to handle their VPNs, rather than the traditional proprietary offerings from, say, Cisco or Checkpoint. The customer’s VPN consultant was actually one of the primary developers of the F/OSS in question, and was apparently getting $x and hour from our customer to do VPN configurations.

If you’re at all familiar with the technical aspects of net security stuff, you’d probably recognize the guy’s name. Personally, I found him rather over-enamored of exact compliance with the specifics of the RFCs as opposed to real-world interoperability, but I could see where he was coming from. I’m pretty sure we ended up exposing a couple of problems that may/will/have already been patched into his package.

I work for a company that build its products on open source platforms, and some of the stuff we do gets released back into the wild as open source contributions. But the bulk of my open source stuff are relatively small things that I’ve done in my spare time while not working. The nice thing about a well-run open source project is that you can build something pretty great with a lot of people working in their spare time, instead of a few people working all day.

I wonder if people also do it for the purpose of self-promotion? So when the application form asks for proof of the candidate’s ability, the candidate can say, “I contributed ABC to the XYZ project.” Then the person filtering the applications can follow this up and it can become an element of the evaluation of the candidate.

It’s also possible that a company or other client needs some software tool which doesn’t yet exist, but doesn’t particularly care if anyone else has it. Such a client might then pay an open-source programmer to write the tool, and then allow it to be distributed to everyone (including, of course, the company that commissioned it in the first place).

But most of it, as already mentioned, is either sponsored by IBM, Sun, etc. to bring Microsquish down a notch, or done in spare time by hobbyists with other sources of income.

Yes, absolutely. Having some public code available to look at is a huge advantage when interviewing with the right companies, espcecially if the company is making open-source based products. We’ve hired people just because they were available and we knew they were intimately familiar with a certain piece of software, because they wrote it, for example.

I don’t know about most of it. A huge amount of work is done by people working for fairly small companies, contributing fairly small bugfixes and features. For a popular project, that adds up to a lot of work when you’ve got hundreds or thousands of people interested in making it slightly better.

Remember also that companies like IBM and Redhat have based large portions of their businesses on providing support and hardware for open source stuff to run on. IBM, for example, makes huge amounts of money selling high-end servers that run Linux with Apache and other IBM-supported open source software. So from a business perspective, it makes sense to support those products, because the better they are, the more attractive their server packages are.

To me, open source means that all the source code is distributed and is free. Others may call it open source, but it isn’t.

Take Red Hat, that someone mentioned above. Every bit of their source code is available free for the download. You can also buy it on a disk, but it costs little more than the duplication and distribution costs. But Red Hat is a moderately large and pofitable company that has had a successful IPO. They make their money as consultants, documentation (on paper, there is also downloadable documentation), and configuration specialists.

But you are welcome to download their software and make any mods you want. However their license requires that anything you produce based on their stuff be freely available.

There are other kinds of free software, but to me “open source” is as described above. I use another program that is distributed free, but anyone who wishes can repackage it and sell it for whatever he can get for it. It may also be modified (the code is also available free), but no mod can be sold under the same name, a restriction that is strongly enforced.

I completely agree with this and I don’t think it can be emphasized enough.

As an example: let’s say I’m a developer for a small company that uses PHP, which is distributed under a more or less free license (depending on your Stallman alignment index). Now, let’s say during development we identify a critical bug with PHP that directly impacts our application, but may not be a big problem to other people. Waiting for someone to fix this specific problem for us may take too long – if we have an immediate need for the fix and have managed to isolate the problem, it makes more sense to modify our version directly to resolve the issue.

The problem then is that our modification is just an isolated change, and if the bug doesn’t also get fixed in future versions of PHP, then we have a problem when new releases come out. Do we stick with our own hacked-up version and miss out on other bugfixes addressed by the new version, or try to reapply our own change to every new release that comes out?

So what happens is we submit our bugfix back to the project in a bug report. Assuming it gets looked at by the right people, it might get picked up and included in future releases. This meets the needs of our company by saving us time and effort for future releases of PHP, and it serves the community by addressing something that could be a problem for other people.

My feeling is that there is a huge amount of this level of work being done in small increments, every day, all across the world. It may not account for the broad-brush major changes you sometimes see, but it accounts for a lot of the gradual refinement that any solid software project needs to see as it matures (and is very expensive to get in closed source software).

Thanks for the replies! The vibe that I am getting that an open-source company does not necessary make money from selling the software, but from the other activities (consultations, training and etc.) related to it. Is that a good summary?

Seems right to me.

With some open source projects released under the GPL, the copyright holder might also sell proprietary licenses to the same software. This allows people who would like to modify the software(or combine it with something they own) to distribute their product without having to release their source code.

I IMed with the creator of Vapourware, a collector of Half-Life mods. He said he’s now working for Sony on next-gen console work, and he got the interview from having made freeware that got noticed.

False. If you only use the modified software in-house and never distribute it, you don’t have to give anyone any source whatsoever.

(However, see ed’s reply for an enlightening view of the questionable sanity of such a practice. ;))

Plus, it is in no way their stuff. It is the stuff of the many thousands of people around the world (or, in some cases, their employers) who have contributed to the projects contained in any Red Hat Linux distribution. Putting your code under an open source license does not mean you sign away any of your ownership rights to that code.

(There is some material in any Red Hat Linux distribution that is indeed owned by Red Hat, and some of it is even source code. :wink: Most of it, however, is not owned by Red Hat in any way, shape, or form.)

This is the license under which the majority of the software distributed by Red Hat falls. It is the license under which the Linux kernel code falls, which is probably the single most interesting software package (fully-functional ‘Real OS’* kernels being somewhat rare) and, thus, the package most likely to get ripped off.

*(The definition of a ‘Real OS’ is somewhat arbitrary, but it must have preemptive multitasking, protected memory, and no seriously annoying built-in limits as to filenames or resource usage. MS-DOS is universally considered to not be a ‘Real OS’, Windows 95 might barely pass the test, MacOS 9, to my knowledge, fails it as well, and MacOS X, Linux, and Windows XP pass it easily.)

Luckily for all of us, the definition of Open Source really isn’t up for discussion as it applies to software. The Open Source Initiative has defined things quite nicely.

I work for a software development company that provides the source code free of charge when you purchase our software. Here’s an explanation: when you buy a copy of Microsoft Word, for example, you buy the compiled executable, the completed program. You can only customize it within the limits build into the program. If Microsoft worked like my company, when you buy Word, you’d also get all its source code. If you’re a programmer, you can then add to or edit that source code to make Word do whatever you like (that is, you can customize it beyond what’s initially built in), then recompile it into the executable you use to open documents and such.

My company’s very careful about **not **using the terms “open source.” Instead, we use phrases like “source code is available” or “source code is provided” or “source code is included with purchase.” We avoid using “open source” because of the Open Source initiative’s definition - our software isn’t totally open because a) it’s privately owned and copyrighted and b) it’s not free; we do expect you to pay for it and will prosecute anyone who infringes on our copyright.

In our case, we make money both on the sale of our software and on consulting/modification fees. We consider that our “open” software is a bonus - our customers can modify the software themselves without any additional fees, provided they have the technological and programming knowhow. It’s also a selling point for our resellers - they too can act as consultants and make some money by encouraging their customers to come to them for help with modifications. A third selling point is that many of our resellers have developed plug-ins or complementary applications that can seamlessly integrate with our software products and can offer those applications for sale (some of which we even promote for them). We like to think we’re better than other software providers because our source code is provided to you for all of these reasons (tho’ I don’t know that we really are - it’s not like our competitors can’t make many of the same claims without providing source code). It’s a model that has worked reasonably well, though - the company’s been in business for 30 years. Of course, we’re a small player without much market share, and our influence has definitely declined over the years.

Not a stupid question at all. First, remember ftg’s three rules. A good successful example of this is JIRA , an issue-tracking and task management application–it’s not free, it’s not cheap, but if you buy it, you get the source code. There is a Free Software Movement, and while its adherents are usually also pro-open-source, the river doesn’t necessarily flow both ways.

Second, many (if not most) contributors to open source projects also get paid to develop standard, closed-source software, and simply use the open source software (OSS) as tools to get the job done. In this way, a lot of OSS can be viewed as a kind of “middleware”–for any given business application, there’s still a lot of development that goes into its realization. Even if you have all the tools you need, it’s still a lot of work to meet a large business’ specific needs.

Often programmers working for such businesses who build applications using OSS frameworks and components will discover bugs in those components and, in fixing them, can become contributors to the projects. Others will, based on a need for new functionality, contribute new features. The OSS model facilitates that process greatly and eventually, an entire community can form of users and developers who want to make their particular OSS better.

NITPICK ENAGE
Redhat actually stopped providing their software for free. Ticked me off when they did.
You can’t download their Linux distribution.
What makes them “open source” is that you can download 99% of the software that goes into their distribution and assemble it to look just like their distribution. Check out CentOS for an example.

What? You can still download Fedora, the desktop distro, just fine.

Yes, you can.

Uh, no. It’s a bit more complex than that. See the link to OSI I provided.