<p>In the firm belief that agreement on the problem must precede implementation of a solution, the Troggle git repository has been mirrored by Charlie Crossley. You may find it on their server at <ahref="https://git.xle.sh/expo/troggle">git.xle.sh/expo/troggle</a>. This is an instance of Gitea, and includes an <ahref="https://git.xle.sh/expo/troggle/issues">issue tracker</a> (a la GitHub but minus the Microsoft). Please browse issues and feel free to submit new ones for discussion as well as to add comments to ones already opened.</p>
<p>You want to dive into the real stuff and add missing fields to the core data model:
<ul>
<li><ahref="datamodel.html">Troggle - Data Model</a> - syntax-coloured list of classes, instance variables and foreign keys<br>
</ul>
<p>We admire your drive and enthusiasm. We were like you once.
<p>First, you need to get the "expoadmin" password from a nerd. Then you will be able to dive into the online
admin system where you can explore and poke the live system and
database using the <ahref="/admin/">system admin control panel</a>.
This has a data structure browser for the classes and fields of the system as
live and in-use: all the foreign keys and relationship cardinalities.
(This is not the same thing as the <ahref="/troggle">troggle control panel</a> which is for deeper data management: bulk uploading and export of data files.)
<p>And, you may be surprised to discover, we have given a lot of thought into how to make it easier for you
to <ahref="../computing/contribute.html#programming">get involved in the programming</a> while not screwing up this multi-decade software project.
<p>Everyone at some point feels like giving up and wonders if we should just rewrite it all from scratch using 'modern' techniques.
Several of us have given this a lot of thought, see <ahref="trogsimpler.html">'A kinder, simpler troggle'</a>,
the <ahref="trog2030.html">2030 plan</a>, <ahref="trogspeculate.html">architecture constraints</a> and most importantly, <ahref="trogdjango.html#4layer">the 4-layer stack</a><em>any</em> future technology with some public URLs would need to emulate.
<p>We have also been learning from the global software community when you really do need to 'Kill it with Fire': what are
the characteristics of code and of organisations that mean that it is a good idea to give up, and if so how to
<li>Read documentation to get the <ahref="trogarch.html">concepts and structures</a> into your head, so that you can see how it all fits together and works.
<li>Explore the public pages of the <ahref="/repositories">4 git repositories</a> including <ahref="/repositories/troggle/.git/tree/">all the source code</a>
<li>Use the online forms and reports together with 'survex' and 'therion' installed on your own laptop.
<li>Get the 'expoadmin' password and explore the live system online: watch the data change in real time
<li>Configure <ahref="../computing/keyexchange.html">an ssh key</a> and <ahref="../computing/fzconfig.html">Filezilla</a> or scp/sFTP.
<li>Configure a <ahref="troglaptop.html">troggle development machine</a> - a laptop where you have cloned the repos and installed django. Installing is the same as updating Django. See <ahref="trogdjangup.html">Troggle: updating Django</a>.
<p>This <em>happens all the time</em>. If ever troggle is crashing on you very mysteriously, it is almost certainly due to a typo in <var>troggle/urls.py</var> . Odd but true.
<p>We aspire to a coding standard, and the <ahref="https://github.com/google/styleguide/blob/gh-pages/pyguide.md">Google python coding standard</a> is a pretty good one. We don't use their TODO system though (para <ahref="https://github.com/google/styleguide/blob/gh-pages/pyguide.md#312-todo-comments">3.12</a>) and the function (re)naming in troggle is still work in progress (para. 3.16.4).
<p>We don't have any type hints in troggle. It is not a big enough project to be worth it - probably.
<p>We have run much of the code through <ahref="https://pypi.org/project/black/">black</a> in 2022 so that is our default formatting standard.
<p>We have also used ruff, isort and chill to trim and deduplicate the various pip installation packages and to fix the order of python packages in import statements.
<p>A history of the expo website and software was published in Cambridge Underground 1996. A copy of this article <ahref="../c21bs.html">Taking Expo Bullshit into the 21st Century</a> is archived here.