9fans - fans of the OS Plan 9 from Bell Labs
 help / color / mirror / Atom feed
* Re: [9fans] UI design | enhancements.
@ 2019-04-15 21:51 sl
  2019-04-16  3:54 ` Lucio De Re
  0 siblings, 1 reply; 26+ messages in thread
From: sl @ 2019-04-15 21:51 UTC (permalink / raw)
  To: 9fans

thinking is hard.  there is a sweet spot somewhere between ease of use
and knowing what you're trying to accomplish in the first place.

once you learn the system, you can get a lot of mileage out of
in-built system features, such as shell commands, lists (variables),
functions, and pipelines.  file interfaces and private namespaces make
these simple primitives even more powerful than they are on presumably
more familiar unix systems.  (it has to be said: unix users already
don't seem to get much mileage out of existing unix features.)

rio is scriptable, and all of its features are exposed to file
interfaces and text commands.  that's a huge steering wheel, even if
your hands are small.

all the cosmetic stuff new users typically complain about can be
modified with a minimum of knowledge and skill.  this is a benefit of
the terse, simple programming style.  sometimes, even a deficient
program can be better than a featureful one, if the deficient program
is simple and easy to modify.  just implement whatever it is you
actually want to do.

some people would say this is ugly:

http://plan9.stanleylieber.com/rio/img/20190415.png

sl



^ permalink raw reply	[flat|nested] 26+ messages in thread
* Re: [9fans] UI design | enhancements.
@ 2019-04-15 20:59 Marshall Conover
  2019-04-15 21:10 ` Ori Bernstein
  2019-04-16  8:17 ` Mart Zirnask
  0 siblings, 2 replies; 26+ messages in thread
From: Marshall Conover @ 2019-04-15 20:59 UTC (permalink / raw)
  To: 9fans

[-- Attachment #1: Type: text/plain, Size: 3611 bytes --]

Hi Darren!

I can see how 9's current UI could be considered a 'roadblock' to the
average user due to its unfamiliarity, and making it closer to modern looks
may make plan 9 pass the smell test for users more often. Personally,
though, it seems like a bit of a slog; there's not much exciting going on
in changing a UI to look like 'every other' UI, and I'd also wonder about
maintenance - you might update it to look familiar now, but in three years
where will it be, especially with web frameworks changing things so
frequently and invading the desktop with elektron? That said, if it does
draw more users, upkeep might get easier (just having people prompting with
issue reports can be productive), and it's genuinely nice to have a more
active community.

But, I'd be really interested to see it taken a step further. Instead of
just a facelift, I'd love to see changes that show a reflection on modern
UIs and their problems, and attempts to fix them. That'd not just remove a
roadblock for new users, but create change that may actually draw them.

For example, I feel super squished on a single screen, but I've come to
dislike the awkwardness of switching between multiple 'workspaces' or
working with tiling wms. So I'm playing around with rio at the moment to
see if adding a 'panning' effect, where you treat the desktop as an
infinitely-scrollable table and allow the user to 'pan' around the table,
could be a natural approach to feeling less squished. It may end up being
even more awkward and painful, but it may also end up being something I'm
left wanting for in modern DEs - that could be an attraction to 9.

In something that I feel relates closer to the heart of 9, one problem I
see in modern UIs is the inability to easily interact between programs.
Each UI acts as an island, and the best generic interface for interaction
you can get between them is allowing programs to send screen clicks, with
the nightmare quickly following of figuring out how to know where to click.
Web APIs are somewhat en route to addressing that with their REST endpoints
and swagger API definitions, but it seems so much more simple to instead
use files and directories over 9p.

Getting really out there, I'd love to see a tightly coupled way of
representing the commands you can send to a program via its ctl file API in
9 and a visual representation of that program in rio. I'd love if the UIs I
was using in a program corresponded to their filesystem API so much as to
be almost a mapping, perhaps even letting you generate a UI from the
filesystem API and some simple mark(down|up). I think a shell that worked
off of this concept could be fascinating - not unlike a browser in some
ways, but in keeping close to the filesystem abstraction, perhaps allowing
for much better interaction with the small, text-stream focused programs
that the unix mentality prefers.

In sum, I'd be happy to see an increase in users from a facelift, but what
I'd love to see are new draws that fix modern problems.

On a more practical level, you may find it notable that the nuklear lib
<https://bitbucket.org/mischief/libnuklear> has been ported for plan 9. It
may be a good start to create a UI that users coming from current workflows
will be comfortable looking at and interacting with. If you want to chat
with the porter of the nuklear lib for 9, you'll find him in this plan
9-focused discord server: https://discord.gg/6daut5T. You may also find
it's a good place for discussion like this.

Thanks for starting the discussion, and good luck!

Marshall

[-- Attachment #2: Type: text/html, Size: 4014 bytes --]

^ permalink raw reply	[flat|nested] 26+ messages in thread
* Re: [9fans] UI design | enhancements.
@ 2019-04-15 15:47 ori
  0 siblings, 0 replies; 26+ messages in thread
From: ori @ 2019-04-15 15:47 UTC (permalink / raw)
  To: darren, 9fans

> Hey folks,
>
> I rarely post in-fact maybe my second ever, I was wondering if anyone
> else or a group of us could work towards some window manager UI
> modifications to appear more attractive in some form from the current
> interface appearing in comparison to dwm(on other Nix forks) to a more
> usable friendly interface like gnome, KDE and the like.

I don't think this would fit well on plan 9. There's room for improvement
in what exists,  but I think large and complex environments are liabilities.

It's not something I'd be interested in using.

> I'm just throwing the idea about really, I've not had much time at all
> with Plan9 but from just my bare basic usage I can already see a great
> future for Plan9 as a whole. As I say what with commitments currently
> the last few years I could be way out of my depth and experience even
> mentioning this and don't mind getting flamed a little.

If you want this, you're going to need to write the code.

In general, ideas are cheap, and people are unlikely to pitch in until
they see where you're going. And specifically, people already know where
to go if they want KDE or Gnome.




^ permalink raw reply	[flat|nested] 26+ messages in thread
* [9fans] Git/fs: Possibly Usable
@ 2019-04-02  4:41 ori
  2019-04-03 18:29 ` Skip Tavakkolian
  0 siblings, 1 reply; 26+ messages in thread
