Initial commit
Decided to split this out from haven git master, as it will change very often and contain information that is not strictly related.
This commit is contained in:
commit
238ce6719c
|
@ -0,0 +1,2 @@
|
||||||
|
*.html
|
||||||
|
gen.sh
|
|
@ -0,0 +1,42 @@
|
||||||
|
Bad things
|
||||||
|
==========
|
||||||
|
|
||||||
|
Web browsers
|
||||||
|
------------
|
||||||
|
https://drewdevault.com/2020/08/13/Web-browsers-need-to-stop.html
|
||||||
|
|
||||||
|
Scrap it all, start anew. Content goes first, presentation second. Don't allow
|
||||||
|
for the inverse to happen. I'm not interested in anyone's animations and gray
|
||||||
|
font.
|
||||||
|
|
||||||
|
GNOME 3
|
||||||
|
-------
|
||||||
|
Removing features, worsening accessibility, making the UI incomprehensible,
|
||||||
|
piling up laughable levels of complexity, politically driven development,
|
||||||
|
everything is wrong here.
|
||||||
|
|
||||||
|
KDE
|
||||||
|
---
|
||||||
|
KDE will always be hideously ugly, it's the one constant in the universe.
|
||||||
|
|
||||||
|
Unix terminals
|
||||||
|
--------------
|
||||||
|
Barely tolerable with graphical displays. The character grid must go, not only
|
||||||
|
because variable pitch fonts are infinitely more pleasant to read.
|
||||||
|
|
||||||
|
The only redeeming quality is how well these work over slow links.
|
||||||
|
|
||||||
|
ASCII
|
||||||
|
-----
|
||||||
|
Outdated, made for teletypes. Unicode mostly just adds more complexity (and
|
||||||
|
characters). For sanity reasons, I'll put up with it and try to avoid the parts
|
||||||
|
I don't like, perhaps even banning certain characters where possible.
|
||||||
|
|
||||||
|
Centralisation
|
||||||
|
--------------
|
||||||
|
Try to build things so that they survive outages--resilient, robust, and even
|
||||||
|
anti-fragile. Admittably, this principle is hard for humans to follow.
|
||||||
|
|
||||||
|
Speaking of which, project Haven has no public mirrors yet. Not that it matters
|
||||||
|
thus far... but eventually we should at least set up mirrorring to repo.or.cz,
|
||||||
|
which is local.
|
|
@ -0,0 +1,101 @@
|
||||||
|
Good things
|
||||||
|
===========
|
||||||
|
|
||||||
|
Windows 95
|
||||||
|
----------
|
||||||
|
// TODO: Include a screenshot.
|
||||||
|
|
||||||
|
Most applications followed design guidelines, giving a unified and simple UI.
|
||||||
|
|
||||||
|
Could be reasonably well controlled from the keyboard.
|
||||||
|
|
||||||
|
SerenityOS
|
||||||
|
----------
|
||||||
|
https://github.com/SerenityOS/serenity
|
||||||
|
|
||||||
|
// TODO: Include a screenshot.
|
||||||
|
|
||||||
|
A project with a much larger scope than Haven but with somewhat similar goals,
|
||||||
|
to create a nice new environment. Gives proof that such a project can be
|
||||||
|
written in few people, given proper experience.
|
||||||
|
|
||||||
|
ToaruOS
|
||||||
|
-------
|
||||||
|
https://github.com/klange/toaruos
|
||||||
|
|
||||||
|
Similarly to SerenityOS, this proves that one can write an entire operating
|
||||||
|
system from scratch. Somewhat sadly, it just replicates the Linux desktop
|
||||||
|
without trying to make any fundamental changes whatsoever. Still, it makes for
|
||||||
|
a very interesting data point.
|
||||||
|
|
||||||
|
Haiku
|
||||||
|
-----
|
||||||
|
Pretty. Desktop-first. Just the window manager sucks, and C++ is no longer
|
||||||
|
a reasonable choice for a high-level programming language, despite all the
|
||||||
|
effort to improve it. It's the foundations that are rotten.
|
||||||
|
|
||||||
|
VIM
|
||||||
|
---
|
||||||
|
Customizable modal text editor allowing for rather efficient editing. While the
|
||||||
|
internals might not be so great, the user interface is hard to beat once you get
|
||||||
|
used to it.
|
||||||
|
|
||||||
|
With https://github.com/prabirshrestha/vim-lsp/[vim-lsp] it even shines as an
|
||||||
|
IDE, which is a wonderful development.
|
||||||
|
|
||||||
|
Qt Creator
|
||||||
|
----------
|
||||||
|
// TODO: Include a screenshot.
|
||||||
|
|
||||||
|
Has a very good VIM emulator (rare!), excellent code navigation on top of that,
|
||||||
|
clean UI.
|
||||||
|
|
||||||
|
Primarily a C++ IDE, yet slowly the Language Server Protocol implementation
|
||||||
|
makes it transcend into a general-purpose one.
|
||||||
|
|
||||||
|
Vimperator/Pentadactyl/qutebrowser
|
||||||
|
----------------------------------
|
||||||
|
// TODO: Include a screenshot.
|
||||||
|
|
||||||
|
Vimperator/Pentadactyl has created a new standard in web browser usability.
|
||||||
|
The most important innovations being the addition of modality to the web browser
|
||||||
|
and the "follow link" feature, which is what I feel all mouse-first UIs
|
||||||
|
deserve.
|
||||||
|
|
||||||
|
Too bad it can no longer work in current versions of Firefox as they cut off
|
||||||
|
all support for XUL addons. The good times are already behind us. I certainly
|
||||||
|
enjoyed them.
|
||||||
|
|
||||||
|
qutebrowser went somewhat beyond in terms of how neat the integration of a VIM
|
||||||
|
interface and a web browser engine can be, rebuilding the concept on top of
|
||||||
|
Webkit, but to this day it lacks a normal AdBlock, and thus remains a toy.
|
||||||
|
|
||||||
|
SourceHut
|
||||||
|
---------
|
||||||
|
https://sourcehut.org/
|
||||||
|
|
||||||
|
Drew might be an opinionated asshole but that's not necessarily a bad quality.
|
||||||
|
His creations are compatible with my values.
|
||||||
|
|
||||||
|
WikiWikiWeb
|
||||||
|
-----------
|
||||||
|
http://wiki.c2.com/
|
||||||
|
|
||||||
|
An interesting knowledge base. Simple formatting, automatic links. I've
|
||||||
|
borrowed the general concept for this very collection of texts (I don't want
|
||||||
|
to say "wiki" since no one else can edit).
|
||||||
|
|
||||||
|
It's a shame that it's been frozen in time.
|
||||||
|
|
||||||
|
AsciiDoc
|
||||||
|
--------
|
||||||
|
I despise Markdown for its choices, and I don't want to suffer while writing.
|
||||||
|
Granted, I can see some faults in AsciiDoc as well, notably with how hard it is
|
||||||
|
to parse and process, but I haven't found anything better yet. One day I might
|
||||||
|
create a processor for a slightly modified subset of it. Until then,
|
||||||
|
libasciidoc is what I'll be using for all markup.
|
||||||
|
|
||||||
|
Plan 9, Go
|
||||||
|
----------
|
||||||
|
Pervasive simplicity. Sometimes it's annoying but overall you get the feeling
|
||||||
|
you have the entire platform under your control.
|
|
@ -0,0 +1,71 @@
|
||||||
|
Haven
|
||||||
|
=====
|
||||||
|
|
||||||
|
// This is a wiki of sorts, although, since no one else can edit it,
|
||||||
|
// it's just a personal wiki, or maybe just a collection of articles.
|
||||||
|
// Might name it like "writings" or even simply "db".
|
||||||
|
|
||||||
|
As computer power user, I often get unhappy, especially as a result of
|
||||||
|
the changes that have happened over the last decade:
|
||||||
|
|
||||||
|
- almost every application I use looks and feels different,
|
||||||
|
- senseless animations vie for my attention and add delays,
|
||||||
|
- many applications are hard to control from the keyboard,
|
||||||
|
- visual clutter distracts me from tasks at hand,
|
||||||
|
- lack of customizability sets all those problems in stone,
|
||||||
|
- and unbelievable hardware requirements, stemming from accidental complexity
|
||||||
|
and a general lack of care, push me to buy unnecessarily expensive equipment
|
||||||
|
just so that I don't feel like being _used by the computer_.
|
||||||
|
|
||||||
|
*haven* is an umbrella project for a range of mostly desktop
|
||||||
|
applications. The greater goal is to create a fresh computing environment for
|
||||||
|
daily work and play--easily controllable, reasonably complex, both visually
|
||||||
|
and internally unified and last but not least responsive.
|
||||||
|
|
||||||
|
I'm not trying to create anything novel but to achieve something
|
||||||
|
*elegant* and *pleasing*.
|
||||||
|
|
||||||
|
.Related articles:
|
||||||
|
- https://lobste.rs/s/ksbcw5/12_principles_for_diverging_desktop +
|
||||||
|
While I don't fully agree with the vision, we have similar concerns.
|
||||||
|
|
||||||
|
Further reading
|
||||||
|
---------------
|
||||||
|
To get a better sense of the direction this project is going in, you can take
|
||||||
|
a look at a list of GoodThings and BadThings. If you're of the shallower kind,
|
||||||
|
have a look at Identity, and if you're interested in the overall design,
|
||||||
|
consult Technicalities.
|
||||||
|
|
||||||
|
Status
|
||||||
|
------
|
||||||
|
Trying to gain momentum, there's an astounding amount of work to be done. Hop
|
||||||
|
on if you know Go well, my contact is on the link:/[front page]. Top priority
|
||||||
|
tasks:
|
||||||
|
|
||||||
|
- [x] start writing a detailed wiki for propagation purposes
|
||||||
|
- [ ] create a basic terminal emulator for `TERM=dumb` (exercise)
|
||||||
|
- [ ] create a basic CSV viewer (simple, useful)
|
||||||
|
- [ ] create an IRC client (lots of know-how, trivial UI)
|
||||||
|
- [ ] create a basic vi-inspired text editor (required component for later)
|
||||||
|
- [ ] create a personal wiki/organiser (urgent)
|
||||||
|
|
||||||
|
Mockups
|
||||||
|
-------
|
||||||
|
// TODO: Mockups can be just included from different places.
|
||||||
|
|
||||||
|
// SVG is too precise, must use HTML/CSS.
|
||||||
|
|
||||||
|
.ht -- terminal emulator
|
||||||
|
+++
|
||||||
|
<div style="border: 1px solid black; padding: 2px; background: white;">
|
||||||
|
<pre style="margin: 0; padding: 0;">
|
||||||
|
This is just supposed to be a simple terminal emulator application.
|
||||||
|
It ought to be a rather simple exercise.
|
||||||
|
</pre>
|
||||||
|
</div>
|
||||||
|
+++
|
||||||
|
|
||||||
|
While I despise the Unix terminal, I can't just stop using Unix tools, and so
|
||||||
|
I'll need a means to interact with them. One day it might evolve into
|
||||||
|
a graphical terminal with a tty compatibility layer, which would need
|
||||||
|
integrating a custom POSIX shell such as https://github.com/mvdan/sh[].
|
|
@ -0,0 +1,33 @@
|
||||||
|
Identity
|
||||||
|
========
|
||||||
|
|
||||||
|
The name "haven" merely hints at motivations and otherwise isn't of any
|
||||||
|
practical significance other than that we need an identifier. (This time
|
||||||
|
I resisted using something offensive for personal amusement.)
|
||||||
|
|
||||||
|
A logo covering the entire project is not needed and it seems hard to figure out
|
||||||
|
anything meaningful anyway, though we might pick a specific font to use for the
|
||||||
|
project's name <1>.
|
||||||
|
|
||||||
|
__
|
||||||
|
<2> _/ /_ <1> | _ _ _ _
|
||||||
|
\ _ \ |/ \ / \| \ / /_\ |/ \
|
||||||
|
/ / / / | | | | \ / | | |
|
||||||
|
/_/ /_/ | | \_/| \/ \_/ | |
|
||||||
|
|
||||||
|
That being said, if any symbol is deeply desired, a simple "h" <2> or "hvn"
|
||||||
|
could work. I'm not sure where I took this "h" letter styling from, it seems
|
||||||
|
too familiar. The above illustrations also show how awful it looks when a logo
|
||||||
|
is just a stylized version of the first letter of a name when you put the two
|
||||||
|
next to each other. Distinctly redundant. Facebook and Twitter are doing fine,
|
||||||
|
though, perhaps because they do not use them together like that.
|
||||||
|
|
||||||
|
Mascots
|
||||||
|
-------
|
||||||
|
I can think of two kinds of mascots that would bring me joy: an anime-style
|
||||||
|
character, or a My Little Pony OC. The color scheme would be mostly grayscale,
|
||||||
|
with something like shades of orange thrown in.
|
||||||
|
|
||||||
|
Either of the two choices is hard to draw for me if I don't want to infringe on
|
||||||
|
someone else's copyright, so I might have to find someone else to do it.
|
||||||
|
Eventually. Priorities lie elsewhere.
|
|
@ -0,0 +1,77 @@
|
||||||
|
Technicalities
|
||||||
|
==============
|
||||||
|
|
||||||
|
Languages
|
||||||
|
---------
|
||||||
|
Primarily Golang with limited C interfacing glue, secondarily C++17, mostly for
|
||||||
|
when the former cannot be reasonably used because of dependencies.
|
||||||
|
|
||||||
|
Build system
|
||||||
|
------------
|
||||||
|
https://github.com/zevv/bucklespring is a good example of a rather simplified
|
||||||
|
project that makes do with a single Makefile, even for cross-compilation on
|
||||||
|
Windows. Let us avoid CMake and the likes of it.
|
||||||
|
|
||||||
|
It seems that Go can link dynamically, therefore I could build libhaven.so
|
||||||
|
(https://docs.google.com/document/d/1nr-TQHw_er6GOQRsF6T43GGhFDelrAP0NqSS_00RgZQ
|
||||||
|
and https://stackoverflow.com/questions/1757090/shared-library-in-go)
|
||||||
|
and have the rest of the package as rather small binaries linking to it.
|
||||||
|
The "cannot implicitly include runtime/cgo in a shared library" error is solved
|
||||||
|
by "go install", which again requires "-pkgdir" because of privileges.
|
||||||
|
libstd.so is a beautiful 30 megabytes (compared to libc.a: 4.9M).
|
||||||
|
|
||||||
|
GUI
|
||||||
|
---
|
||||||
|
Probably build on top of X11/Xlib or xgb. Wayland can wait until it
|
||||||
|
stabilizes--it should not be a major issue switching the backends.
|
||||||
|
Vector graphics can be handled by draw2d.
|
||||||
|
|
||||||
|
- https://rosettacode.org/wiki/Window_creation/X11#Go
|
||||||
|
- https://github.com/llgcode/draw2d
|
||||||
|
|
||||||
|
The c2 wiki unsurprisingly has a lot of material around the design and
|
||||||
|
realisation of GUIs, which might be useful.
|
||||||
|
|
||||||
|
It seems like an aligning/constraint-based "layout manager" will be one of the
|
||||||
|
first harder problems here. However I certainly don't want to use fixed
|
||||||
|
coordinates as they would introduce problems with different fonts and i18n.
|
||||||
|
|
||||||
|
We could use BDF fonts from the X11 distribution, but draw2d has native support
|
||||||
|
for FreeType fonts and it's more of a choice between vectors and bitmaps.
|
||||||
|
|
||||||
|
The looks will be heavily inspired by Haiku and Windows 2000 and the user will
|
||||||
|
have no say in this, for simplicity.
|
||||||
|
|
||||||
|
.Resources:
|
||||||
|
- https://github.com/golang/exp/tree/master/shiny is a GUI library
|
||||||
|
- https://github.com/as/shiny is a fork of it
|
||||||
|
- http://man.cat-v.org/plan_9/1/rio has a particular, unusual model
|
||||||
|
|
||||||
|
Internationalisation
|
||||||
|
--------------------
|
||||||
|
For i18n https://github.com/leonelquinteros/gotext could be used, however I'll
|
||||||
|
probably give up on this issue as I'm fine enough with English.
|
||||||
|
|
||||||
|
Go also has x/text packages for this purpose, which might be better than GNU,
|
||||||
|
but they're essentially still in development.
|
||||||
|
|
||||||
|
Versioning
|
||||||
|
----------
|
||||||
|
Versions are for end users. We can use a zero-based, strictly increasing
|
||||||
|
number, be it a simple sequence or date-based numbers such as 1807. If we do
|
||||||
|
this at all, we will eventually also need to release patch versions.
|
||||||
|
|
||||||
|
Since dates don't seem to convey important information, let us settle on 0, 1,
|
||||||
|
1.1, 2, 3, 3.1, 3.2, ... In practice releases are going to be scarce, unless
|
||||||
|
we find a person to take care of it. Note that there is no major/minor pair--
|
||||||
|
a new project will be created when radical philosophical or architectural
|
||||||
|
changes are to be made. See Goal.
|
||||||
|
|
||||||
|
Licensing
|
||||||
|
---------
|
||||||
|
All will be released into the public domain. The preferred way of doing so is
|
||||||
|
the 0BSD license.
|
||||||
|
|
||||||
|
Other people's libraries may be used or even imported if it makes sense, so long
|
||||||
|
as they're not licensed under something either viral like the GPL, or annoying
|
||||||
|
such as the original 4-clause BSD license.
|
|
@ -0,0 +1,24 @@
|
||||||
|
<meta http-equiv=content-type content="text/html; charset=utf-8">
|
||||||
|
<!-- make mobile browsers happy -->
|
||||||
|
<meta name=viewport content="width=device-width, initial-scale=1">
|
||||||
|
<link rel=stylesheet href=../style.css>
|
||||||
|
<style>
|
||||||
|
.sect1 { margin: .5rem 0; }
|
||||||
|
.sect1 h2 { margin: 0; }
|
||||||
|
.paragraph { margin: 1rem 0; }
|
||||||
|
.paragraph p { margin: 0; }
|
||||||
|
.literalblock { margin: 1rem 0; }
|
||||||
|
.literalblock pre { margin: 0; }
|
||||||
|
.ulist { margin: 1rem 0; }
|
||||||
|
.ulist .ulist { margin: 0; }
|
||||||
|
.ulist ul { margin: 0; }
|
||||||
|
.ulist li p { margin: 0; }
|
||||||
|
#links, #footer { font-size: small; color: gray; }
|
||||||
|
</style>
|
||||||
|
<ul class=nav>
|
||||||
|
<li><a href=../index.html>Me</a></li>
|
||||||
|
<li><a href=../haven/Haven.html><b>Haven</b></a></li>
|
||||||
|
<li><a href=../show.html>Showcase</a></li>
|
||||||
|
<li><a href=../articles.html>Articles</a></li>
|
||||||
|
</ul>
|
||||||
|
|
Loading…
Reference in New Issue