Blob


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