Project of the Month, December 2007

December 2007: Firebird


Project Leader:

Dmitry Yemanov
Dmitry Yemanov
Age: 30
Occupation: Software developer and coordinator
Education: Systems Engineering, Penza State University
Location: Penza, Russia.

Key developers:

Alex Peshkov
Alex Peshkov
Age: 44
Occupation or experience: Computer programmer
Education: Moscow Physical-Technical Institute, 1986
Location: Yaroslavl, Russia

Vladyslav Khorsun
Vladyslav Khorsun
Age: 33
Occupation or experience: Software developer
Education: Faculty of Applied Mathematics, Dnepropetrovsk State University, Ukraine
Location: Dnepropetrovsk, Ukraine

Adriano dos Santos Fernandes
Adriano dos Santos Fernandes
Age: 24
Occupation or experience: Software developer
Education: Studying Computer science
Location: Sao Paulo, Brazil

Claudio Valderrama
Claudio Valderrama
Age: 36
Occupation or experience: Information engineer
Education: Ingenieria Informatica, Universidad Tecnica Federico Santa Maria, Valparaiso
Location: Vina del Mar, Chile

Arno Brinkman
Arno Brinkman
Age: 35
Occupation or experience: Software developer
Education: Telematics
Location: Bemmel, The Netherlands

Quote about SourceForge.net

SourceForge.net is the reference site for open source projects. It gave us the ability to work together on Firebird from Day One. When we used the tracker at SF.net, it worked more reliably than our own JIRA tracker does today! Where would open source be without it?

Why did you place the project on SourceForge.net?

At the beginning, we had no money, and what SF.net offered was not only ideal, it was free. We even hosted our community Web site at SF.net originally, although we moved the site about 18 months ago. We thought that, SF.net being the hub of open source development, it would be the right place to be for picking up new people with good skills — and so it has proven.

How has SourceForge.net helped you?

It’s a central point for sharing source code.

The number one benefit of using SourceForge.net is:

It’s free and offers great service.

Description of project

Firebird is an open source relational database management system that offers many ANSI SQL standard features. It runs on Linux, Windows, and a variety of Unix platforms. Firebird offers excellent concurrency, high performance, and powerful language support for stored procedures and triggers. It is used as the back end to a wide variety of two-tier, n-tier, and Web applications. Firebird scales effortlessly from a single-user, single-machine configuration to enterprise environments of 1,000 or more clients.

Firebird sources and binaries are distributed free under licences derived from the Mozilla Public License v.1.1.

Trove info

  • Development Status: 5 – Production/Stable
  • Intended Audience: Developers, End Users/Desktop, System Administrators
  • License: Mozilla Public License 1.0 (MPL)
  • Operating System: All 32-bit Microsoft Windows (95/98/NT/2000/XP), all BSD platforms (FreeBSD/NetBSD/OpenBSD/Apple Mac OS X), all POSIX (Linux/BSD/Unix-like OSes), HP-UX, IBM AIX
  • Programming Language: C, C#, C++, Java, Object Pascal, Python
  • Topic: Database Engines/Servers
  • User Interface: Non-interactive (Daemon)

Why and how did you get started?

The two originators, Mark O’Donohue and Helen Borrie, started it when the (then) Inprise Corp. released almost the entire C source code for its InterBase 6 Beta at the end of July 2000. Other developers quickly joined the project. After a massive code cleanup, Firebird 1.0 was released in March 2002.

Alex: Before 2000 I had been successfully developing and maintaining my own C++ library for DBF support but, even then, it was clear that DBF’s days were gone. The company where I worked at that time needed SQL software that was free and able to run on various operating systems, including Windows 95. It wasn’t an option to suggest that clients use pirated copies of Microsoft SQL Server, and buying licences for it wasn’t an option for most firms in Russia at that time either. In 2000 I was happy to discover that Borland had open-sourced InterBase. The first thing I did was to add dynamic SQL support to IB6, but it was soon obvious that supporting a SQL server was going to be a bit more complicated than supporting libraries for DBF databases! Before long, I was attracted to the Firebird project, and I became a member of the core team in 2002.

