[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Guix Documentation Meetup
From: |
Katherine Cox-Buday |
Subject: |
Re: Guix Documentation Meetup |
Date: |
Sun, 12 Dec 2021 21:50:02 -0600 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/27.2 (gnu/linux) |
Blake Shaw <blake@nonconstructivism.com> writes:
> I'd love to know where you found trouble so that I can take that into
> consideration when developing a design strategy for the makeover.
When reading this, please keep in mind that I have a lot of gratitude for the
various maintainers of this software and its respective documentation.
Communication is very difficult, and relaying my experience and opinions is
meant to convey that experience, and not to criticize anyone's efforts.
I think my frustration stems from the confluence of me not being familiar with
scheme, how Guix writes scheme, how scheme the language and ecosystem work, the
tools we have available to us, and then finally the documentation.
Not being a schemer (yet?), I can't speak with much authority, aside from the
fact that I've written code in many languages, and most of these pain points
are well addressed in others.
Usually, my frustrated workflow goes like this (warning: ignorance on display!
:p):
- Identify something in Guix I want to do
- Open (or create) a file
- Start geiser
- Start writing Guile
- Come upon a semantic structure I want to write, and realize I don't know the
Guile way to do it.
- In geiser, run =,a thing-i-want-to-look-for= (this is supposedly an apropos
command that is supposed to search symbols for you). The command returns
nothing. I realize I have to import the module implementing the thing I'm
looking for first, thus defeating the purpose.
- Before, I would then go here[1] and try and textually search for the symbol.
I have recently discovered the emacs function: =helm-info-guile= which makes
searching a bit faster.
- Find that there are multiple, competing, modules which do the same thing in
different ways.
- Realize I don't know which one to use, or which one Guix would prefer.
- Sometimes, realize that Guix has their own wrapper around one of the
modules, and learn that something I thought was standard scheme is actually
a Guix neologism.
- Import one and try it. Maybe import another and try it. Lose track of why
I've imported things as I'm trying them because the module names have no
indication of what they implement.
- Wish that Guix had a standard to prefix function calls with their module, as
we do with =license:=.
- Have no way of automatically and programatically cleaning up imports to work
around this.
- Forget what I was even trying to accomplish. Go to bed and try again
tomorrow!
Specific to Guile documentation, I guess if I boil the above down, it would be
something like:
Early in the documentation, directly address the intrinsic fragmentation of the
scheme ecosystem, and how a new Guiler is meant to navigate that. Do so in
terms that don't rely on experience with the Scheme ecosystem.
The Guile reference manual has this[2] section which, to me, is a paragraph
which touches on this, and then much later has a blurb[3] on what SRFI is. I
had no idea what =ice-9= was, and the first mention[5] of it in the manual is
one of its modules. To my knowledge, what =ice-9= is, or why it's called that,
is never addressed. It appears[5] I am not the first to be confused by this.
As a newcomer to Guile, and to scheme, I would expect Guile to give me its
opinion of how to do things (i.e. which modules to prefer, what is considered
"standard" in most schemes) until I've written enough Guile to form my own. As
it's written, my impression is that the documentation relies on the reader
knowing a lot about scheme coming in.
I feel there just needs to be an easier gradient for people trying to use Guile
as their first scheme. It is not specifically Guile's problem, but as a service
to its developers, the meta-topic should be addressed so a new developer is not
left confused.
When we put a lot of work into something, it's really easy to fall in love with
the idiosyncrasies of the thing, and to lose sight of what it's like to come
into an ecosystem with no context. This can result in addressing things that
feel important to us, the expert, but are really much further up the ladder of
complexity.
When writing a landing page for a language, I feel the following is important:
*Don't overwhelm your newcomers.*
Your landing page should have few links, and they should directly address
high-level questions:
- What am I looking at?
- How is what I'm looking at organized?
- What should people like me (e.g. non-programmers, programmers, schemers,
people who don't speak English) be reading?
- A link to a site which provides easy to use symbol lookup.
The documentation can fan out in complexity from there, but the landing page
must not be overwhelming.
Anyway, those are my opinions :)
[1] - https://www.gnu.org/software/guile/manual/guile.html
[2] - https://www.gnu.org/software/guile/manual/guile.html#Guile-Scheme
[3] - https://www.gnu.org/software/guile/manual/guile.html#SRFI-Support
[4] - https://www.gnu.org/software/guile/manual/guile.html#ice_002d9-optargs
[5] - https://lists.gnu.org/archive/html/guile-devel/2010-07/msg00045.html
--
Katherine
Re: Guix Documentation Meetup, zimoun, 2021/12/13
Guile documentation, Ludovic Courtès, 2021/12/20
Re: Guix Documentation Meetup, adriano, 2021/12/21
Re: Guix Documentation Meetup, Blake Shaw, 2021/12/10
Re: Guix Documentation Meetup, Blake Shaw, 2021/12/13