OOFILE | Downloads | Purchasing | Press | Services | Company Information | Soapbox | References | F.A.Q. | HOME


OOFILE vs Suneido

Disclaimer: the following is written after a fairly brief skim of Suneido documentation and I welcome any corrections.

Suneido is an interesting-sounding environment that a recent OOFILE purchaser mentioned.

It's an integrated environment including its own OO language, report and form frameworks and a relational database engine capable of running standalone or client-server.

There's a discussion of the language architectural merits at http://www.advogato.org/article/209.html

The following are very unstructured points as they occurred whilst browsing their doocumentation..





OOFILE is mainly Mozilla with some commercial components.

Suneido is all GPL. That implies if you somehow bundle the Suneido engine you are required to release the rest of your source under GPL but the licensing discussion suggests if you just distributed the Suneido client and server executables with your app separately then your source can be kept proprietary. It doesn't sound any more onerous to me than using something like 4th Dimension.

Size of Core Source

OOFILE is somewhere around 110,000 loc including the GUI integration framework and report-writer. That only includes our dBase-compatible and RAM database backends and not the c-tree Plus source code for the ISAM database backend used in OOFILE Professional.

The client and server are stated as about 40,000 loc each.

Suneido is either very leanly designed or the frameworks are lacking in features - much more detailed investigation would be required.

Non-GUI layout

The report-writer banded layout model is declarative with the engine working out where to position items (lessons from PFS File and FileMaker Pro) but allowing flavouring. If left alone, it works out a reasonable layout but you can strictly control positions.

The Report Writer Pro version under development will also enable graphical report editing, generating an XML specification or c++ source code.

GUI integration is with PowerPlant, MFC or other frameworks which have their own layout specifiers. OOFILE doesn't have any concerns over layout of forms. There's a very good reason for this - the concept of room to fiddle. OOFILE GUI development also often takes place with code generation from the AppMaker product, which takes care of the layout and generates the (single) lines of code required to hook OOFILE fields and views to controls.

The form and report-writer are currently non-GUI using a box model in code for layout. I obviously think this is a worthwhile starting point as a philosophy for reports but think proper user interface design requires more control and specification for forms.

Forms entry interactions model

OOFILE tries to do lots of things intelligently, so application programmers don't have write any support for basic interactions. eg: the default is a dirtying model where changing fields then attempting to move to the next record automatically provides a Do you want to Save Y/N/Cancel alert with suitable refreshing of fields.

yet to investigate

Database Cascading updates



Avoiding SQL for search specification

OOFILE's database API provides query expressions intuitive to C programmers (if you can write an if() you can write a search()).

Proprietary query algebra supposedly based on Date's principles, yet to investigate.


OOFILE was first developed on MacOS. The core database and report-writer are platform-agnostic with print and preview on Mac and Windows and RTF, HTML, XML and plain text rendering on any platform.

The forms integration for the most common Mac and Windows development environments includes abstractions making it very easy to adapt to new frameworks.

International deployments cover about 15 different c++ compilers on Mac Classic and OS/X, Windows 3.1 (with win32s) through to XP and most Unix and Linux versions out there.

Windows with some Linux.

Core Language

Very conservative c++. Builds with any compiler in the last 10 years. The simple and robust c++ idioms used have been very successfully taught to beginning c++ programmers. A distinct aim of the language is to aim at the so-called average programmer because we all have average moments.

Being able to cross-check your work with a range of compilers on different platforms has proven a distinct advantage over the decade of OOFILE's existence, especially when diagnosing compiler errors.

Proprietary - sounds well designed but may be a cause of concern for some people. Means you are stuck with their programming and program analysis tools.

Dynamic Typing in Databases

OOFILE uses strict typing and creates database schema automatically from class declarations.

Suneido supposedly has dynamic typing as mentioned as a cause for concern on the Database Debunking site


Whilst c++ isn't an inherently reflective language, all the OOFILE frameworks provide the ability to query and iterate the database and other declarations.

It sounds like Suneido's language is reflective.

Transactions and Recovery

OOFILE Professional uses Faircom's c-tree Plus to provide transactions and recovery in single-user or client-server models. You can configure c-tree Plus to use a range of recovery models suitable for large production databases.

The OOFILE database API makes no assumptions about transaction models - that's up to the specific backend configuration being used in your application.

Suneido's database provides recovery by rebuilding all indexes after a crash. This doesn't scale.

Unit Testing

OOFILE has a strong regression test suite that is being migrated to cppunit, for the core database API. There's not currently a unit test suite for the GUI or presentation frameworks (being difficult things to automate testing). Unit testing as a mainstream concept wasn't around when OOFILE was invented (using regression testing was pretty advanced but driven by favourable experiences with DEC's software installation processes, especially Datatrieve).

Note that the Professional version is also sitting on top of Faircom's testing and 20+ year history of deploying c-tree Plus.

Suneido seems to have a unit test suite built in at least for the database side. Given that they are supplying the entire client-server database, I'd expect that as a bare minimum. However, I'd give them points for being in front here.


(c) Copyright A.D. Software 2004 (All Rights Reserved).
Last Updated: 26th April 2004