15 Jun 2003 Jimbob   » (Journeyer)

Capitalism, Socialism, & Communism

Warning: The following is my (oversimplified) interpretation of Karl Marx. If you don't like Karl Marx, or don't want to know what I think the difference between capitalism, socialism, and communism is, well, skip to the bit about software.

johnnyb: I'm sorry, but your terms are wrong. Capitalism is an organizational system whereby those who control (own) the capital (land, technology, machines, raw materials, etc.) are not those who use the capital to produce things. It's an extension of feudalism, whereby the nobles owned the land, but the peasants worked the land, and paid the nobles for the use of the land. Under capitalism, rather than pay the capital owner for the use of the land, everything you produce is automatically owned by the capital owner, and you get a portion of what you produce (or it's equivalant, in $) it as payment.

Socialism, in contrast, is the organizational system whereby the capital owner and the laborer are the same. So, for example, in a real socialist system, employees would vote on what their pooled capital should be used for. In extreme cases of disagreement, those who are not willing to abide by the vote can pack up and leave, taking with them their share of the capital. IOW, true socialism is employee ownership to the point where the term "employee" is no longer accurate (since every "employee" works for both themselves and every other employee at the same time).

I think when you're saying capitalism, you mean an exchange system which uses money as means to quantify exchange value (exchange value = labor used + capital used). An exchange system based on money does allow for optimization of the organizational system used to produce things, but is generally unrelated to whether the organizational system is capitalist, socialist, or some mix of the two.

Communism, (by which I mean the raw definition of communism, not what the USSR, PRC, USA, etc. say communism is: state capitalism, industrialized feudalism, or just plain old fascism) on the other hand, is a socialist organization of production combined with a non-value exchange system. Thus, the communist exchange system is the so-called "gift economy". I think everyone agrees that a gift economy would be really cool if it could work, but disagreement arises over whether or not it could work.

As for the question of morality, I think the answers are obvious (given accedance to the definitions above, of course). In a working, purely "gift economy", no one could starve unless there simply weren't enough resources to go around. In a working, purely "market economy", people can starve, even when there are enough resources to go around, simply because there is no guarantee that one will have enough of the available resources to survive.

As you mentioned, there is a connection between the morality of the people laboring in the system and the efficiency of a "gift economy". I'd counter by saying that it's a chicken/egg problem. Are people immoral because market economies reward such immorality, or are market economies simply rewarding people's natural tendancies to be immoral. That's a personal question, obviously, based on your own beliefs on human nature. I would like to add this, however: Gift economies worked fine for the most of the pre-columbian Native-Americans in North America. Were the Native Americans better people than their European conquerors, as they had accepted a more "moral" system of exchange? Or were both the Native Americans and their European conquerors simply responding to their respective environments: tribal communalism in North America vs. the feudal market system in Europe?

So, with the morality of exchange out of the way, on to organization! :-). In a working, purely socialist organization of production, each person has an equal say in what their resources (and more importantly, their time) are being used for. Conversly, in a working, purely capitalist organization of production, only those who own the capital have a say in the use of resources and labor time for not only their own resources and time, but also all those who labor for them (their employees). The morality of socialism vs. capitalism is the morality of freedom vs. slavery. Take your pick.

Software
Currently, my thoughts on that which matters least are:
LibGTcpSocket

LibGTcpSocket is almost ready for a full-fledged 1.0 release, but the duplication of code between this & LINC is disturbing (at best). I've got something of a plan on how to handle this:

First, add a new enumerated type, LINCError. Then, add LINC_ERROR and LINC_LOOKUP items to the LINCStatus enum. Then, add a LINCError item to the object-private data. Then, add
LINCError linc_connection_get_error (LINCConnection *conn);
to the API. Finally, hook all these new things in, and LINC would be totally usable by LibGTcpSocket. AFAIK, the changes should be ABI compatible and (mostly) API compat (the additions to LINCStatus would need to be taken into account by users of LINC).

LibGTcpSocket would then become a wrapper around LINC which does automatic proxy traversal, and has a nicer API. This is easier for me, as I like the LibGTcpSocket API, and would cut down a lot on GNOME's code duplication if LibGTcpSocket became the officially sanctioned way of handling network connections.