From: ori @ 2019-04-02  4:41 UTC (permalink / raw)
  To: 9fans

It was mentioned on this list a short while ago. Now, it's
more or less at the point where it works for me. Expect
many bugs and problems, and many more missing tools, but
"the rest is just scripting".

One caveat I have: Git's index file format is a bit
boneheaded, so I'm ignoring it. The index doesn't affect
the wire protocol, so this isn't an interoperability issue,
unless you share the same physical repository on both
Plan 9 and Unix. If you do, expect them to get out of
sync on uncommitted but added files.

In fact, the entire concept of the staging area has been
removed, as it's both confusing and clunky. There are now
only three states that files can be in: 'untracked',
'dirty', and 'committed'. Tracking is done with empty
files under .git/index9/{removed,tracked}/path/to/file.

It's implemented in Plan 9 flavor C, and provides tools
for writing repository contents, and a file system for
read-only access, which will mirror the current state of
the repository.

The code is here: https://bitbucket.org/oridb/git9

Install with `mk install`. There's no recursive binding
of directories, so you need to union /rc/bin/git and
$objtype/bin/git` by hand.

Documentation has not yet been written. You'll need to
read the source.

Some usage examples:

	git/clone git://git.eigenstate.org/git/ori/mc.git
	git/log
	cd subdir/name
	git/add foo.c
	git/commit
	git/push

Scripts will generally mount git/fs as needed to do
their work, but if you want to browse the repository
manually, run it yourself. You'll get `/n/git` mounted,
with the following contents:

	/n/git/object:	The objects in the repo.
	/n/git/branch:	The branches in the repo.
	/n/git/ctl:		A file showing the status of the repo.
					Currently, it only shows the current branch.

Commits are presented as directories with the following
contents:

	author:	A file containing the author name
	hash:	A file containing the commit hash
	parent:	A file containing the commit parents, one per line.
	msg:	A file containing the log message for that commit
	tree:	A directory containing a view of the repository.

So, for example:

	% ls /n/git/branch/heads/master
	/n/git/branch/heads/master/author
	/n/git/branch/heads/master/hash
	/n/git/branch/heads/master/msg
	/n/git/branch/heads/master/parent
	/n/git/branch/heads/master/tree
	% cat /n/git/branch/heads/master/hash
	7d539a7c08aba3f31b3913e0efef11c43ea9

	# This is the same commit, with the same contents.
	% ls /n/git/object/7d539a7c08aba3f31b3913e0efef11c43ea9f9ef
	/n/git/object/7d539a7c08aba3f31b3913e0efef11c43ea9f9ef/author
	/n/git/object/7d539a7c08aba3f31b3913e0efef11c43ea9f9ef/hash
	/n/git/object/7d539a7c08aba3f31b3913e0efef11c43ea9f9ef/msg
	/n/git/object/7d539a7c08aba3f31b3913e0efef11c43ea9f9ef/parent
	/n/git/object/7d539a7c08aba3f31b3913e0efef11c43ea9f9ef/tree

	# what git/diff will hopefully do more concisely soon, filtering
	# out the non-git files.
	ape/diff -ur /n/git/branch/heads/master/tree .
	Only in .: .git
	Only in .: debug
	diff -ur /n/git/branch/heads/master/tree/fold.myr ./fold.myr
	--- /n/git/branch/heads/master/tree/fold.myr	Wed Dec 31 16:00:00 1969
	+++ ./fold.myr	Mon Apr  1 21:39:06 2019
	@@ -6,6 +6,8 @@
	 	const foldexpr : (e : expr# -> std.option(constval))
	 ;;

	+/* Look, diffing files just works, and I don't need any fancy glue! */
	+
	 const foldexpr = {e
	 	match e
	 	| &(`Eident &[.sc=`Sclassenum, .name=name, .ty=`Tyenum &(`Body enum)]):
	Only in .: refs


The following utilities and binaries are provided:

	fs:	The git filesystem.
	fetch:	The protocol bits for getting data from a git server.
	send:	The protocol bits for sending data to a git server.
	save:	The gnarly bits for storing the files for a commit.
	conf:	A program to extract information from a config file.
	clone:	Clones a repository.
	commit:	Commits a snapshot of the working directory.
	log:	Prints the contents of a commmit log.
	add:	Tells the repository to add a file to the next commit.
	walk:	`du`, but for git status.


Supported protocols: git:// and git+ssh://. If someone
implements others, I'll gladly accept patches.

TODOs:
	git/mkpatch:	Generate a 'git am' compatible patch.
	git/apply:	Apply a diff.
	git/diff:	Wrapper wrapper around git/walk that
			diffs the changed files.
	git/merge:	Yup, what it says on the label. Should
			also be a script around git/fs.
	git/log:	Need to figure out how to make it filter
			by files.
	/n/git/HEAD:	add /n/git/head subtree which points
			to the current commit.

...And a whole bunch more.




^ permalink raw reply	[flat|nested] 26+ messages in thread

end of thread, other threads:[~2019-04-17  4:25 UTC | newest]

Thread overview: 26+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-04-15 21:51 [9fans] UI design | enhancements sl
2019-04-16  3:54 ` Lucio De Re
2019-04-16 10:21   ` Ethan Gardener
  -- strict thread matches above, loose matches on Subject: below --
2019-04-15 20:59 Marshall Conover
2019-04-15 21:10 ` Ori Bernstein
2019-04-16 12:54   ` Marshall Conover
2019-04-17  3:57     ` Lucio De Re
2019-04-17  4:02       ` Michael Misch
2019-04-17  4:25         ` Lucio De Re
2019-04-16  8:17 ` Mart Zirnask
2019-04-15 15:47 ori
2019-04-02  4:41 [9fans] Git/fs: Possibly Usable ori
2019-04-03 18:29 ` Skip Tavakkolian
2019-04-03 20:23   ` Ori Bernstein
2019-04-04  1:22     ` Ori Bernstein
2019-04-14  9:58       ` [9fans] UI design | enhancements Darren Wise
2019-04-14 11:30         ` Ethan Gardener
2019-04-14 14:19         ` hiro
2019-04-15  5:07         ` Lucio De Re
2019-04-15  6:12           ` Bakul Shah
2019-04-15  6:25             ` Devine Lu Linvega
2019-04-15  6:41               ` Michael Misch
2019-04-15  7:24                 ` Bakul Shah
2019-04-15 11:20                   ` hiro
2019-04-15 14:27                   ` Kurt H Maier
2019-04-15 19:59                 ` Ethan Gardener
2019-04-15 20:04                   ` Michael Misch
2019-04-15 15:10         ` Chris McGee
2019-04-15 15:44           ` Darren Wise
2019-04-15 18:11         ` ab

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).