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