Blob


1 ```
2 _______ __
3 |_ _|.-----.| |.-----.-----.----.-----.-----.-----.
4 | | | -__|| || -__|__ --| __| _ | _ | -__|
5 |___| |_____||__||_____|_____|____|_____| __|_____|
6 |__|
7 ```
9 Telescope is a w3m-like browser for Gemini.
11 At the moment, it's something **a bit more than a working demo**.
12 However, it has already some interesting features, like streaming
13 pages, tabs, privsep, input from the minibuffer etc...
15 There are still various things missing or, if you prefer, various
16 things that you can help develop :)
18 - UTF8 handling: it needs to handle non-ASCII characters in pages and
19 in the minibuffer input
20 - subscriptions
21 - tofu oob verification
22 - client certificates
23 - add other GUIs: atm it uses only ncurses, but telescope shouldn't
24 be restricted to TTYs only!
25 - configuration file: even proposals are accepted. It needs a way to
26 define keybindings, colors etc in a way that will possibly work on
27 more than one graphic libraries.
29 ![Telescope new tab](images/about-new.png)
32 ## Why yet another browser?
34 One of the great virtues of Gemini is its simplicity. It means that
35 writing browsers or server is easy and thus a plethora of those
36 exists. I myself routinely switch between a couple of them, depending
37 on my mood.
39 More browsers brings more stability as it became more difficult to
40 change the protocol, too.
42 However, Telescope was ultimately written for fun, on a whim, just to
43 play with ncurses, libtls, libevent and the macros from `sys/queue.h`,
44 but I'd like to finish it into a complete Gemini browser.
47 ## Goals
49 - Fun: hacking on Telescope should be fun.
50 - Clean: write readable and clean code mostly following the style(9)
51 guideline. Don't become a kitchen sink.
52 - Secure: write secure code with privilege separation to mitigate the
53 security risks of possible bugs.
54 - Fast: it features a modern, fast, event-based asynchronous I/O
55 model, it shouldn't never lags behind the user input.
56 - Cooperation: re-use existing conventions to allow inter-operations
57 and easy migrations from/to other clients.
60 ## TOFU
62 Telescope aims to use the "Trust, but Verify (where appropriate)"
63 approach outlined here:
64 [gemini://thfr.info/gemini/modified-trust-verify.gmi](gemini://thfr.info/gemini/modified-trust-verify.gmi).
66 The idea is to define three level of verification for a certificate:
68 - **untrusted**: the server fingerprint does NOT match the stored
69 value
70 - **trusted**: the server fingerprint matches the stored one
71 - **verified**: the fingerprint matches and has been verified
72 out-of-band by the client.
74 Most of the time, the `trusted` level is enough, but where is
75 appropriate users should be able to verify out-of-band the
76 certificate.
78 At the moment there is no support for oob-verification though.
81 ## Building
83 Telescope depends on ncursesw, libtls (from either LibreSSL or
84 libretls), libevent (either v1 or v2).
86 To build from a release tarball just execute:
88 ./configure
89 make
90 sudo make install
92 If you want to build from the git checkout, something that's
93 discouraged for users that don't intend to hack on telescope
95 ./autogen.sh
96 ./configure
97 make
98 sudo make install # eventually
100 Please keep in mind that the main branch, from time to time, may be
101 accidentally broken on some platforms. Telescope is developed
102 primarily on OpenBSD/amd64 and commits on the main branch don't get
103 always tested in other OSes. Before tagging a release however, a
104 comprehensive testing on various platform is done to ensure everything
105 is working as intended.
108 ## License
110 Telescope is distributed under a BSD-style licence. The main code is
111 under the ISC but some files under `compat/` are BSD2 or BSD3.