Universal Postgres

It turns out that nobody seems to know how to build a Universal version of PostgreSQL for OSX. This turned into a problem for me when I was trying to build a version of PHP with support for postgres — I needed Universal (four-architecture) libraries.

The following seems to work (I’m running an Intel Leopard):

1) I have the following variables set in my .bashrc — I build everything Universal. If you don’t have these variables set, you should set them now.

export CCFLAGS='-arch ppc -arch ppc64 -arch i386 -arch x86_64 -pipe'
export CFLAGS='-arch ppc -arch ppc64 -arch i386 -arch x86_64 -pipe -no-cpp-precomp'
export CXXFLAGS='-arch ppc -arch ppc64 -arch i386 -arch x86_64 -pipe'
export LDFLAGS='-arch ppc -arch ppc64 -arch i386 -arch x86_64 -bind_at_load'

2) ./configure --with-the-options-of-your-choice

3) LD=gcc AR=libtool AROPT='-static -o' LDREL='$(LDFLAGS) -nostartfiles -r' make -e

4) sudo make install

Step 3 was the tricky bit 😉


Would you like mustard on that?

There’s a lot of talk these days about software factories. And books about software development borrowing from practices and processes used in automotive manufacturing. This is based on the premise that developing and delivering an application or functional enhancement is as complex as building an automobile, or locomotive.

When one is working in an IT department, however, many of the work requests that arise are actually fairly simple. If one then takes these simple requests, and treats them as if they were complicated, they become complicated. And this complication leads to extended delivery times, and large expenses, and increased risks of failure.

Here’s the analogy. When one orders an automobile — and they can manufacture it to order and deliver it in only a few days — that’s impressive. But when one orders a pastrami and provolone on rye with roasted peppers and a pickle — that estimate of “only a few days” starts to seem a trifle excessive.

We don’t have methodologies — even “agile” methodologies — that model application delivery in an IT department (or even a part of it) like a delicatessen. Every sandwich order may not require baking the bread, smoking the beef, growing the peppers. Inventory management in a delicatessen is not quite as structured as in an automotive factory. So when somebody from “the business” requests an application from IT — and gets something within the day — it is cause for astonishment.

I’d like to think that with the proliferation of modern tools, libraries, frameworks, and environments, that we could be as responsive — sometimes — as the counterman at the deli.

Food for lawyers

Matt Asay suggests that a definition for an open source company would be:

An open source company is one that, as its core revenue-generating business, actively produces, distributes, and sells (or sells services around) software under an OSI-approved license.

So, supposing that a company produces a software product. It is released under the GPL (or other OSI-approved license). Its business model is to sell versions of the software under a commercial license (the famous “dual-licensing” business model). In such a case, the core revenue-gnerating business produces, distributes, and sells software which is explicitly not under an open source license — even though the exact same bits are available under an open source license.

Under the proposed definition would such a company be an open source company?

Weighing in

Nat asks a difficult question. One that I am frequently in the habit of posing, although not as straightforwardly. For example, the copyright notice for Windows XP (I haven’t seen the one for Vista yet) advises us that

Portions of this product are based in part on the work of the Regents of the University of California, Berkeley and its contributors. Because Microsoft has included the Regents of the University of California, Berkeley, software in this product, Microsoft is required to include the following text that accompanied such software:


Portions of this software are based in part on the work of Massachusetts Institute of Technology. Because Microsoft has included the Massachusetts Institute of Technology software in this product, Microsoft is required to include the following text that accompanied such software:

and many others.

Obviously, that makes Microsoft’s Windows XP an Open Source product, built as it is upon BSD licensed software, and Microsoft, an Open Source company. Or perhaps not. Or perhaps, in a homeopathic way.

If the definition of “open source” includes any software that incorporates BSD licensed code, then I think we’re approaching the point where all software is open source software. My personal recent favorite is the recently GPL’d Xara Xtreme. It’s a drawing program. The license is GPL. Check out the build instructions. Especially step 4. It seems that the rendering library is provided as binary only. A curious fusion: binary-only GPL software.

