]> gitweb.michael.orlitzky.com - charm-bypass.git/blob - README
COPYING: add to state the "or later" bit
[charm-bypass.git] / README
1 == Introduction
2
3 CharmBypass, or charm-bypass, is a free software project that lets you
4 ride mass transit in Maryland for free. (Disclaimer: doing so is not at
5 all legal.) It is what powers the site https://charm-bypass.com/
6
7 That website consists of a single file, index.html, that it is our
8 goal to build. This document discusses only the technical details
9 involved. An introduction and security analysis (what is this, how
10 does it work) can be found at,
11
12 1. https://michael.orlitzky.com/articles/charmbypass_pt._1%3A_introduction.xhtml
13 2. https://michael.orlitzky.com/articles/charmbypass_pt._2%3A_analysis.xhtml
14
15
16 == Design goals
17
18 The main design goal is that the entire application should be
19 self-contained: it should be downloadable and usable without network
20 access. The "usable" part is lacking somewhat at the moment due to the
21 limitations present in mobile operating systems, but containment has
22 been achieved.
23
24 It is also mobile-only. By which I mean that if you view the site on
25 a large (desktop-sized) screen, it will look crazy. That's OK.
26
27
28 == Build process
29
30 The project uses a standard GNU autotools build system that should be
31 familiar to UNIX programmers and system administrators. To build it,
32 first install the build requirements listed below. Then run,
33
34 $ autoreconf -fi
35 $ ./configure
36 $ make
37
38 The first command (re)generates the autotools build system. The second
39 and third invoke it. If you're feeling lucky, you can also run
40
41 $ make check
42
43 to run a (very) minimal set of tests on the index.html you just built.
44
45 === Build requirements
46
47 0. GNU autotools
48 1. The "base64" utility from GNU coreutils.
49 2. The "scour" SVG optimizer.
50 3. The "fontforge" program, built with woff2 support.
51 4. The "xsltproc" program from libxslt.
52
53 To run the test suite, you'll also need the "tidy-html5" program.
54
55
56 == Miscellany
57
58 === SVG Tricks
59
60 1. To inline a "transform" from a group (like the bus) that was
61 resized or translated, simply ungroup and regroup the whole thing.
62 This is necessary for groups that are animated using the
63 "transform" property, because otherwise, applying a new transform
64 would clobber the existing one.