Blog

All Blog Posts  |  Next Post  |  Previous Post

TMS Data Modeler source code now available!

Today

After more than two decades of life as a closed-source product, the full source code of TMS Data Modeler is now publicly available on GitHub:

github.com/tmssoftware/datamodeler

This post is a quick tour of what the release means, what's in the repo, and why opening it up took more than just flipping a switch.


A quick refresher on TMS Data Modeler

TMS Data Modeler is a visual database design tool for Windows, written in Delphi.

TMS Data Modeler diagram editor

In a nutshell, it lets you:

  • Design databases visually with entity-relationship diagrams
  • Generate DDL scripts to create databases
  • Generate ALTER scripts to update existing databases between versions
  • Reverse-engineer existing databases
  • Compare versions and projects
  • Archive history and validate models
  • Convert models between different database systems

Supported databases: SQL Server, Firebird, Oracle, PostgreSQL, MySQL, and SQLite.

And for TMS Aurelius users — the ORM framework for Delphi — Data Modeler is the most natural way to work in a database-first style: model your schema visually, then generate the Aurelius entity-mapped classes directly from the model.


A bit of history

Data Modeler has been around far longer than its current name suggests:

  • Late 1990s / early 2000s — originally developed by a Brazilian company as an internal tool. It wasn't even primarily a modeling tool back then: it was a CRUD form generator, and the database modeling part existed only to feed metadata into the form generation.
  • Mid 2000s — acquired by Devgems and rebranded as DevGems Data Modeler.
  • Later — acquired by TMS Software and re-released as TMS Data Modeler.

More than twenty years of evolution land in the repository you can now git clone.


Why we're releasing the source

Several motivations led to opening up the source:

  • Transparency — customers can read, audit, and trust the code they rely on.
  • Flexibility — teams can adapt the tool to specific needs that wouldn't make sense as features in the mainstream product.
  • Community contributions — pull requests are welcome, and improvements from the community flow back to all users.
  • Ecosystem alignment — it brings Data Modeler in line with the rest of the TMS BIZ products, where source access is the norm.
  • Learning — both as a way to understand Data Modeler internals, and as a real-world example of a non-trivial Delphi application built on top of TMS components.

That last point deserves its own section.


A real-world example of TMS components in action

If you've ever wanted to see how TMS components fit together in a serious, production-grade Delphi application, the repository is a good place to read code. Among other things, Data Modeler uses:

  • TMS Diagram Studio — powers the entity-relationship diagram editor: the canvas, shapes, connectors, and the whole visual editing experience.
  • TMS Scripter — the entire scripting extensibility layer. Users can write scripts that automate tasks against the model, and that fully customize the class-generation output.
  • TMS Aurelius — used specifically in the export / code-generation task, to reuse types declared in Aurelius units when emitting entity classes. (Data Modeler does not use Aurelius as its own persistence layer.)
  • TMS VCL UI Pack — the entire desktop UI: ribbon, menus, edits, grid, and the rest of the controls that make up the application's look and feel.

Plus a non-TMS dependency: JAM Software Virtual TreeView.

For a Delphi developer evaluating these components, reading how they're wired up in a real product is often more useful than any tutorial.


What it took to get here

Releasing the source of a closed-source product is not just flipping a visibility flag. A closed-source codebase grows under the assumption that nobody else will ever read it — and that assumption shows up in lots of small places.

To get Data Modeler ready for the public, we did a substantial pass over the code:

  • Reviewed and sanitized the entire codebase
  • Reorganized units into category folders — Model, Connectors, Dialogs, and others. Before the cleanup, every unit lived flat in a single folder
  • Broke remaining circular unit references so the structure makes sense as you navigate it
  • Translated remaining Portuguese comments and identifiers (leftovers from the tool's origins)
  • Removed several third-party dependencies, both to reduce licensing surface and to make ongoing upgrades to newer Delphi versions easier
  • Removed the internal license-control machinery — no longer meaningful with the source in the open
  • Rebuilt the full CI/CD deployment pipeline

One deliberate non-decision: we did not rename units to follow a stricter naming convention. The folder structure already conveys scope, and renaming hundreds of units would be a lot of churn for very little gain. Over time, individual units may get renamed as we revisit them, but no top-down rename was warranted.

Given all the effort above, this new milestone of source code availability, the removal/refactor of several parts of application (no more licensing tool, splash screen removed, automatic updates disabled, among others), we updated the version number and the current available source code, binary and installers are now released as TMS Data Modeler 4.0


Built with TMS Smart Setup

The repository is fully prepared for TMS Smart Setup, which gives you two convenient flows.

Build from the command line — from the repository root, run:

tms restore tms.snapshot.yaml -skip-register

Smart Setup resolves all third-party dependencies and builds the dm.exe binary.

Set up for development in the IDE — running tms restore from an existing valid Smart Setup folder installs the required components into the IDE, so you can open dm/dm.dproj in Delphi 13 to build, debug, and explore the code interactively.

For end users who simply want to install the tool, the new CI/CD pipeline publishes installer binaries automatically to the GitHub Releases page — no source involved.


A note on licensing

TMS Data Modeler is source-available, not open source. In short:

  • Non-commercial use (learning, evaluation, education, open-source projects) does not require a paid license
  • Commercial use still requires a paid license, available from the product page
  • Contributions are accepted under the terms in the repository's LICENSE.txt

Support continues through the TMS Support Center as before.


Where to go from here

Clone it, build it, explore the code, file a PR — or just keep using the binary releases. The choice is yours, and that's the point.



Wagner Landgraf




This blog post has not received any comments yet. Add a comment.



All Blog Posts  |  Next Post  |  Previous Post