tms-tools == this is a blog post about code

icebergs are kind of like giant underwater unicorns when you think about it


This is a blog post about code. Which means it’s really a blog post about data.

tms-tools is a suite of libraries and scripts to extract data from TMS as CSV files. Each database table is dumped as a separate CSV file. That’s it really.

It’s a blog post about data. Which means it’s really a blog post about control. It’s a blog post about preserving a measure of control over your own data.

At the end of it all TMS is a MS-SQL database and, in 2013, it still feels like an epic struggle just to get the raw data out of TMS so that single task is principally what these tools deal with.

tms-tools is the name we gave to the first set of scripts and libraries we wrote when we undertook to rebuild the collections website in the summer of 2012. The first step in that journey was creating a read-only clone of the collections database.

Quite a lot of this functionality can be accomplished from the TMS or MS-SQL applications themselves but that involves running a Windows machine and pressing a lot of buttons. This code is designed to be part of an otherwise automated system for working with your data.

TMS will remain the ultimate source of truth for our collection metadata but for us TMS didn’t turn out to be the best choice for developing and managing the public face of that data. The code in the tms-tools repository is meant to act as a bridge between those two different needs.

There is no attempt to interpret the data or the reconcile the twisty maze of relationships between the many tables in TMS. That is left as an exercise to the reader. This is not a one-button magic pony. This is code that works for us today. It has issues. If you choose to use it you will probably discover new issues. Yay, adventure!

We’re making the tms-tools code available today on Github, released under a BSD license.

We are making this code available because we know many others in our community face similar challenges. Maybe the work we’ve done so far can help others and going forward we can try to make things a little better, together.

One thought on “tms-tools == this is a blog post about code

  1. Steven Moore

    We work with a company that does something similar – extracts a good portion of the TMS database in order to load it into a platform that they are more familiar with. I don’t think this issue is about platforms; I think it is about data formats and services.

    A good approach, IMHO, is jsonp collection data via a TMS API. Then you can use Linux, I can use Windows….and the platform just doesn’t matter. GS should be doing the API, but considering that the UI is not even web-based, I don’t see that happening any time soon. I started a GitHub project for the API work I have done, but museums need a Linux solution too. Mine is in .NET.

    Just FYI….MSSQL 2012 does have a LIMIT/OFFSET function, but I agree that it is disasterous now. I also wouldn’t worry too much about making a Windows version of tms-tools because it is fairly easy to do a csv export of all tables with SQL Server PowerShell.

    Please don’t take my comments as negative. I think you are doing GREAT work!



Leave a Reply