Code Monkey home page Code Monkey logo

telescope's Introduction

Telescope

Telescope is a Emacs/w3m-inspired browser for the "small internet" that supports Gemini, Gopher and Finger.

In features some expected stuff (tabs, bookmarks, history, client certificates, ...) with an UI that's very much Emacs and w3m inspired, and a privsep design.

There are still various things missing or, if you prefer, various things that you can help develop :)

  • other "smol internet" protocols
  • subscriptions
  • TOFU out-of-band verification and/or DANE
  • multiple UIs: at the moment it uses only ncurses, but telescope shouldn't be restricted to TTYs only!

asciicast

Why yet another browser?

One of the great virtues of Gemini is its simplicity. It means that writing browsers or server is easy and thus a plethora of those exists. I myself routinely switch between a couple of them, depending on my mood.

More browsers means more choice for the users, and more stability for the protocol too.

However, Telescope was ultimately written for fun, on a whim, just to play with ncurses, libtls, async I/O and the macros from sys/queue.h, but I'd like to finish it into a complete Gemini browser.

Goals

  • Fun: hacking on Telescope should be fun.
  • Clean: write readable and clean code mostly following the OpenBSD style(9) guideline. Don't become a kitchen sink.
  • Secure: write secure code with privilege separation to mitigate the security risks of possible bugs.
  • Fast: it features a modern, fast, event-based asynchronous I/O model.
  • Cooperation: re-use existing conventions to allow inter-operations and easy migrations from/to other clients.

TOFU

Telescope aims to use the "Trust, but Verify (where appropriate)" approach outlined here: gemini://thfr.info/gemini/modified-trust-verify.gmi.

The idea is to define three level of verification for a certificate:

  • untrusted: the server fingerprint does NOT match the stored value
  • trusted: the server fingerprint matches the stored one
  • verified: the fingerprint matches and has been verified out-of-band by the client.

Most of the time, the trusted level is enough, but where is appropriate users should be able to verify out-of-band the certificate.

At the moment there is no UI for out-of-band verification though.

Building

Telescope depends on ncursesw, libtls or libretls, yacc/bison and pkg-config. libgrapheme is an optional dependency: there's a bundled copy but it's reccomended to install it with a package manager if available.

To build execute:

$ ./autogen.sh		# only from git checkouts
$ ./configure
$ make
$ sudo make install	# eventually

The configure script has optional support for building with libraries provided by your distribution instead of using the bundled versions:

The default-editor can be changed at build-time with the following option:

  • --with-default-editor: defaults to ed(1)

This is useful for distributions such as Debian, which prefers sensible-editor(1) as a wrapper.

This feature is mostly useful with the mini-edit-external command in telescope.

Contributing

Any form of contribution is appreciated, not only patches or bug reports: feel free to open an issue or send an email to [email protected].

If you have a sample configuration, custom theme, a script or anything that could be helpful to others, consider adding it to the contrib directory.

Consider also joining the official irc channel, #telescope on libera.chat!

User files

Telescope stores user files according to the XDG Base Directory Specification by default. The usage and contents of these files are described in the man page, under "FILES".

At the moment, only one instance of Telescope can be running at time per user.

License

Telescope is distributed under a BSD-style licence. The main code is either under the ISC or is Public Domain, but some files under compat/ are 3-Clause BSD or MIT. See the first few lines of every file or about:license inside telescope for the copyright information.

data/emoji.txt is copyright © 2022 Unicode, Inc. and distributed under the UNICODE, Inc license agreement.

telescope's People

Contributors

omar-polo avatar thomasadam avatar cybertailor avatar sikmir avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.