I think it’s fair to say that pretty much all software now incorporates some free software components, LGPL’d, BSD’d, or whatnot. Mathematica does. Apple’s Mac OSX does. Adobe Photoshop does.

I saw the same thing happen to “Object Orientation”. The Object Oriented Programming Systems, Languages and Applications (OOPSLA) conference used to be frequented by people working in brand new object-oriented languages like Smalltalk. Then, somewhere along the way, every programming language (including Perl and Fortran and Cobol) added object oriented extensions, and it was difficult to find any programming which wasn’t object oriented. Here we are with open source software.

It’s not meaningless. It’s a synonym for digital software. Or, maybe, object-oriented software.

On the plus side, that means that Nat can invite anybody to OSCON.

On the plus side, that means that Open Source has achieved world domination.

On the minus side, it doesn’t feel a whole lot different than when most software was proprietary.

Open Source is a sourcing strategy for software users and manufacturers. It’s like software-written-by-consultants-instead-of-employees, which we don’t have a nice word for, but we could make one up. How about consultative software? How is consultative software different from regular software? Is the software consultative if some employees and some consultants work on it? Of course it is. What if the consultants are marketing consultants, but all the software is written by employees? Well, that should probably count, too.

As long as the definition (of anything) is based on the production process instead of the finished product, it becomes difficult to distinguish, given the finished product, which process was used — unless the process affects the finished product in some definable way — in which case you should define the difference based on that “finished product” difference. And for anything with a complex production process, it can always be true that some part of the production process can incorporate any methodology you like.

It’s useful to make distinctions. There ought to be some kind of software which isn’t Open Source, which we can distinguish from Open Source Software. I agree with Nat’s definition. I should be able to download it, compile it, and use it. Burn it onto a CD and give it to all my friends. Sell copies at a community fund-raiser.

If I can’t, then it is Open-Source-compatible software, or Open-Source-friendly software, or Open-Source-oriented software, but it isn’t Open Source software. It’s probably Object-Oriented, though, so perhaps they could present at OOPSLA.

Another five things…

While I was away on vacation, I got tagged by Nick and Stephe, so I guess I have to cough up the Five Things. Ever mindful that one’s identity is established by “the set of things you don’t know about me” (you know, mother’s maiden name, name of first pet, etc.), I am compelled by the Law of Chain Letters to reveal Five Things You Don’t Know About Me.

  1. I grew up in São Paulo, in Villa Buarque — between Avenida Santo Amaro and Parque Ibirapuera. That means I used to be bilingual in English and Brazilian Portuguese — although the Portuguese is a bit rusty now.
  2. The library at the small school I attended did not have a card catalog for the paperback book section. In sixth or seventh grade I undertook a project to type up a card catalog (on my Olivetti manual typewriter) for the paperbacks — two index cards for each book, so they could be located by author or by title. (I had to buy Delicious Library when it came out because the idea of automating the building of a card catalog had a certain nostalgic appeal.) For some reason, I remember wrestling with the question of whether Daphne du Maurier should be filed under “D” or “M”. There is a right answer.
  3. My family and I came to America on a cargo ship, the Burg Sparrenberg, which was carrying raw cocoa and a few passengers. One of the passengers was a firm believer that eye exercises would eliminate the need for spectacles. Alas, I still wear glasses. Perhaps I didn’t do the exercises correctly.
  4. When I was in high school, we used to take the subway down to the McAlpin Hotel on 34th Street for USCF chess tournaments. As black, I would always play the Petroff’s Defense for King’s pawn openings. I favored the Indian defenses for Queen’s pawn openings.
  5. In college, I stopped playing chess and took up Go. I used to hang out at the student center coffee house trolling for games. Eventually, this obsession led me to drop out of school. I did, however, go back the following year and graduate.

Now we get to the hard part. Most of the people I can think of to pass this along to are non-bloggers. Calling them out “bloggishly” as it were, wouldn’t work. So, I’m going to widen the circle by using a generational shift. I have five children over the age of 16. Matthew, Kimberly, Kayla, Sara, and Corey. Tag. You’re it. Five things that your father (and the rest of the world) doesn’t (don’t) know about you. You could even post them to your MySpace account.

And encourage five other people to do the same.