SIL LSDev Linux Development

Language software for Linux and Mac OS X

Why Firebird? Why not a Different RDBMS?

David asked, “I’m curious to know why Firebird has been chosen as a database engine [for FieldWorks] out of the many other RDBMSs out there, such as MySQL.”

I get this question from time to time, especially when I go to our Computer Technical Conference (CTC), which comes around every two years.  It is a fair question, and since CTC is just a month away, I’m taking the opportunity to remember why we did what we did. I had to ask the people that made the decision, because I had a hard time remembering. It’s been a few years.

FieldWorks started out as a Smalltalk project. When the Smalltalk vendor went under (as I have heard), someone mapped the object data to SQL Server. This was SQL Server 7.0, I think, back before the turn of the century. (Literally.) We have since upgraded to SQL Server 2000, then 2005. (We don’t have any plans currently to move to 2008.) The application code was ported to C++, then newer code was done in C#. You’ve seen various entries from Mark and others about porting that.

I have made at least two studies over the years about which RDBMS to port to. I’m not sure MySQL even existed during the first study, but I know it wasn’t mature enough to do what we wanted at the second study. By the time MySQL had matured–how much may still be a matter for debate–we had already had work underway porting to Firebird.

At one time I had recommended we go with PostgreSQL, and we did head in that direction for a while. However, PostgreSQL needed Cygwin at the time, and Firebird already had a native Windows implementation. Also in Firebird’s favor was the fact that it could be embedded into the application, and this has always had a strong pull for some on the team. Also, it was thought that it would be easier to port the SQL that SQL Server uses to Firebird than it would be to port it to PostgreSQL. Finally, we had a volunteer who knew Firebird and was able to give a significant amount of time. We are in fact indebted to him for laying the foundation of the database port to Firebird.

So the team dropped PostrgeSQL in favor of Firebird.

We have looked at object-oriented datababses as well. None were open source during most of time we made our decisions. We have looked db4objects, but have decided to continue with Firebird for now. Perhaps the biggest reason is that the jump to another SQL RDBMS has already shown to be difficult. Jumping to an object-oriented database would be compound the difficulty.

We have tens of thousands of lines of SQL code for FieldWorks now. Most of it is now ported to Firebird. We still need to put it through unit tests and regression testing.

5 Responses to “Why Firebird? Why not a Different RDBMS?”

  1. Even if MySQL were capable at the time, the licensing is not friendly to distribution. There is a Mac app called Checkout that uses PostgreSQL with SQLAlchemy (ORM) and PyObjC… Quite an interesting combo (written in Python at a much higher level than C, or even C#). But Postgres understandably didn’t fit in your case, since proper Windows support in Postgres is quite recent. Sounds like Firebird has some of the advantages of SQLite, while allowing client/server operation as well. For Object DBs and such, Berkley DB is the only (embeddable) alternative I know of, available as open source, but it’s not SQL-oriented.

  2. Steve Miller says:

    You’ll note that I avoided the topic of licensing altogether. :-) Different people weigh in on that topic.

  3. Steve Miller says:

    My previous comment was a little cryptic because I left out a word. I meant to say that Different people weigh in on that topic differently. I have heard solid arguments both for and against GPL. I don’t intend to get wrapped up in that discussion.

  4. You know, the thing about SQL is, that there is virtually nothing that can replace it.

    Does anyone know if a substitute exists for sql? I mean besides MS SQL and Oracle and all that jazz. Thanks.

  5. Steve Miller says:

    Actually, I have recently spent a couple of weeks of research on the topic. If you’re interested, I can send you the write up on it.

Leave a Reply