Update README.adoc
This commit is contained in:
		
							
								
								
									
										105
									
								
								README.adoc
									
									
									
									
									
								
							
							
						
						
									
										105
									
								
								README.adoc
									
									
									
									
									
								
							@@ -3,6 +3,11 @@ Project haven
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
haven is an umbrella project for a range of mostly desktop applications.
 | 
					haven is an umbrella project for a range of mostly desktop applications.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					This README is being converted into a wiki on the wiki branch, also publicly
 | 
				
			||||||
 | 
					available at https://p.janouch.name/haven/Haven.html[].  We should only document
 | 
				
			||||||
 | 
					here that which has been created, as the extent of the rationale and plans is
 | 
				
			||||||
 | 
					gigantic and seems to have a life of its own.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Goal
 | 
					Goal
 | 
				
			||||||
----
 | 
					----
 | 
				
			||||||
The greater goal is to create a fresh computing environment for daily work and
 | 
					The greater goal is to create a fresh computing environment for daily work and
 | 
				
			||||||
@@ -47,106 +52,6 @@ See Projects for more information about the individual projects.
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
Some taken names in Debian: hd (important), hte, hy.
 | 
					Some taken names in Debian: hd (important), hte, hy.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Identity
 | 
					 | 
				
			||||||
--------
 | 
					 | 
				
			||||||
The name 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 meaninful anyway, though we might pick a specific font to use for the
 | 
					 | 
				
			||||||
project name <1>.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
The only mascot I can think of would be a black and white or generally grayscale
 | 
					 | 
				
			||||||
My Little Pony OC but I don't really want to bring my own kinks into the project
 | 
					 | 
				
			||||||
and I'd also need to learn how to draw one so that I don't infringe on someone
 | 
					 | 
				
			||||||
else's copyright, or find someone else to do it.  Anyway, in lack of a proper
 | 
					 | 
				
			||||||
logo, she could have a simple "h" or "hvn" for a cutie mark <2>.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
         __
 | 
					 | 
				
			||||||
 <2>   _/ /_    <1>  | _     _          _    _
 | 
					 | 
				
			||||||
      \  _  \        |/ \   / \| \  /  /_\ |/ \
 | 
					 | 
				
			||||||
      / / / /        |   | |   | \  / |    |   |
 | 
					 | 
				
			||||||
     /_/ /_/         |   |  \_/|  \/   \_/ |   |
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
An anime-style character would also make me happy but that's ever harder to draw
 | 
					 | 
				
			||||||
for me.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
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.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
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.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Projects
 | 
					Projects
 | 
				
			||||||
--------
 | 
					--------
 | 
				
			||||||
These are sorted in the order in which they should be created in order to gain
 | 
					These are sorted in the order in which they should be created in order to gain
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user