About Dabo

Current Status Dabo is currently in maintenance mode. Some initial steps at porting to Python 3 have been made, and things generally run OK, but not perfectly (yet!). If you'd like to help out, please let us know.

Desktop applications. That's what Dabo does. It's not YAWF (yet another web framework). There are plenty of excellent web frameworks out there, so if that's what you are looking for, Dabo isn't for you. But there are almost no desktop application frameworks out there, and if you want to create applications that run on Windows, OS X or Linux, Dabo is for you!

Dabo is a 3-tier, cross-platform application development framework, written in Python atop the wxPython GUI toolkit. And while Dabo is designed to create database-centric apps, that is not a requirement. Lots of people are using Dabo for the GUI tools to create apps that have no need to connect to a database at all.

Background Dabo's authors, Ed Leafe and Paul McNett, have strong backgrounds in database application development using the awesome and underrated Microsoft Visual FoxPro development environment. While Visual FoxPro shines at developing data-centric applications, it has one limitation that cannot be ignored: it only runs on Microsoft Windows, and Ed and Paul both have clients that want their applications to run on Linux and Macintosh. We are sure we are not alone in this regard: it is a multi-platform world with more diverse needs than one vendor can fulfill. Ed and Paul got to talking one day: Paul had been researching various multiplatform GUI toolkits for about 18 months, and Ed has lots of experience developing the Visual FoxPro Codebook framework. We decided to work together to make a framework for developing robust data-centric applications for multi-platform deployment. We've come up with a design that is simple, flexible, and robust, and we've begun developing our own client applications using the Dabo framework.

3-Tier Design We have taken what we've learned from 25 combined years of FoxPro database application development, and built an easy-to-use runtime framework that runs on all three major platforms. Dabo consists of 3 logical tiers plus an umbrella application object. The three tiers are:

Database MySQL (already supported)

PostgreSQL(already supported)

Firebird (already supported)

MS-SQL and MSDE (already supported)

SQLite (already supported)

Oracle

DB2

Sybase

Berkeley DB

Business Objects This tier is where all the business logic resides. You simply subclass dBizobj, set a few properties, and override a few methods. The dBizobj communicates with the database tier and the user interface tier, and enforces your business rules to your specifications. This tier is where all the business logic resides. You simply subclass dBizobj, set a few properties, and override a few methods. The dBizobj communicates with the database tier and the user interface tier, and enforces your business rules to your specifications.

User Interface You create your forms by laying out various controls or widgets, and setting properties to tell Dabo what bizobj and what field in the dataset the control represents. There is no business logic at this level, and only minimal code will be entered here: it is mostly laying out your UI design and setting properties to tell Dabo how to connect to the business rules.

Multi-Platform Dabo applications are known to run on all flavors of Windows, all recent flavors of Linux, and Macintosh OS X 10.2 or higher. Because Dabo is currently built on top of wxPython, which is built on top of wxWidgets, it probably runs elsewhere, too. It also suffers from the same display limitations on some platforms (most notably OS X), but these should improve as the underlying toolkits improve. You can develop Dabo applications on all three supported platforms, and you can run your Dabo applications on all three supported platforms. Flexibility is a really good thing.