What is the software’s intended audience?

Mainly database software developers, of course — all flavours. Firebird serves as a solid relational database back end to all kinds of user and Web applications. Because it is largely self-administering, cross-platform, and free, and is well supported with driver options, it appeals at all levels.

How many people do you believe are using your software?

Total number of downloads from SF.net is around 2.5 million since the project started, but those statistics aren’t reliable and, anyway, deployment to production sites is not usually done via the Internet.

Because it’s free, we don’t have any reliable way to assess the numbers accurately. We can certainly estimate it conservatively in six figures, but it is no doubt much higher in terms of end users; one deploys a single Firebird database server to serve anything from a single user to thousands of concurrent users at the enterprise level. Deployments of embedded Firebird in appliances, such as the Telefonica “o2″ mobile Internet software, run into the millions worldwide.

What are a couple of notable examples of how people are using your software?

Canadian telcom company Distributel manages its call system 24/7 on a network of satellite Firebird servers all replicating to a central Firebird server cluster. Services is “five-nines” (because it is required by law to be so). Customer dial-in and Internet billing services are also handled on the same network.

Alex: There is a lot of software in Russia based on Firebird, because it’s free, reliable, cross-platform, and (an important factor, at least in Russia!) highly compatible with Delphi. Firebird is used in the Yaroslavl region in a 24/7 ticket sales environment in bus stations. Big stations are linked, enabling real-time dispatch of buses. And I’ve just received a letter telling me that the medical triage unit here is about to migrate from SQL Server to Firebird.

Adriano: The Brazilian government distributes its SEFIP (social welfare contribution) software to companies through a federal bank. It switched its back end from the original open source InterBase 6 to embedded Firebird at the start of this year. Between 1.2 million and 1.5 million companies in Brazil are required to use SEFIP. This is a case not unlike the “o2″ one mentioned above, where possibly millions of people are using Firebird without even knowing.

What gave you an indication that your project was becoming successful?

Really it was successful from Day One. We started out with a mass migration of former InterBase users for whom Firebird was, at the time, the only hope of continuity. The first full release went through a long beta phase, with many users running our betas in production during 2000 and 2001. Once the releases started to flow, the user base took off, and the torrent just keeps growing.

Getting nominated in four categories for this year’s SourceForge.net Community Choice awards was a welcome set of feathers, especially when we won in two of them (Best Project for the Enterprise and Best User Support).

We’ve always had a problem with recognition. As a non-commercial project distributing free software, we aren’t in the rat race of marketing budgets, competing for the software dollar. Whenever the online technology press gets interested in us, we get good write-ups. We started off with zero funds. The formation of the Firebird Foundation in 2002 gave us a way to collect and centralize funding from well-wishers and users who have reasons to want Firebird to survive. To date, however, the overwhelming majority of Firebird users, including commercial companies with huge deployments, don’t contribute anything. Our income is way too small to divert funds away from the essential developer grants into marketing.

What has been your biggest surprise?

Even though the project has a very supportive community around it, more often than not we get no indication of who is about to launch a major product that uses Firebird. The recent discovery that Firebird was behind “o2″ was a complete surprise.

We are a truly international community. Meeting one another face-to-face at conferences is always a surprise we look forward to. To date, Claudio (in Chile) and Adriano (in Brazil) have never met any of the other team members, nor each other. Perhaps some of our biggest surprises are still to come.

What has been your biggest challenge?

The really big challenge is one that never goes away: weighing up the incessant demand for more features against strict, self-imposed quality standards and finite resources.

Technically, our biggest challenge is upon us right now. Firebird 3, due in alpha next year, represents a substantial re-architecting of a huge system that has been around for more than 20 years. Simultaneously, we are providing new subreleases of the v.1.5.x and v.2.0.x release series, and a 2.1 series is in beta.

Why do you think your project has been so well received?

