credits - blossommerz/locus-hub GitHub Wiki
Home > Credits
< Previous: Glossary
Reference
Credits
The open-source projects Locus Studio is built on, and the people behind them.
Locus Studio stands on work other people gave away. Some of it does the hardest arithmetic in the app; some of it is the reason the app has windows and menus at all. This page names each piece, says plainly what Locus uses it for, and credits its authors.
Geometry
- linesweeper - the robust plane sweep behind Union, Intersect, Difference and Split, working directly on curves so arcs stay arcs. By Joe Neeman. MIT or Apache-2.0.
- cavalier_contours - the arc-aware Offset that stays clean on thin shapes, and the noding step behind Auto Region. By Jedidiah Buck McCready. MIT or Apache-2.0.
- kurbo - the curve mathematics both of the above stand on. By the Linebender project. Apache-2.0 or MIT.
- polygon-clipping - fills the inside of regions on screen, and answers "is the pointer inside this shape". By Mike Fogel. MIT. It brings with it robust-predicates by Vladimir Agafonkin (Unlicense) and splaytree by Alexander Milevski (MIT).
Node editor
- Graphviz, through its WebAssembly build @hpcc-js/wasm-graphviz - the layout engine behind Tidy, which untangles a node graph in one click. Graphviz is by AT&T Labs Research and its contributors, under the Eclipse Public License 1.0; the WebAssembly build is by HPCC Systems, Apache-2.0.
Interface and languages
- i18next and i18next-icu - how Locus speaks English, Spanish, German, French, Italian, Turkish and Portuguese from one set of strings, with the right plural in each. By the i18next contributors. MIT.
- marked - renders the Help pages you are reading from their source text. By the Marked contributors. MIT.
Desktop app
- Tauri - the shell that makes Locus a native macOS and Windows application: windows, menus, file dialogs, remembering where you left a window, and logging. Including its dialog, opener, window-state and log plugins. By the Tauri Program within the Commons Conservancy. Apache-2.0 or MIT.
- serde and serde_json - how designs are written to and read from disk. By David Tolnay and contributors. MIT or Apache-2.0.
Licensing
- ed25519-dalek - checks the signature on a license key in the desktop app. By the dalek cryptography project. BSD-3-Clause.
- TweetNaCl.js - the same check in the browser build. By Dmitry Chestnykh and Devi Mandiri. Unlicense, which is to say the public domain.
- RustCrypto sha2 - hashes a machine identity, so a license can bind to a computer without anything about that computer being sent anywhere. By the RustCrypto developers. MIT or Apache-2.0.
- machine-uid - reads that machine identity. By Hanaasagi. MIT.
Ideas, not code
Two debts on this page are not libraries. Nothing of either one is in the code. They are ways of working, and between them they set the direction of the whole program and the shape of its node editor.
-
C.a.R., or Zirkel und Lineal - the interactive geometry program René Grothmann has written and maintained since 1996 at the Catholic University of Eichstätt-Ingolstadt. Java, GPL.
This is where Locus begins. C.a.R.'s own documentation states the whole model in one line: with each change in basic points, the construction is updated immediately. A figure is not a drawing of a result, it is the recipe that produced it, and dragging the points it was built from carries everything built on them along. Locus is that idea taken into pattern work. A great deal of how it behaves comes from decades of using C.a.R. rather than from anything decided at the start of this project.
None of Grothmann's code is in Locus. The conventions are his, and so is the direction that led here.
-
Orbi - a Grasshopper plug-in that generates patterns parametrically from symmetry groups, built by the Grasshopper Collective in the Faculty of Architecture at Nuremberg Tech. Credited in its manual to Thomas Alexander, Fabian Grohe, Leonhard Taglieber and Gunnar Tausch.
Open one of Orbi's clusters and the long connections do not cross the canvas as bare wires. They travel as named buses: a value leaves its source, hops along a chain of relays on one reserved lane, and taps off to each consumer as it passes, every relay named for the signal it carries. You follow a value by reading the lane rather than tracing a line through everything it crosses.
Locus takes that idea. A Relay carries a value through unchanged and names the connection, and a run of them is how a long haul stays readable instead of one wire crossing everything in its way.
None of Orbi's code is in Locus. The named bus is their idea, and it is the reason a big cluster in Locus is readable at all.
Built with
Locus Studio is written in TypeScript and Rust, built with Vite and wasm-bindgen, and compiled with the Rust and TypeScript toolchains.
Thank you
To everyone who wrote, maintains and gives away the projects above: thank you. Locus would be a much smaller program without you, and a much slower one to build.
The complete inventory, every component and the full text of every license, ships with the application as THIRD_PARTY_NOTICES.md.
< Previous: Glossary