summaryrefslogtreecommitdiff
path: root/README.md
blob: 40beb8b9060bf69bc48cda6f412537d118f41b7b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
gramscii -- interactive tool for ASCII box-and-arrows charts
============================================================

`gramscii` (pronounced "grrr'a(m)sky", more or less like "ASCII" but
with a leading "grrr") is a simple CLI tool to create and edit
box-and-arrows charts using ASCII characters. 

`gramscii` is interactive and its commands are quite intuitive to
anybody who does not need a mouse to be productive. You can move around
the screen with the usual `hjkl` keys, but you will travel at
ligthning speed by placing one of your other fingers on `SHIFT`. You
start drawing a box with `b`, and you place an arrow with `a`.
For more information, just read the manpage. 

`gramscii` aims at remaining small, avoiding bloat, and being
portable. It is written in ASCII C90, it requires only an ANSI
VT100-compatible terminal (real or virtual), and it does not use any
external library (nope, not even ncurses!). Hence, you should be able to
compile and run `gramscii` on any operating system with a C90 libc
and a VT100 terminal emulator. 

I have tested it on Linux and *BSD, compiled with `gcc`,
`clang`, and `tcc`, and linked it against `glibc`,
`musl`, and whatever libc was available on FreeBSD, OpenBSD, and
NetBSD. It just worked.

INSTALL
=======

Edit `config.h` and/or `config.mk` to suit your preferences.
Then just:
```
make
```

to build `gramsci` and:
```
./gramscii
```
to execute it. `man` is your friend.


WHY?
====

As most of the software out there, `gramscii` comes out of
frustration and pain. 

I have been producing box-and-arrow diagrams in ASCII for quite a while.
I know that there exist ad-hoc plugins for `vim(1)` and
`emacs(1)`, but I was not happy with any of them, to say the least.
There are also a few point-and-click GUI tools to do the same, but most
of them depend on a variety of libraries/modules. And again, why would
you need a fancy GUI to create ASCII charts? 

There has been a recent proliferation of browser-based point-and-click
tools to draw ASCII charts. Like, are you serious? Why on Earth should
people accept to load hundred thousands LOCs of obscure javascript code
on a hyper-bloated web browser and use a fancy point-and-click interface
to produce......guess what......ASCII charts that are best-viewed viewed
on a VT100 terminal?

We must say no to madness. We must repudiate bloat. We must reject
useless featurism. Software must be reasonable, simple, small, and
functional.

But wait... 
============

You might have noticed that the name `gramscii` is reminiscent of
Antonio Gramsci, the phylosopher and politician who was among the
founders of the Italian Communist Party in 1921. Now, Gramscii (the
philosopher) strongly believed that every single human is an
intellectual, a philosopher, and an artist, and maintained that societal
changes are only possible when a class exerts intellectual and moral
leadership over its contemporaries. So just get rid of all your shiny
iPointless things and come back to reality.