Those who understand the benefits of open development appear to appreciate the responsiveness of our project members to their problems and needs. Bugs get fixed as quickly as possible, and we are easy to approach when explanations are wanted. Many driver interfaces are available and under active onward development (Jaybird for Java, ADO.NET, ODBC, C++, Delphi, and PHP, to name a few). We maintain a large number of support lists, for Firebird itself and for the associated driver projects. Firebird is also undeniably a good value for money.

Where do you see your project going?

Alex: The main goals that I see for the next major release are enhancements to the shared data cache and implementation of full support for SMP on our main platforms.

What’s on your project wish list?

Alex: The main goal of the next release is a multi-threaded, SMP-friendly engine.

Vlad: Long life, stability, better public visibility, more developers and other resources.

Adriano: For Firebird to make the life of application developers and DBAs easier, be more reliable and predictable in metadata updates, and to be used by more big enterprises.

What are you most proud of?

Arno: Firebird users who give support in our support list.

How do you coordinate the project?

We use two SourceForge.net lists for day-to-day coordination: firebird-devel is our “development lab,” and firebird-admins is where the core codeworkers reach decisions about feature sets, release dates, and build details. Architectural discussions usually take place in a Yahoo! list, firebird-architect, typically in threads spawned from an RFC presentation.

We maintain a JIRA tracker linked to our CVS and SVN trees at SourceForge.net where both project members and the public can browse bugs, feature requests, and current activities. Assignments, for both features/enhancements and bugs, are usually picked up by whoever is working closest to the area concerned.

We have a comprehensive testing suite developed in Python by Pavel Cisar. Tests are available to everyone for unit testing. Pavel oversees the QA process for all prerelease testing, including regression programs for specific changes. We rely heavily on public field-testers during alphas and betas and encourage them to report their results (good or bad) to firebird-devel or the tracker.

What is your development environment like?

Dmitry: AMD64-x2, Windows XP 64-bit and Microsoft Visual C 2005, Ubuntu Linux 64-bit and gcc

Alex: Linux, based on Gentoo, but almost completely rebuilt from sources manually; to make Firebird fit better with what distro packagers do with it, I prefer to use software from the original developers. I’ve never got used to using a variety of IDEs and, for my everyday work, a minimum text editor (like the one in Midnight Commander) and gcc 3.2 to 4.2.1 with appropriate gdb versions are OK. Hardware is AMD64-x2/3800, RAM 1GB, 2*250GB SATA disks in RAID1 configuration.

Vladyslav: Intel Core 2 Duo CPU, 4GB RAM, 3*320GB SATA-II hard drives. I use Windows XP 64-bit and Microsoft Visual C 8.

Adriano: AMD Athlon 64 dual core with 2GB RAM running Windows XP and Microsoft Visual C++ 2005 Express Edition; AMD Athlon XP with 512MB RAM running Ubuntu Gutsy Gibbon Linux, Eclipse, and GCC.

Arno: Two Xeon 3.6, Windows 98, Vista, Microsoft Visual C, Delphi, Glowcode

Do you work on the project full-time, or do you have another job? If you work on the project part-time, how much time would you say you spend, per week, on it?

Dmitry: Full-time

Alex: Full-time

Vladyslav: I worked part-time on Firebird starting in 2004, and full-time since March 2007.

Adriano: Part-time, about 15 hours per week.

Claudio: Part-time about 9 hours per week or more.

Arno: Part-time, currently a few hours per month, but I hope to do again 12 hours per week.

