Troggle runs much of the the cave survey data management, presents the data on the website and manages the Expo Handbook.
This part of the handbook is intended for people maintaining the troggle software. Day to day cave recording and surveying tasks are documented in the expo "survey handbook"
At one time Martin Green attempted to reimplement troggle as "stroggle" using flask instead of Django at git@gitorious.org:stroggle/stroggle.git (but gitorious has been deleted).
A copy of this project is archived by Wookey on wookware.org/software/cavearchive/stroggle/.
(but maybe is only simpler when starting a new project and doesn't scale to complexity the way Django does?)
There is also a copy of stroggle on the backed-up, read-only copy of gitorious on "gitorious valhalla"
stroggle code
stroggle-gitorious-wiki
but note that this domain has an expired certificate so https:// complains.
The schema for stroggle is a schema.json file. See the comparable troggle schema file which is indeed horrendously bigger.
Radost Waszkiewicz (CUCC member 2016-2019) proposed a plan for superceding troggle
Hey,
on the design sesh we've looked a bit on the way data is organised in the
loser repo and how to access it via troggle.
A proposal arised that all this database shannaingans is essentially unnecessary - we have about 200 caves, about 250 entrances, about 200 people and couple dozen expos. We don't need efficient lookups at all. We can write something which will be 'slow' and make only things we actually care about.
And for ensuring survey data does not get lost we need to coordinate people, trips, survex blocks, survex files, drawing files (several formats), QMs, wallet-progress pages, rigging guides, entrance photos, GPS tracks, kataster boundaries, scans of sketches, scans of underground notes, and dates for all those - Philip Sargent]
Similarly I see little gain from doing the html - python himera template pages. These contain mainly nested for loops which could just as well be written in e.g. python.
Troggle has 66 different url recognisers and there are 71 HTML django template files which the recognisers direct to. Not all page templates are currently used but still some kind of templating system would seem to be probably necessary for sanity and maintenance self-documentation.
The django system is sufficiently well-thought-of that it forms the basis for the framework-independent templating engine Jinja - and that site has a good discussion on whether templating is a good thing or not. There are about 20 different python template engines.]
Troggle today has 6,400 non-comment lines of python and 2,500 non-comment lines of django HTML template code. Plus there is the integration with the in-browser HTML editor in JavaScript. Half of the python is in the parsers which will not change whatever we do. Django itself is much, much bigger and includes all the security middleware necessary in the web today.
But maintaining the code with the regular Django updates is a heavy job.
"the horrifying url rewrites that correspond to no files" were bugs introduced by people who edited troggle without knowing what they were doing. We now have a test suite and these have all been fixed.
Troggle is now packaged such that it can run entirely on a standalone laptop and re-loads from scratch in 2 minutes, not 5 hours. So if one has a microSD card with 40GB of historical scanned images and photos, it will run on any Windows or Linux laptop. Even at top camp. ]
Eventually we will have to migrate from django of course, as it will eventually fail to keep up with the rest of the world. Right now we need to get ourselves onto python3 so that we can use an LTS release which has current security updates. This is more urgent for django than for Linux. In Ubuntu terms we are on 18.04 LTS (Debian 10) which has no free maintenance updates from 2023. We should plan to migrate troggle from django to another framework in about 2025. See stroggle below.]