It seems to me that there are two separate things - the cultural definition and the economic definition. Culturally, I have to say I think we are white-collar. We're part of the intelligensia - we have our jobs because we were educated (not necessarily in computers) and because (most of us) grew up expecting to earn our livings with our brains or at least considered that a possibility. The poor and disenfranchised are obviously (to me at least) as capable of earning their livings with their brains as anyone else, but for a variety of reasons (the educational and economic at the front) *most* poor people don't grow up with that expectation.

On the economic side a friend of mine (who happens to be a circuit court judge) said recently "Unions are a terrible idea except for the fact that letting corporations have complete control over peoples' livelihoods is an even worse idea." Microsoft and Oracle and Intel (and GE and GM etc.) do not have my best interests in mind either as a consumer or as a programmer. The minions of those corporations would be failing at their jobs if they were not working hard to make sure that you and I get paid as little as possible and still get them the workers and products they need. It is in their interest that we have as little choice as possible in what jobs we have. We've been lucky enough to be living in a time (at least in the U.S. and Europe) where having the skillz pays our billz. But the corporations are working to undo that by playing off programmers in the first world against programmers in the third world and when the dust settles this honeymoon in which we as programmers can often call the shots in the current market will be over.

Are there corrupt and inefficient and ineffective unions, yes of course we all know that. But the same things can be said of any institutions - government, media, religion, etc.- they all pretty much suck in reality (sorry if that offends anyone). Because they have previously and currently suck doesn't mean we should abandon them or give up trying to make them work.

Yes! We should have a software workers union. It should be strongly allied with the more general international open source movement and with the international union movemenets in other fields.

There already is one such union I know of in the US. There is a branch of the Communications Workers of America for web designers and programmers. I don't know precisely who is or can be covered by it.

Perl Programmers of the world untie! You have nothing to lose but your hashes!