pinchord-18 Build Process
Pinchord · pinchord.git · Tickets · Changelog
A Pinchord Ticket (Triaged):
Ticket · History
Git branch: build-process
Att: attachment: build process
While this page is a lot about Javelin, which has been dropped, it is not strictly, so it should be kept and reworded.
Symptoms
Pinchord
Pinchord has a long and arduous build process that is not documented anywhere. This causes a lot of friction in shipping out updates, and often leads to things being forgotten and being patched on later.
Derivations
As talked about in pinchord-14 Chords Format, pinchord derivations are currently fragmented across Plover and Javelin. Pinchord sits on these 2 steno engines, but people almost exclusively use one or the other. It is unreasonable to expect a derivation author to go through the build process that I do for the engine that they don't use.
This fragmentation of derivations harms adoption and leaves derivation authors with a poor choice of either wasting their own time, or making their system inaccessible to half of its potential users.
Problem
- I do not know
- Building pinchord takes too long?
- Pinchord derivations are fragmented?
- I think problem is that Pinchord derivations are fragmented, and this build process is part of the reason why.
Potential Solutions
Have a unified build process that takes a set of input files, such as the existing chords.edn, and generates the Plover plugin and Javelin files - and later, firmware images. See attachment: chords format implementation for more about what this might look like.
Implementation
I think the best way to implement this would be to rewrite the existing generate-dictionary.clj, test for parity, and then start generating more files from chords.edn.
generate-dictionary.clj currently bundles a lot of assumptions about Pinchord, so it will need to be updated.
- Have
src/config/?, andjavelin/for javelin outputs
Sub-things:
- Move
generate-dictionary.cljinto a Clojure program, keeping the coupling of Pinchord-specific things - Rename
chords.edntosystem.ednas the formats are not compatible . - Move Pinchord-specific code in the program to
chords.edn- Maybe move to Clojure JVM for keys!
- Rename
fill-gaps-in-bankstowith-gaps-filled - I believe with
:avoidMaskbeing set, sorting the entries by length is no longer needed
- Add specs for
chords.edn - Generate Javelin files via the program
- Generate the Plover plugin via the program
- Make keys use their individual thing