Milestones:

  • 2000: Fledgling developers get the long-awaited source code.
  • 2000-2001: Birth of the Jaybird (Java) and Firebird-ODBC driver subprojects, with project leads Roman Rokytskyy and Vladimir Tsvigun, respectively. A Java/Docbook documentation system is introduced by David Jencks.
  • 2002: First full release, v.1.0, features thousands of bug fixes to the original source code, new SQL language features, and first attempts to resolve non-ISO-standard implementations and logical ambiguities inherent in legacy InterBase. First Linux builds. V.1.0.x went to three subreleases; no further development since November 2003.
  • 2002: Carlos Guzman Alvarez begins development of .Net and Mono providers. Mark O’Donohue and Helen Borrie assemble a steering group of 12 developer users to form the Firebird Foundation. Formal incorporation as a nonprofit association under the legal jurisdiction of the NSW state government happens on November 20. Members pay subscriptions, first sponsors appear. Active codeworkers are honorary members.
  • 2003: First full release of v.1.5, entire codebase refactored from C to C++ to pave the way for plug-in architecture planned for v.2 and for mobile OSes and appliances. Many SQL language enhancements and re-implementations. Classic and embedded models for Windows are introduced and the embedded implementation on POSIX is rationalized. First international Firebird Conference is held in Fulda, Germany.
  • 2003: Paul Vinkenoog joins the Firebird-docs project and breathes life into it. He completes the Java/DocBook tools development started by David and sets about organising authors and materials. V.2 development is under way, with substantial improvements in code structure, development of reusable elements, and fixes for vulnerabilities and bugs.
  • 2004: Jim Starkey joins the project and begins work for a private customer on a tree forked from the v.1.5.2 codebase, codenamed Vulcan, which represents a major re-architecting of his original 1990 design. Many aspects of Vulcan will be subsequently incorporated into Firebird 3. Second international Firebird Conference, also in Fulda.
  • 2005: Firebird 2 betas hit the bricks. Vulcan beta is available to field-testers and SAS Institute developers join the project. Third international Firebird Conference in Prague.
  • 2006: Release of Firebird 2.0. at Fourth International Firebird Conference in Prague. Features a large number of new language implementations, tightened security, a pluggable incremental backup subsystem (nbackup), and total revamping of the INTL (international language support) subsystem using the ICU Unicode libraries distributed by IBM.
  • 2007: Release of v.1.5.4, more subreleases of v.2.0.x, and two beta releases of v.2.1, which introduces important developments in SQL language, operations monitoring, and international language support. Preparations are under way for v. 3 development, including design for fine-grained SMP support, pluggable cluster support, pluggable security, and schema namespaces. We win in two categories of the SourceForge.net Community Choice Awards (Best Project for Enterprise and Best User Support). Fifth international Firebird Conference in Hamburg, Germany.
  • 2007, December: Release of v.1.5.5 before Christmas, with some important v.2.0 backports.
  • 2008, early: Task group will decide and publish the roadmap for 2008-9.
  • 2008, first quarter: At least one RC followed by full release of v.2.1.
  • 2008, by mid-year: [Speculative] v.2.5 Betas and release; v.3.0 Alpha[s].

How can others contribute?

In the core, we have plenty of room for more people with good C++ skills who are interested and willing to share their time. Firebird isn’t a project for dilettantes. New “inductees” typically demonstrate an interest in doing a particular implementation or enhancement by having downloaded and familiarized themselves with a module and presenting some code to the firebird-devel list. If it shows they understand what they’re doing (or know what they need in order to understand better) and intend to stick around, one or more of the active codeworkers will step in as mentor. Serious, regular contributors may become eligible for Foundation grants if they’re able to make a minimum time commitment per month.

In QA we can always use more testers: field-testers for snapshots, betas, and RCs (the more the merrier!) and also more hands to run the test suites. Grants can be made available to seriously useful suite testers. Initial contact point is the firebird-devel list although we do have the firebird-test list at SF as another meeting-point. Coordinator is Pavel Cisar.

We have an ongoing, desperate need for documenters: people to write and maintain user documentation. The user manuals and reference guides are ongoing projects that need skillful contributors. One-off how-tos and white papers are also highly welcome. The meeting point is the firebird-docs list at SF.net, coordinator Paul Vinkenoog.

MONEY! The project couldn’t achieve what it does without our voluntary funders. We hope that companies making or saving money by being able to download and deploy Firebird free of charge would want to “put something back” to contribute to Firebird’s continuity and survival. The Firebird Foundation manages funds derived from membership subscriptions, donations, sponsorships, and miscellaneous fund-raising activities. Visit the Web site and click the buttons!


Check out our previous projects of the month.