Of course, LINC is now private to ORBit, making all this moot. Perhaps a stable, next-gen LINC API/ABI can be re-introduced back into GNOME at a later date... (hint, hint) -- This is what I get when I stop paying attention to mailing lists for a while.

GnomeChat

GnomeChat is officially usable as an everyday IRC client. It doesn't support DCC yet, and there are a bunch of both design and implementation bugs which need to be worked out for it to be officially "ready" for a 1.0 release, but if you just want to chat on IRC, it'll work. I would recommend that you not leave it idling while you go off (away for more than a few seconds) and do other things, though, as no efforts have been made to ensure it's secure.

Currently, I'm working on a custom GtkTreeModel implementation for the XML-based network list.

Nautilus URIs

I personally think Nautilus URIs are a bad idea, and would never intentionally use one if I could avoid it. However, with that said, if people want to waste their time writing one, I say more power to them -- I wouldn't want them being used in the "Official" GNOME, but as add-ons, I think they're acceptable.

GObjectPrivate

One of the nicer things in GObject 2.4 (the whole dynamic typesystem thing is really cool once you get used to it) will be the GObjectPrivate feature. Basically, it's replacing the *_priv members and keeping it all straight in GLib. Of course, if your object already has _priv, it's slower to call a function & get the *_priv data than just access *_priv, but that's not the point.

The point is to add new features to ABI-frozen library objects, which require new struct members to do well. So, for example, GtkWindow can have stock-id-based icons, or GtkPaned can do click-to-collapse on the separator, in a drop-in-replaceable way. Very cool!

Life

Things which affect me indirectly...

Terrorism

I often wonder why people in the United States view the government as their friend, if not savior. Historically, blind faith in one's "leaders" (rulers is a better term, IMHO) is a recipe for disaster, repression, and genocide. Ask the Germans, French, and Russians. They are well aware of what happens when you put such faith in a ruler. The very word "terrorism" was originally invented to describe the form of government that the Jacobins instituted after the French Revolution (thus stealing the people's revolution and turning it into the original experiment with state communism). All three states each killed more people than all the terrorist incidents in the last 100 years combined.

And the right-wing in the U.S. wonders why they were the three loudest voices against Bush's War(s). Yes, the governments involved opposed the war for political/economic motives. Yes, Iraq owed each of the three states huge amounts of cash. That, however, doesn't explain the opposition of those countries to the war. If the states wanted their money, why not jump on the bandwagon and demand a fair shot at those lucrative rebuilding contracts? (BTW, all those contracts have thus-far gone to companies with direct ties to the Bush administration.)

The reason is simple: 90%+ of the populations of those states didn't want to go to war. They were (gasp) following the principles of democracy--when the majority of the population wants peace, you don't go to war, and you don't make up lies about weapons of mass destruction, and 9/11 to convince them to go to war.

Our Western European "allied states" in this war were massively un-democratic in their approach to the war. In Spain, 95% of the population opposed the war, and the largest unions called a 1-day general strike to show their distaste for the government rejecting what an undefeatable majority of the people wanted. In U.K., before the war, opposition was between 70% and 55% of the population (depending on the survey & exact date). The governments rejected popular demands to stay the hell out of it, and instead chose to accept foreign domination of their political process, the people be damned.

And then there is Turkey. Neighbor to Iraq, it was included in early plans of the invasion. Unfortunately for Bush, the parliment their realized that revolution was not far off if they chose to allows U.S. forces to use Turkish soil over the complaints of 90% of the Turkish population. So the Turkish parliment voted to reject the U.S. demand. And what happened? Bush demanded a re-vote! I'm sorry, but if Gore didn't get a re-vote to confirm his victory in the 2000 election, why should Bush get a re-vote in another country, to support an invasion that even a third of U.S. citizens didn't want?

Of course, there'll conveniently be another terrorist attack just in time to get Bush re-elected. Just watch TV and be afraid of who they tell you to be afraid of.

Latest blog entries     Older blog entries

New Advogato Features

New HTML Parser: The long-awaited libxml2 based HTML parser code is live. It needs further work but already handles most markup better than the original parser.

Keep up with the latest Advogato features by reading the Advogato status blog.

If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!