unofficial mirror of guix-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: Katherine Cox-Buday <cox.katherine.e@gmail.com>
To: Blake Shaw <blake@nonconstructivism.com>
Cc: Guix Devel <guix-devel@gnu.org>
Subject: Re: Guix Documentation Meetup
Date: Sun, 12 Dec 2021 21:50:02 -0600	[thread overview]
Message-ID: <87sfuxfyps.fsf@gmail.com> (raw)
In-Reply-To: <87lf0q2m7n.fsf@nonconstructivism.com> (Blake Shaw's message of "Sun, 12 Dec 2021 16:42:36 +0700")

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


  parent reply	other threads:[~2021-12-13  3:51 UTC|newest]

Thread overview: 51+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-12-10 22:40 Guix Documentation Meetup Blake Shaw
2021-12-10 23:18 ` Ryan Prior
2021-12-11 18:55   ` Katherine Cox-Buday
     [not found]     ` <87lf0q2m7n.fsf@nonconstructivism.com>
2021-12-13  3:50       ` Katherine Cox-Buday [this message]
2021-12-30 21:52         ` adriano
2022-01-06 15:58           ` Katherine Cox-Buday
2021-12-13  8:29 ` zimoun
2021-12-14 16:01   ` Katherine Cox-Buday
2021-12-14 17:38     ` Luis Felipe
2021-12-14 17:52       ` Katherine Cox-Buday
2021-12-20 17:45 ` Guile documentation Ludovic Courtès
2021-12-21 11:01   ` Blake Shaw
2021-12-21  6:41 ` Guix Documentation Meetup adriano
  -- strict thread matches above, loose matches on Subject: below --
2022-03-10 17:02 Raghav Gururajan
2022-03-10 17:11 ` Raghav Gururajan
     [not found] <mailman.34870.1641617883.18145.guix-devel@gnu.org>
2022-01-08  8:42 ` calcium
2022-01-08 11:35   ` Ricardo Wurmus
2022-01-08 11:49     ` calcium
2022-01-08 16:24     ` Matt
2022-01-08 18:58       ` Ricardo Wurmus
2022-01-08 19:06       ` Leo Famulari
2022-01-09 21:12         ` Matt
2022-01-10  9:05           ` André A. Gomes
2022-01-10 13:40             ` Matt
2022-01-10 16:05               ` André A. Gomes
2022-01-11 18:45                 ` Matt
2022-01-12 18:41           ` Leo Famulari
2022-01-13  0:04             ` Matt
2022-01-13  0:22       ` Leo Famulari
2022-01-13 13:15         ` ilmu
2022-01-08 13:41   ` Matt
2022-01-08 14:09     ` Julien Lepiller
2022-01-08 14:54       ` Matt
2022-01-08 14:39     ` Josselin Poiret
2022-01-08  4:52 Matt
2022-01-10  9:47 ` Oliver Propst
2022-01-10 13:15   ` Matt
2022-01-11 16:24     ` jgart
2022-01-12  0:59       ` Matt
2022-01-12  1:20         ` jgart
2022-01-12  2:57           ` Matt
2022-01-12  3:10             ` Matt
2021-12-13 13:45 Blake Shaw
2021-12-13 15:55 ` Katherine Cox-Buday
2021-12-13 12:41 Blake Shaw
2021-12-13 12:33 Blake Shaw
2021-12-15 17:37 ` Blake Shaw
2021-12-15 19:12   ` zimoun
2021-12-15 22:37     ` jgart
2021-12-11  1:42 Blake Shaw
2021-12-09  9:28 jgart

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://guix.gnu.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87sfuxfyps.fsf@gmail.com \
    --to=cox.katherine.e@gmail.com \
    --cc=blake@nonconstructivism.com \
    --cc=guix-devel@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

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 read-only IMAP folder(s) and NNTP newsgroup(s).