Blame


1 057c47a3 2021-07-18 op # Telescope
2 057c47a3 2021-07-18 op
3 714541bb 2021-08-01 op Telescope is a Emacs/w3m-inspired browser for the "small internet"
4 714541bb 2021-08-01 op that supports Gemini, Gopher and Finger.
5 4def0885 2021-03-12 op
6 4def0885 2021-03-12 op There are still various things missing or, if you prefer, various
7 4def0885 2021-03-12 op things that you can help develop :)
8 4def0885 2021-03-12 op
9 4def0885 2021-03-12 op - subscriptions
10 3be78a24 2021-03-17 op - tofu oob verification
11 4def0885 2021-03-12 op - client certificates
12 0f7e6318 2021-06-20 op - add other GUIs: at the moment it uses only ncurses, but telescope
13 0f7e6318 2021-06-20 op shouldn't be restricted to TTYs only!
14 4def0885 2021-03-12 op
15 cd2f2c82 2021-07-24 op [![asciicast](https://asciinema.org/a/426862.svg)](https://asciinema.org/a/426862)
16 4def0885 2021-03-12 op
17 2058a15d 2021-03-13 op
18 cd302034 2021-03-15 op ## Why yet another browser?
19 cd302034 2021-03-15 op
20 cd302034 2021-03-15 op One of the great virtues of Gemini is its simplicity. It means that
21 cd302034 2021-03-15 op writing browsers or server is easy and thus a plethora of those
22 cd302034 2021-03-15 op exists. I myself routinely switch between a couple of them, depending
23 cd302034 2021-03-15 op on my mood.
24 cd302034 2021-03-15 op
25 cd302034 2021-03-15 op More browsers brings more stability as it became more difficult to
26 cd302034 2021-03-15 op change the protocol, too.
27 cd302034 2021-03-15 op
28 cd302034 2021-03-15 op However, Telescope was ultimately written for fun, on a whim, just to
29 cd302034 2021-03-15 op play with ncurses, libtls, libevent and the macros from `sys/queue.h`,
30 cd302034 2021-03-15 op but I'd like to finish it into a complete Gemini browser.
31 cd302034 2021-03-15 op
32 cd302034 2021-03-15 op
33 cd302034 2021-03-15 op ## Goals
34 cd302034 2021-03-15 op
35 cd302034 2021-03-15 op - Fun: hacking on Telescope should be fun.
36 cd302034 2021-03-15 op - Clean: write readable and clean code mostly following the style(9)
37 cd302034 2021-03-15 op guideline. Don't become a kitchen sink.
38 cd302034 2021-03-15 op - Secure: write secure code with privilege separation to mitigate the
39 cd302034 2021-03-15 op security risks of possible bugs.
40 cd302034 2021-03-15 op - Fast: it features a modern, fast, event-based asynchronous I/O
41 018a3114 2021-07-03 op model.
42 656b4b64 2021-03-16 op - Cooperation: re-use existing conventions to allow inter-operations
43 656b4b64 2021-03-16 op and easy migrations from/to other clients.
44 cd302034 2021-03-15 op
45 cd302034 2021-03-15 op
46 3be78a24 2021-03-17 op ## TOFU
47 3be78a24 2021-03-17 op
48 3be78a24 2021-03-17 op Telescope aims to use the "Trust, but Verify (where appropriate)"
49 3be78a24 2021-03-17 op approach outlined here:
50 3be78a24 2021-03-17 op [gemini://thfr.info/gemini/modified-trust-verify.gmi](gemini://thfr.info/gemini/modified-trust-verify.gmi).
51 3be78a24 2021-03-17 op
52 3be78a24 2021-03-17 op The idea is to define three level of verification for a certificate:
53 3be78a24 2021-03-17 op
54 3be78a24 2021-03-17 op - **untrusted**: the server fingerprint does NOT match the stored
55 3be78a24 2021-03-17 op value
56 3be78a24 2021-03-17 op - **trusted**: the server fingerprint matches the stored one
57 3be78a24 2021-03-17 op - **verified**: the fingerprint matches and has been verified
58 3be78a24 2021-03-17 op out-of-band by the client.
59 3be78a24 2021-03-17 op
60 3be78a24 2021-03-17 op Most of the time, the `trusted` level is enough, but where is
61 3be78a24 2021-03-17 op appropriate users should be able to verify out-of-band the
62 3be78a24 2021-03-17 op certificate.
63 3be78a24 2021-03-17 op
64 018a3114 2021-07-03 op At the moment there is no UI for oob-verification though.
65 3be78a24 2021-03-17 op
66 3be78a24 2021-03-17 op
67 4def0885 2021-03-12 op ## Building
68 4def0885 2021-03-12 op
69 4def0885 2021-03-12 op Telescope depends on ncursesw, libtls (from either LibreSSL or
70 741428e3 2021-06-15 op libretls), libevent (either v1 or v2). When building from a git
71 741428e3 2021-06-15 op checkout, yacc (or bison) is also needed.
72 4def0885 2021-03-12 op
73 97e30cc6 2021-03-14 op To build from a release tarball just execute:
74 4def0885 2021-03-12 op
75 4def0885 2021-03-12 op ./configure
76 4def0885 2021-03-12 op make
77 4def0885 2021-03-12 op sudo make install
78 4def0885 2021-03-12 op
79 4def0885 2021-03-12 op If you want to build from the git checkout, something that's
80 cd302034 2021-03-15 op discouraged for users that don't intend to hack on telescope
81 4def0885 2021-03-12 op
82 4def0885 2021-03-12 op ./autogen.sh
83 4def0885 2021-03-12 op ./configure
84 4def0885 2021-03-12 op make
85 4def0885 2021-03-12 op sudo make install # eventually
86 4def0885 2021-03-12 op
87 4def0885 2021-03-12 op Please keep in mind that the main branch, from time to time, may be
88 4def0885 2021-03-12 op accidentally broken on some platforms. Telescope is developed
89 4def0885 2021-03-12 op primarily on OpenBSD/amd64 and commits on the main branch don't get
90 4def0885 2021-03-12 op always tested in other OSes. Before tagging a release however, a
91 12a43913 2021-06-26 op comprehensive testing on various platforms is done to ensure everything
92 4def0885 2021-03-12 op is working as intended.
93 4def0885 2021-03-12 op
94 4def0885 2021-03-12 op
95 c6cad9e5 2021-07-17 op ## Contrib
96 c6cad9e5 2021-07-17 op
97 c6cad9e5 2021-07-17 op Any form of contribution is appreciated, not only patches or bug
98 1c4989cd 2021-07-17 op reports. The contrib directory is for external things such as sample
99 1c4989cd 2021-07-17 op configuration files, themes, scripts and things like that.
100 c6cad9e5 2021-07-17 op
101 c6cad9e5 2021-07-17 op
102 afa57f78 2021-07-15 op ## User files
103 afa57f78 2021-07-15 op
104 afa57f78 2021-07-15 op Telescope stores user files in `~/.telescope`. The usage and contents
105 afa57f78 2021-07-15 op of these files are described in [the man page](telescope.1), under
106 afa57f78 2021-07-15 op "FILES". There's no support yet for XDG-style directories.
107 afa57f78 2021-07-15 op
108 afa57f78 2021-07-15 op Only one instance of Telescope can be running at time per user.
109 afa57f78 2021-07-15 op
110 afa57f78 2021-07-15 op
111 4def0885 2021-03-12 op ## License
112 4def0885 2021-03-12 op
113 4def0885 2021-03-12 op Telescope is distributed under a BSD-style licence. The main code is
114 3d7d29b3 2021-08-13 op under the ISC but for files under `compat/` it varies.
115 bf6551ee 2021-07-18 op
116 bf6551ee 2021-07-18 op `data/emoji.txt` is copyright © 1991-2021 Unicode, Inc. and
117 bf6551ee 2021-07-18 op distributed under the [UNICODE, Inc license agreement][unicode-license].
118 bf6551ee 2021-07-18 op
119 bf6551ee 2021-07-18 op
120 bf6551ee 2021-07-18 op [unicode-license]: https://www.unicode.org/license.html