Blob


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