MinusBrowser 2.35.1 is Published
Minus is like Gopher, but even simpler. MinusBrowser also browses Gopherspace.
MinusBrowser is written for Linux-based operating systems.
- MinusBrowser will no longer try to read a URL that does not have a proper domain name. This fixes a bug in previous versions.
I noticed the problem with links at
gopher://gopher.floodgap.com/1/feeds/democracynow
For some reason bad links likegopher://Democracy Now! Headlines July 29, 2024: Pres. Nicol:/0/Democracy Now! Headlines July 29, 2024: Pres. Nicol
sometimes appear. Now MinusBrowser makes sure that domain names can only contain letters, numerals, .
, -
, and :
. The :
is used when a port is specified.
To update to this new version, if you already have MinusBrowser 2.1 or later, just follow the instructions on your browser’s home page. You will not need to use a web browser to update.
To get MinusBrowser if you do not already have it, download this file from Codeberg.
https://codeberg.org/giXzkGsc/Minus-Protocol/raw/branch/main/MinusBrowser.tar.gz
There is no need to install MinusBrowser. Just download the .tar.gz
file to your home folder and unpack it with
tar -xzf MinusBrowser.tar.gz
or use your favorite GUI software to unpack it. If you have a version of MinusBrowser earlier than 2.1, unpack the .tar.gz
file into the same directory as your present MinusBrowser folder.
To follow the progress of the Minus Protocol Project, click on #minus-protocol or look at https://nerdpol.ch/tags/minus-protocol
You can download MinusBrowser from a terminal window with this command. This will work only if Tor Browser is running because it borrows Tor Browser’s SOCKS5 proxy. (Both Tor Browser and MinusBrowser contain their own copy of Tor.)
curl --socks5-hostname 127.0.0.1:9150 -O gopher://mvxpelpxu2f7kzotb2s2t6fkmggvrd7qdg2wjs6waiyf2nbhkawux4yd.onion:1990/9/MinusBrowser.tar.gz
This works because all Minus URLs can be translated into Gopher URLs.
minus://something.onion/
→ gopher://something.onion:1990/9/
For more information:
minus://mvxpelpxu2f7kzotb2s2t6fkmggvrd7qdg2wjs6waiyf2nbhkawux4yd.onion/
https://codeberg.org/giXzkGsc/Minus-Protocol
#internet #protocol #tcp #hypertext #http #gopher #minus #minus-protocol #browser #minusbrowser #minus-browser #server #minus-server
N. E. Felibata 👽 reshared this.
Digit
•?
iunno.
David
•The Minus specification copied from MinusBrowser. Section 8, in this comment, doesn't show the actual markings because they're basically the same as with D*.
Latest Version 2024-06-26
Minus Protocol Specification
1. The Name of the Minus Protocol
The name Minus was inspired by Gopher Plus. Gopher Plus added features to Gopher; Minus subtracts features from Gopher. See section 5 below.
2. Minus Libraries
The collection of files served by the same Minus server at the same domain is called a Minus Library. This is analogous to a Web Site, Gopher Hole, and Gemini Capsule.
The purpose of a Minus library is similar to that of an ordinary lending library. The purpose is to make media, especially text, available to be perused. Minus is not an appropriate protocol for interactive applications.
3. Minus Transactions
- Server: listens for TCP connections on port 1990
- Client: opens a TCP connection to the server on port 1990
- Server: accepts the TCP connection
- Client: sends
... show moreThe Minus specification copied from MinusBrowser. Section 8, in this comment, doesn't show the actual markings because they're basically the same as with D*.
Latest Version 2024-06-26
Minus Protocol Specification
1. The Name of the Minus Protocol
The name Minus was inspired by Gopher Plus. Gopher Plus added features to Gopher; Minus subtracts features from Gopher. See section 5 below.
2. Minus Libraries
The collection of files served by the same Minus server at the same domain is called a Minus Library. This is analogous to a Web Site, Gopher Hole, and Gemini Capsule.
The purpose of a Minus library is similar to that of an ordinary lending library. The purpose is to make media, especially text, available to be perused. Minus is not an appropriate protocol for interactive applications.
3. Minus Transactions
The client may close the TCP connection before the entire file is received. The server must tolerate this.
The specifier is one line of text that can contain only the characters inside the following quotation marks.
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_/."
The specifier may or may not begin with
/
.The specifier may or may not end with a newline (
\r\n
or\n
). The server will ignore the newline, if present.The specifier may be just
/
, but, otherwise, it must not end with/
.The specifier must not begin or end with
.
.The specifier must also not contain any of the following.
//
..
/.
./
If the specifier is not
/
or zero-length, it must end with a.
followed by one or more characters to indicate the type of the file specified.The specifier must not begin with
/-
or-
.If the specifier is
/
or zero-length, the specifier will default toindex.minus
. This is similar toindex.html
in HTTP. When the specifier is, implicitly or explicitlyindex.minus
the server must send a Minus file that meets the requirements of section 7.If the specifier is not
/
or zero-length, the part of the specifier after the last/
should be the default file name of the file if the file is saved by the client.The error message mentioned above must be UTF-8 text with
\n
at the end of lines, and not\r\n
. The client must provide the user with a way to detect when an error message is downloaded instead of the requested file.There must be no other communication between the server and client. Notice that no information about the client is sent to the server.
4. Allowed Server Domains
The server must run either as a Tor Onion Service or at a local IPv4 address (
loopback
or RFC 1918). Because of the lack of transport security, use of servers at RFC 1918 addresses is discouraged.5. File Types and Links: How Minus Simplifies Gopher
Gopher has a special file type (type 1) that contains links to other files. Only this type can contain links to other files. With Minus, any Minus file can contain links to other files. Minus files are described in section 7 below.
A link, in Minus files, is just a Minus URL alone on a line. Nothing else is required to make a link.
The part of the URL after the last
/
is used by Minus clients as the file name of the file. If nothing follows the domain name but/
, the file name defaults toindex.minus
.Gopher indicates the types of files in the links to them, just after the
/
that follows the domain name. With Minus, the file type is indicated by what follows the last.
at the end of the URL. Files with file names that end with.minus
,.txt
,.text
, or.asc
are treated as text files. When Minus clients download text files, everything in the file that is not UTF-8 text must be filtered out.6. Minus URL Format
Here is an example of a Minus URL.
minus://mvxpelpxu2f7kzotb2s2t6fkmggvrd7qdg2wjs6waiyf2nbhkawux4yd.onion/index.minus
This has three parts:
minus://
the scheme that indicates the Minus protocolmvxpelpxu2f7kzotb2s2t6fkmggvrd7qdg2wjs6waiyf2nbhkawux4yd.onion
the domain/index.minus
the specifier, which the client sends to the server to request the fileMinus clients are allowed to send the specifier without the initial
/
.See section 3 for information about the specifier.
Notice that Minus URLs can have no userinfo, fragment, or query components.
If the domain is a local IP address (as allowed by section 4), a port may be specified with a
:
after the address, followed by the port number. Otherwise, a port must not be specified.Minus URLs in Minus files should be the only thing on the line in which they appear.
7. The
text/minus
File TypeMinus defines its own MIME type. This is
text/minus
, similar to HTTP'stext/html
and Gemini'stext/gemini
. The names of Minus files must end with.minus
.Minus files must be UTF-8 text files. The server should not limit the line length of lines in these files (as in Gopher). However, the client should wrap lines at about 80 characters.
Lines in
.minus
files should end with\n
and not\r\n
, but clients should tolerate\r\n
.Minus URLs should be the only thing on the line in which they appear.
8. Display of Text in
.minus
FilesHow the text of
.minus
files is displayed must be controlled by the client and its user. However, the text of the.minus
file may indicate, with markings, what functions parts of the text play in the document.The markings allowed are:
Page Title header
Subtitle header
Smaller subtitle header
Smallest subtitle header
Note: There must be no white space before the first
#
and a space must follow the last#
.Text is emphasized like this.
Note: A space must not follow the first asterisk or precede the second asterisk.
Note: White space must not precede the
>
and a space must follow the>
.Note: White space must not precede the
-
and a space must follow the-
.Code snippets
are marked like this
.Note: ```` must be the only thing on the line in which it appears.
minuslang: en
This indicates the language of the page. The two-letter language code
en
indicates that the page is written in English. This marking is optional. It is used to determine how the page is read aloud, or how the page is spell-checked. The two-letter language codes must be those defined by ISO 639-1. Minus clients may assume that a page without this marking is written in English.Note: The language marking must be the only thing on the line in which it appears. White space must not precede
minuslang:
and the single space after the colon (:
) is required. This marking may appear anywhere in a page, but if it appears more than once in a page, all but the first marking must be ignored.Minus URLs, alone on a line, should be displayed in a distinctive way.
It is also acceptable for the client not to display marked text or markings differently from the rest of the text.
9. Other Required or Recommended Behavior of Minus Clients and Servers
In GUI Minus clients, all Minus URLs alone on a line should be clickable links. Clients may also make URLs with other schemes clickable links, and may also allow links in other types of text files. Clicking the link should read the file specified in the link.
Clients are required to display files with names that end with
.minus
,.txt
,.text
, or.asc
. Other types must be saved as files. Clients may also display other types after they have been saved as files, but should not do so if it could possibly compromise security or privacy. Types that should not be rendered include web pages. The display of text, as text, is always allowed, even when that text is not very human-readable.Of course, automatically executing downloaded software is not allowed. This is what web browsers do with JavaScript scripts, and this is a huge security and privacy problem.
Clients must never initiate a network connection unless the user has explicitly requested it by, for example, clicking a link. Each individual connection must be individually initiated by the user.
Minus clients and servers must not try to identify their users. However, encrypted and signed text is allowed.
Minus servers must support, equally well, all Minus clients that follow this specification. Similarly, all Minus clients must support, equally well, all servers that follow this specification. Behavior not required by this specification must not be required by server or client software.
A6BDBF57_57B731E9
•This is correct. MinusBrowser, like most free software projects (according to Micah Lee), has just one developer. To make it simpler for everyone, including me, I have removed all the files from https://codeberg.org/giXzkGsc/Minus-Protocol except
- MinusBrowser.tar.gz
- minusupdate.tar.gz
- minusupdate.tar.gz.gpg
- version.txt
- README.md
- LICENSE
- minus-specification.txt
The first four files are the only ones you need to use MinusBrowser and update it. MinusBrowser is free software. It is released under the terms of the GNU General Public License, and you have all the freedoms granted by that license.
This may or may not reduce the size of the file downloaded by @
... show moreThis is correct. MinusBrowser, like most free software projects (according to Micah Lee), has just one developer. To make it simpler for everyone, including me, I have removed all the files from https://codeberg.org/giXzkGsc/Minus-Protocol except
- MinusBrowser.tar.gz
- minusupdate.tar.gz
- minusupdate.tar.gz.gpg
- version.txt
- README.md
- LICENSE
- minus-specification.txt
The first four files are the only ones you need to use MinusBrowser and update it. MinusBrowser is free software. It is released under the terms of the GNU General Public License, and you have all the freedoms granted by that license.
This may or may not reduce the size of the file downloaded by @Digit. I do not understand the
remote: Enumerating objects: 1432, done.
line output by thegit clone
command. There were never even 100 files. Certainly there were not 1432 files.All the files in the MinusBrowser bundle (the MinusBrowser folder) are text files except for two small
.png
files, Tor (and its associated files), andmini-inetd
. MinusBrowser is written in BASH and Tcl. My style is intended to be readable, even when that makes it less concise.Minus-Protocol
Codeberg.orgtomgrzybow
•My style is intended to be readable, even when that makes it less concise.
Thus maximizing Freedom. Thanks!
Digit
•upon reissuing
time git clone "https://codeberg.org/giXzkGsc/Minus-Protocol"
in a fresh directory with git version 2.44.2 from a gentoo stratum in bedrocklinux, i get:looks[/looked] like it'll be around 300mb now, saying it's 33% done at 100mb.
but is that still anomalous? (in either size or object count?)
oh, and as i type, it proceeds to climb in mb size faster than %... 442mb @60%...
Receiving objects: 67% (1043/1549), 538.57 MiB | 1.27 MiB/s
I'm guessing that still seems like something funky going on that shouldnt be, yeah?
okies, it has completed:
... show moreupon reissuing
time git clone "https://codeberg.org/giXzkGsc/Minus-Protocol"
in a fresh directory with git version 2.44.2 from a gentoo stratum in bedrocklinux, i get:looks[/looked] like it'll be around 300mb now, saying it's 33% done at 100mb.
but is that still anomalous? (in either size or object count?)
oh, and as i type, it proceeds to climb in mb size faster than %... 442mb @60%...
Receiving objects: 67% (1043/1549), 538.57 MiB | 1.27 MiB/s
I'm guessing that still seems like something funky going on that shouldnt be, yeah?
okies, it has completed:
that's now how it looks for everybody?
or, situation normal, okay to proceed?
David
•git clone
you get a copy of all the files, right? They end up in a directory/folder, right? So what's in that folder?Digit
•20240815 tyson devuan /home/digit/gittings/Minus-Protocol % tree -ifash ./
... show more[4.0K] .
[4.0K] ./.git
[4.0K] ./.git/branches
[ 265] ./.git/config
[ 73] ./.git/description
[ 21] ./.git/HEAD
[4.0K] ./.git/hooks
[ 478] ./.git/hooks/applypatch-msg.sample
[ 896] ./.git/hooks/commit-msg.sample
[4.6K] ./.git/hooks/fsmonitor-watchman.sample
[ 189] ./.git/hooks/post-update.sample
[ 424] ./.git/hooks/pre-applypatch.sample
[1.6K] ./.git/hooks/pre-commit.sample
[ 416] ./.git/hooks/pre-merge-commit.sample
[1.5K] ./.git/hooks/prepare-commit-msg.sample
[1.3K] ./.git/hooks/pre-push.sample
[4.8K] ./.git/hooks/pre-rebase.sample
[ 544] ./.git/hooks/pre-receive.sample
[2.7K] ./.git/hooks/push-to-checkout.sample
[3.6K] ./.git/hooks/update.sample
[ 641] ./.git/index
[4.0K] ./.git/info
[ 240] ./.git/info/exclude
[4.0K] ./.git/logs
[ 194] ./.git/logs/HEAD
[4.0K] ./.git/logs/refs
[4.0K] ./.git/logs/refs/heads
[ 194] ./.git/logs/refs/heads/main
[4.0K] ./.git/logs/refs/remotes
[4.0K] ./.git/logs/refs/remotes/origin
[ 19
20240815 tyson devuan /home/digit/gittings/Minus-Protocol % tree -ifash ./
[4.0K] .
[4.0K] ./.git
[4.0K] ./.git/branches
[ 265] ./.git/config
[ 73] ./.git/description
[ 21] ./.git/HEAD
[4.0K] ./.git/hooks
[ 478] ./.git/hooks/applypatch-msg.sample
[ 896] ./.git/hooks/commit-msg.sample
[4.6K] ./.git/hooks/fsmonitor-watchman.sample
[ 189] ./.git/hooks/post-update.sample
[ 424] ./.git/hooks/pre-applypatch.sample
[1.6K] ./.git/hooks/pre-commit.sample
[ 416] ./.git/hooks/pre-merge-commit.sample
[1.5K] ./.git/hooks/prepare-commit-msg.sample
[1.3K] ./.git/hooks/pre-push.sample
[4.8K] ./.git/hooks/pre-rebase.sample
[ 544] ./.git/hooks/pre-receive.sample
[2.7K] ./.git/hooks/push-to-checkout.sample
[3.6K] ./.git/hooks/update.sample
[ 641] ./.git/index
[4.0K] ./.git/info
[ 240] ./.git/info/exclude
[4.0K] ./.git/logs
[ 194] ./.git/logs/HEAD
[4.0K] ./.git/logs/refs
[4.0K] ./.git/logs/refs/heads
[ 194] ./.git/logs/refs/heads/main
[4.0K] ./.git/logs/refs/remotes
[4.0K] ./.git/logs/refs/remotes/origin
[ 194] ./.git/logs/refs/remotes/origin/HEAD
[4.0K] ./.git/objects
[4.0K] ./.git/objects/info
[4.0K] ./.git/objects/pack
[ 43K] ./.git/objects/pack/pack-b1e66169f5e4884671e2d0c24ca175af44a886b8.idx
[748M] ./.git/objects/pack/pack-b1e66169f5e4884671e2d0c24ca175af44a886b8.pack
[ 112] ./.git/packed-refs
[4.0K] ./.git/refs
[4.0K] ./.git/refs/heads
[ 41] ./.git/refs/heads/main
[4.0K] ./.git/refs/remotes
[4.0K] ./.git/refs/remotes/origin
[ 30] ./.git/refs/remotes/origin/HEAD
[4.0K] ./.git/refs/tags
[ 34K] ./LICENSE
[3.7M] ./MinusBrowser.tar.gz
[8.5K] ./minus-specification.txt
[3.7M] ./minusupdate.tar.gz
[3.6M] ./minusupdate.tar.gz.gpg
[ 18K] ./README.md
[ 20] ./version.txt
18 directories, 33 files
20240815 tyson devuan /home/digit/gittings/Minus-Protocol % du -chs ./
760M ./
760M total
David
•Yeah. I think people would do better to download
MinusBrowser.tar.gz
.https://codeberg.org/giXzkGsc/Minus-Protocol/raw/branch/main/MinusBrowser.tar.gz
That's everything you need.
... show moreYeah. I think people would do better to download
MinusBrowser.tar.gz
.https://codeberg.org/giXzkGsc/Minus-Protocol/raw/branch/main/MinusBrowser.tar.gz
That's everything you need.
BTW, what software can unpack
pack-b1e66169f5e4884671e2d0c24ca175af44a886b8.pack
? If that's something like a.tar.gz
file, it must contain some pretty big files inside it.Digit
•an llm search (among its verbosity) suggested:
git unpack-objects < pack-b1e66169f5e4884671e2d0c24ca175af44a886b8.pack