More new beginnings and a bit of history
All things considered, this will be the third reimplementation in as many decades. The earliest predecessor of what has become 3dt was written in GAP – a computer algebra system specialising in group theory and abstract algebra – in the second half of the 1990s and produced graphical output by piping geometry data into Geomview, a 3D viewing program popular at the time. This worked reasonably well, but it was somewhat clunky due to the need for two separate programs as well as the limitations of the GAP language, which, although excellent in many respects, had never been meant to be a general purpose programming language.
Soon after discovering Python, I started to reimplement my methods for dealing with Delaney-Dress symbols, along with the group theoretic algorithms from GAP I needed, around the year 2000. Python finally allowed me to incorporate a graphical user interface and access OpenGL graphics all within the same program. The result, which I decided to name 3dt in reference to Daniel Huson’s program 2dTiler, was soon accompanied by the original Systre. These two programs had a handful of users, but as it turned out, getting particularly the Python version 3dt to work properly on a new computer was not a trivial task. This is why I eventually decided to do another reimplementation.
Between 2002 and 2004, while working with Daniel Huson in his Bioinformatics algorithm group in Tübingen, I participated in the development of a relatively large Java library and eventually realised that using Java as the new implementation language would allow me to produce programs that could more easily be deployed to users and work equally well on Linux, OS X and Windows. Under the new collective name Gavrog, Version 1.0.0 of Systre’s Java incarnation was finally released in August 2006, whereas the first public release of the new 3dt, Version 0.3.0, did not happen until December 2007.
I think it is safe to say that, at least in the case of the Gavrog software, the Java slogan “write once, run everywhere” held true for many years. With very few exceptions, the programs ran very smoothly across operating systems and Java versions. Due to the complexity of the software, however, my relative inexperience in writing and maintaining such a large system, and the limitation of Java as a language itself, it became increasingly difficult to make modifications, implement new features, and keep up with changes in the platform such as the transition from 32- to 64-bit systems. While none of these issues would have justified a complete reimplementation, it became clear to me that one way or another, a significant overhaul was in order.
There is no specific timeline or roadmap yet for the new project. The first big milestone will of course be to reproduce the existing functionality in Systre and 3dt, while fixing a number of smaller and larger architectural problems that have made certain kinds of additional functionality difficult to implement. Going forward, I would like to integrate the Gavrog programs closer with existing online databases such as RCSR and Epinet, and give them their own database of 3D tilings and other structures not already covered there. A further goal is to provide better error messages and extend 3dt to display a wide range of structure types such as point clouds, nets and partial nets, and partial tilings.
A first, very simple demo can be found at http://gavrog.org/webGavrog. Note that this starts with a Delaney-Dress symbol and performs most of the operations 3dt would on the fly directly in the browser. The displayed scene can be rotated, panned and zoomed with the mouse.
I will make further posts as the webGavrog project develops.