* Re: Guix Documentation Meetup
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
2021-12-13 8:29 ` zimoun
` (2 subsequent siblings)
3 siblings, 1 reply; 13+ messages in thread
From: Ryan Prior @ 2021-12-10 23:18 UTC (permalink / raw)
To: Blake Shaw; +Cc: jgart, Guix Devel
‐‐‐‐‐‐‐ Original Message ‐‐‐‐‐‐‐
On Friday, December 10th, 2021 at 10:40 PM, Blake Shaw <blake@nonconstructivism.com> wrote:
> tldr: is there also room to discuss contributing -- and possibly doing a sizeable makeover to -- the Guile documentation?
Absolutely. The Guile docs are unusable and make Guile a pain to work with. I say this as an experienced lisp & scheme user with decades of experience now in elisp, racket, and clojure. After bouncing off of guile projects for years, last November I decided to do Advent of Code in Guile to force myself to finally get the hang of it & get productive. I gave up after a week, every task was unpleasant and I was reinventing basic language features because I couldn't find out where/if they were implemented in some obscure SRFI or ice-9 module. Like you wrote, the code I'd finally end up was fine, the language itself seems nice, but it's just plain inaccessible.
I've found the Guile IRC channel to be polite and encouraging, but also very self-satisfied, which makes it hard to feel heard as a Guile hacker who's struggling. I hesitate to tackle any kind of nontrivial problem with Guile because I have no confidence I will find tools that save me time; I'm proficient with a half dozen other languages, including multiple lisps, which provide much better support. So even though I really want to learn Guile,because of Guix, Shepherd and other cool software written in it, I'm no more likely to choose Guile for a software project today than I was 3 years ago when I just started learning it.
When I talk to experienced hackers in the Guile community I get the sense they've just accepted that yeah, the only way to get anywhere is to cold memorize the most popular ~80 SRFIs or implement everything you need yourself. One person I talked to was like "oh yeah Guile's great, you just have to implement your own standard library like I did."
I'd love to hear your talk, if you're up to present at the Guix meetup I'll definitely come and listen. I'm also happy to do what I can to help drive Guile adoption, create a great learning experience around it, and finally start to build the language community that Guile is lacking.
Cheers,
Ryan
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: Guix Documentation Meetup
2021-12-10 23:18 ` Ryan Prior
@ 2021-12-11 18:55 ` Katherine Cox-Buday
[not found] ` <87lf0q2m7n.fsf@nonconstructivism.com>
0 siblings, 1 reply; 13+ messages in thread
From: Katherine Cox-Buday @ 2021-12-11 18:55 UTC (permalink / raw)
To: Ryan Prior; +Cc: Guix Devel, jgart
Ryan Prior <rprior@protonmail.com> writes:
> I've found the Guile IRC channel to be polite and encouraging, but also very
> self-satisfied, which makes it hard to feel heard as a Guile hacker who's
> struggling.
Consider reaching out to Andy Wingo (wingo in IRC in #guile). I hope I am not laying this issue at his feet by suggesting this, but I have interacted with him a handful of times, and he is a genuinely nice and helpful person, and also a guile maintainer. I am pretty confident he would want to help make this problem better -- especially if there are those willing to do some work.
Good luck! I have also found myself hunting around for basic functionality, and not being a guiler, nor even a schemer (I love lisps, but I mostly write emacs-lisp and common-lisp), wondering why things are fragmented into weird modules. It's a shame, because I feel like I would be contributing bigger features to Guix if I could stop bouncing off the language.
--
Katherine
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: Guix Documentation Meetup
2021-12-10 22:40 Guix Documentation Meetup Blake Shaw
2021-12-10 23:18 ` Ryan Prior
@ 2021-12-13 8:29 ` zimoun
2021-12-14 16:01 ` Katherine Cox-Buday
2021-12-20 17:45 ` Guile documentation Ludovic Courtès
2021-12-21 6:41 ` Guix Documentation Meetup adriano
3 siblings, 1 reply; 13+ messages in thread
From: zimoun @ 2021-12-13 8:29 UTC (permalink / raw)
To: Blake Shaw, jgart; +Cc: Guix Devel
Hi,
On Sat, 11 Dec 2021 at 05:40, Blake Shaw <blake@nonconstructivism.com> wrote:
> --
> tldr: is there also room to discuss contributing -- and possibly doing a
> sizeable makeover to -- the *Guile* documentation? If so, I could give a
> short 5 - 10 minutes presentation of what I think should be done (and
> would volunteer to do).
> --
Cool!
Minor comments trying to feed this worth proposal.
> I don't know if this is the correct forum for it, but I personally think
> the biggest documentation obstacle in Guix at the moment isn't so much
> in Guix, but instead in Guile. I found Guix via SICP & Racket about a
> year ago, and I remained a happy Racket hacker until a couple months ago
> when I decided to devote my free time to learning Guile in hopes of
> graduating to a Guix sensei one day.
I agree that the learning path in Guile land is not always smooth.
However, I do not think mastering Guile and/or its specificity is a
requirement to be a “Guix sensei”. Obviously, better Guile
documentation improves the ecosystem, then it is an overall better. :-)
> While I've come to love Guile, compared to my experience with Racket its
> been quite burdensome for me to get in the hang of, something I attribute
> primarily to the structure of the docs, and not due to it being in any
> way more difficult than Racket. While with Racket I was writing
> useful programs in the standard #lang within my first week, with Guile
> I often find that what should be almost trivial winds up with a lot of
> time lost just trying to navigate and understand the docs. When I do
> figure things out, it turns out to be no more difficult than the equivalent
> in Racket, but a lack of consistency in the path that leads there in the
> docs cause hangups, which has made trivial scripts that should take an hour
> become weekend projects.
Well, I am not convinced it is because the structure of the docs.
Instead, I think it is because it is missing docs. :-)
If we compare apple to apple, here are the entry points:
https://docs.racket-lang.org/
https://www.gnu.org/software/guile/learn/
and so the Guile manual
https://www.gnu.org/software/guile/manual/guile.html
is a reference manual, which correspond to, mainly
https://docs.racket-lang.org/reference/
and also,
https://docs.racket-lang.org/guide/
I am not convinced you started Racket by these ones. ;-)
Indeed, one document on the Guile side vs two documents on Racket side;
the Guile manual could be split, I do not know if the core issue here.
Instead, IMHO, what is missing are all the others. :-) For instance,
https://htdp.org/
which is a really smooth introduction. Somehow, it appears to me
that it is missing an introduction, a similar document as,
https://www.gnu.org/software/emacs/manual/html_mono/eintr.html
> I know this isn't the Guile list, but when I've written on this topic in
> the IRC I've had no response, which make me think docs could be a
> bit of a bikeshedding topic in the community. But as Guile is
> fundamental to Guix and theres a lot of crossover btwn the communities,
> it seems like this could be a good time to raise these suggestions.
I agree. For what it is worth, I tried once to quickly explain monad,
with the aim of “Store Monad“ in mind,
https://guix.gnu.org/manual/devel/en/guix.html#The-Store-Monad
After several discussions with strong Guix hackers, it appears to me
that they missed the general concept of monad, at least it was vague.
Therefore, I tried to write a simple explanation,
https://simon.tournier.info/posts/2021-02-03-monad.html
Bah, the other part has never seen the light, another story. :-) Long
time ago, Pierre wrote down a quick introduction to Scheme, which ended
into the Cookbook,
https://guix.gnu.org/cookbook/en/guix-cookbook.html#Scheme-tutorials
From my point of view, the missing documentation is the one between
newcomer and Reference manual. For instance, setup a Guix/Guile
environment is not straightforward; Geiser helps, but even after some
time, I am often still fighting against it, and I do not know what
exists outside the Emacs world.
On the Guile land, one feature which really annoys me is the poor
discoverability from REPL; for an instance,
--8<---------------cut here---------------start------------->8---
$ guix repl
scheme@(guix-user)> ,a fold-packages
scheme@(guix-user)> ,use(gnu packages)
scheme@(guix-user)> ,a fold-packages
(gnu packages): fold-packages #<procedure fold-packages (proc init #:optional modules #:key select?)>
scheme@(guix-user)> ,d fold-packages
Call (PROC PACKAGE RESULT) for each available package defined in one of
MODULES that matches SELECT?, using INIT as the initial value of RESULT. It
is guaranteed to never traverse the same package twice.
--8<---------------cut here---------------end--------------->8---
well, IPython, GHCi, UTop (to name some I use) provide a complete
different experience. Well, maybe resuming this discussion [1] is
worth.
1: <https://yhetil.org/guix/86d00evkmr.fsf@gmail.com/>
> I've jotted down some notes on several concrete examples of where the docs
> diverge from stylistic consistency, as well as some light analysis as to
> why such seemingly small inconsistencies can lead to such hangups in the learning
> process. If folks would be interested in me presenting a short 5-10min
> presentation of these notes, I'd be happy to share.
I would be interested to listen your ideas, here, there or overthere. :-)
Cheers,
simon
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: Guix Documentation Meetup
2021-12-13 8:29 ` zimoun
@ 2021-12-14 16:01 ` Katherine Cox-Buday
2021-12-14 17:38 ` Luis Felipe
0 siblings, 1 reply; 13+ messages in thread
From: Katherine Cox-Buday @ 2021-12-14 16:01 UTC (permalink / raw)
To: zimoun; +Cc: Guix Devel, jgart
Here is some analysis on various popular languages' documentation landing pages. I did this on Sunday, but I held it back from my previous message because it was already quite long, and I was worried this would be seen as over-critical and maybe raise the ire of various language fans.
But I think it might add to the conversation and help create better Guile documentation, so I'll risk it :)
For context, the only language on this list I really know well is Go.
Guile:
======
- Tutorial for extending a C program with Guile
- The manual
- Scheme Resources
- "The Revised^6 Report on the Algorithmic Language Scheme"
- "" but 7
- "" but 5
- (more links that IMO are only meaningful if you already know Scheme)
Overall, I'm left feeling like I have a clear sense of direction because it's apparent to me that I should click through to the reference manual. Experience with the GNU ecosystem helps here. I am left wondering whether I should click on any of the other links, and what I might be missing by not doing so. But clicking through reveals lengthy documents that I don't know if I should read yet or not.
Once I do click through to the manual, I am in a pretty familiar GNU document, and the other comments about this document become applicable.
The one thing I would add here is that other languages have a separate symbol/library explorer with a few more bells and whistles to support jumping around. It would be nice if Guile not only curated opinions on which modules to use, but used a separate, more featureful site for that.
Go (https://go.dev/doc/):
=========================
- A blurb trying to sell Go
- A link on how to install Go
- Links to tutorials and opinions on how to write Go.
- Links for very specific topics like editor plugins and fuzzing.
Overall, this seems cluttered and disorganized. For some reason there are several links to tutorials on very specific topics before there is a link to look at the packages in the standard library. These tutorials seem to be interspersed with more fundamental, important, beginner topics, and I'm not sure why.
The link to look at the documentation for the standard library -- something a developer will be working with a lot -- is titled "Package Documentation", too generic a term.
Once I do click through, there is a great site for navigating the standard library which explains what packages are for, and provides various navigation elements for jumping around.
Rust (https://www.rust-lang.org/learn):
=======================================
- A link to a book
- A link to a course
- A link to rust by example
(note the support for 3 different kinds of learning styles)
- Core documentation
- The standard library (here is, by way of being the standard library, an
opinion I can borrow for how things are done).
- (more links I skipped because I don't know rust, and I"d start with the
above)
Overall, I am left feeling like I know where I would start depending on how I want to learn, and have a quick reference to the standard library's API.
Once I click through to the standard library, it suggests to me how to read it, and addresses the meta-question of what I'm looking at. I haven't used this site, but clicking around, it appears to have decent navigation elements for jumping around.
Python (https://www.python.org/doc/):
=====================================
- A blurb on how the different ways to consume the documentation.
- Links grouped by self-reported expertise with the language
If I click on Beginner's guide:
- Link to explanation of what Python is
- Blurb on how to get Python
- Links for non-programmers to learn
- Links for programmers to learn
- Acknowledgment that I've been reading wiki pages. I now have an
explanation for why what I've been reading feels cobbled together.
- A link to a separate beginner's guide overview with more general
information about the language.
- A long list of books, websites, and tutorials (note there is no opinion
given on which I should begin with)
Overall, I am left feeling overwhelmed, and like I must independently find a curated tutorial which will give me opinions I can use until I can form my own.
But wait! Had I clicked on "Python Docs" instead of "Beginner's Guide", I get something much easier to consume:
- A Tutorial which simply states "start here". As a newbie, OK!
- This looks like a book
- Library reference
- Language reference
- General links to support usage
This is not overwhelming, and I feel like I have a small enough set of options to click through that I can find what I need. Further, it looks like a curated opinion of how I should do things, and in what order.
--
Katherine
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: Guix Documentation Meetup
2021-12-14 16:01 ` Katherine Cox-Buday
@ 2021-12-14 17:38 ` Luis Felipe
2021-12-14 17:52 ` Katherine Cox-Buday
0 siblings, 1 reply; 13+ messages in thread
From: Luis Felipe @ 2021-12-14 17:38 UTC (permalink / raw)
To: Katherine Cox-Buday; +Cc: zimoun, Guix Devel, jgart
[-- Attachment #1.1: Type: text/plain, Size: 1762 bytes --]
Hi,
On Tuesday, December 14th, 2021 at 4:01 PM, Katherine Cox-Buday <cox.katherine.e@gmail.com> wrote:
> Guile:
>
> - Tutorial for extending a C program with Guile
> - The manual
> - Scheme Resources
> - "The Revised^6 Report on the Algorithmic Language Scheme"
> - "" but 7
> - "" but 5
> - (more links that IMO are only meaningful if you already know Scheme)
For what it's worth, the intention with the structure of the Learn section was to put first introductory, prescriptive documentation about the language and what is possible to do with it. So:
+ Tutorials (Guides, etc.)
+ Reference manuals
+ Scheme resources
This documentation was supposed to fill some of the gaps that have been already mentioned in this thread and other previous conversations during the years in other channels. Unfortunately, the Tutorials section hasn't seen any additions since the day the website design was updated.
To me, the idea was to focus on building the Tutorials section gradually because, I thought, the reference and Scheme resources were relatively complete (except for the discoverability of SRFIs and how to use them in your own project when they don't come with Guile). I suggested something like this for tutorials:
+ Hello Guile: Getting Started (An overview of programming, and how to start
with Guile)
+ Hello Guile: Let's develop a console application
+ Hello Guile: Let's develop a desktop application
+ Hello Guile: Let's develop a web application
+ Hello Guile: Let's develop a 2D game
+ Hello Guile: Let's package your software for distribution (with Guix)
I guess it is a matter of filling the blanks, which is a lot of work you have to enjoy doing and have enough time to do.
[-- Attachment #1.2: publickey - luis.felipe.la@protonmail.com - 0x12DE1598.asc --]
[-- Type: application/pgp-keys, Size: 1815 bytes --]
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 509 bytes --]
^ permalink raw reply [flat|nested] 13+ messages in thread
* Guile documentation
2021-12-10 22:40 Guix Documentation Meetup Blake Shaw
2021-12-10 23:18 ` Ryan Prior
2021-12-13 8:29 ` zimoun
@ 2021-12-20 17:45 ` Ludovic Courtès
2021-12-21 11:01 ` Blake Shaw
2021-12-21 6:41 ` Guix Documentation Meetup adriano
3 siblings, 1 reply; 13+ messages in thread
From: Ludovic Courtès @ 2021-12-20 17:45 UTC (permalink / raw)
To: Blake Shaw; +Cc: Guix Devel, jgart
Hi Blake,
Blake Shaw <blake@nonconstructivism.com> skribis:
> While I've come to love Guile, compared to my experience with Racket its
> been quite burdensome for me to get in the hang of, something I attribute
> primarily to the structure of the docs, and not due to it being in any
> way more difficult than Racket. While with Racket I was writing
> useful programs in the standard #lang within my first week, with Guile
> I often find that what should be almost trivial winds up with a lot of
> time lost just trying to navigate and understand the docs. When I do
> figure things out, it turns out to be no more difficult than the equivalent
> in Racket, but a lack of consistency in the path that leads there in the
> docs cause hangups, which has made trivial scripts that should take an hour
> become weekend projects.
IWBN if we could take advantage of your fresh eye to restructure the
Guile manual in a way that makes it more convenient.
Guile has changed a lot since the manual was initially written, a lot of
sections were added, some removed, but we probably didn’t take the time
to sit down and see how to restructure it accordingly.
So if you have a specific structure in mind, or if you remember
precisely what was hard to find and located in a unexpected section,
please let’s take advantage of that!
Thanks,
Ludo’.
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: Guile documentation
2021-12-20 17:45 ` Guile documentation Ludovic Courtès
@ 2021-12-21 11:01 ` Blake Shaw
0 siblings, 0 replies; 13+ messages in thread
From: Blake Shaw @ 2021-12-21 11:01 UTC (permalink / raw)
To: Ludovic Courtès; +Cc: Guix Devel, jgart
[-- Attachment #1: Type: text/plain, Size: 2018 bytes --]
Hi Ludo,
(replying to this email from my other email address because I can't seem to
find it in gnus, which I only recently switched to)
For sure. I'm preparing a little document that provides an analysis of pain
points in the docs, which I'll hopefully have done by the end of this week
and can send to the group. I'll be mostly focused on the general
organizational structure of the docs and will offer solutions that if
everyone agrees to I'll go ahead and start putting to work.
Ez,
Blake
On Tue, Dec 21, 2021, 01:57 Ludovic Courtès <ludo@gnu.org> wrote:
> Hi Blake,
>
> Blake Shaw <blake@nonconstructivism.com> skribis:
>
> > While I've come to love Guile, compared to my experience with Racket its
> > been quite burdensome for me to get in the hang of, something I attribute
> > primarily to the structure of the docs, and not due to it being in any
> > way more difficult than Racket. While with Racket I was writing
> > useful programs in the standard #lang within my first week, with Guile
> > I often find that what should be almost trivial winds up with a lot of
> > time lost just trying to navigate and understand the docs. When I do
> > figure things out, it turns out to be no more difficult than the
> equivalent
> > in Racket, but a lack of consistency in the path that leads there in the
> > docs cause hangups, which has made trivial scripts that should take an
> hour
> > become weekend projects.
>
> IWBN if we could take advantage of your fresh eye to restructure the
> Guile manual in a way that makes it more convenient.
>
> Guile has changed a lot since the manual was initially written, a lot of
> sections were added, some removed, but we probably didn’t take the time
> to sit down and see how to restructure it accordingly.
>
> So if you have a specific structure in mind, or if you remember
> precisely what was hard to find and located in a unexpected section,
> please let’s take advantage of that!
>
> Thanks,
> Ludo’.
>
>
[-- Attachment #2: Type: text/html, Size: 2622 bytes --]
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: Guix Documentation Meetup
2021-12-10 22:40 Guix Documentation Meetup Blake Shaw
` (2 preceding siblings ...)
2021-12-20 17:45 ` Guile documentation Ludovic Courtès
@ 2021-12-21 6:41 ` adriano
3 siblings, 0 replies; 13+ messages in thread
From: adriano @ 2021-12-21 6:41 UTC (permalink / raw)
To: Blake Shaw, jgart; +Cc: Guix Devel
Il giorno sab, 11/12/2021 alle 05.40 +0700, Blake Shaw ha scritto:
>
> hiya guix,
>
> @cybersyn from IRC here, I recently contributed my first package,
> [notcurses]
>
> --
> tldr: is there also room to discuss contributing -- and possibly
> doing a
> sizeable makeover to -- the *Guile* documentation? If so, I could
> give a
> short 5 - 10 minutes presentation of what I think should be done (and
> would volunteer to do).
> --
I'm reading this on december 21st
I suppose the documentation meetup happened already and I don't know if
you gave your illustration of your notes
I, for one, would LOVE to hear it
Yes the Guile experience is abysmal, awful, actively rejecting
beginners/newcomers
I've been wandering in the Guile manual, on and off, for years now and
I still can't make any sense of it
If I have a curiosity I still can't find my way around to such thing in
the manual, most of my discoveries have been by pure chance
Often, I try to re-read the same thing a few months later and I can't
find it again
Everytime I attempted something in Guile I've been frustrated
I myself have done a so called vlog where I show how to read a file in
Guile
I also have a general view of packaging and distributing Guile packages
that I gained by some very hard work that lasted a couple of years but
I was discouraged in doing more videos
Not only previous knowledge of the GNU system is a not declared hard
requirement
Often, previous knowledge of other things is required too
For example the new exceptions system is obscure, you're required to
know the one from Common Lisp in order to undertsand the one in Guile
Or,as another example, I stumbled in an example made in python of a
hashmap (similar to the ones very common in Clojure) and I got that
Good luck with data structured in Scheme
Or, the machinery for manipulating xml (and json ?) trees is discussed
in academic (!!) papers that present the code in Haskell, so you need
to learn Haskell in order to read that
The curse of knowledge in the Guile world is tragic
> I think I can personally offer a lot in terms of contributing to
> documentation. While I don't serious experience w/technical writing,
> prior to the pandemic I was doing my PhD in philosophy of
> mathematics,
> so I come from a cross-disciplinary background that involves the
> often
> difficult area of communicating new, formal ideas to previously
> unexposed readers. I've also made a living as a new media artist
> since
> 2009, working mostly in C and C++ based frameworks, so I also have
> some
> knowledge of the difficulties "crafters" have when learning new
> development systems.
That's all good. I love that you noticed the problem and are offering a
fresh perspective
> I don't know if this is the correct forum for it, but I personally
> think
> the biggest documentation obstacle in Guix at the moment isn't so
> much
> in Guix, but instead in Guile.
Absolutely, yes
> I found Guix via SICP & Racket about a
> year ago, and I remained a happy Racket hacker until a couple months
> ago
> when I decided to devote my free time to learning Guile in hopes of
> graduating to a Guix sensei one day.
Not only a Guix sensei but maybe a Guile sensei
Why has Guile only Guix ?
Why couldn't we have more nice things made in Guile ?
> While I've come to love Guile, compared to my experience with Racket
> its
> been quite burdensome for me to get in the hang of, something I
> attribute
> primarily to the structure of the docs, and not due to it being in
> any
> way more difficult than Racket. While with Racket I was writing
> useful programs in the standard #lang within my first week, with
> Guile
> I often find that what should be almost trivial winds up with a lot
> of
> time lost just trying to navigate and understand the docs. When I do
> figure things out, it turns out to be no more difficult than the
> equivalent
> in Racket, but a lack of consistency in the path that leads there in
> the
> docs cause hangups, which has made trivial scripts that should take
> an hour
> become weekend projects.
>
> I know this isn't the Guile list, but when I've written on this topic
> in
> the IRC I've had no response, which make me think docs could be a
> bit of a bikeshedding topic in the community. But as Guile is
> fundamental to Guix and theres a lot of crossover btwn the
> communities,
> it seems like this could be a good time to raise these suggestions.
Oh I love this !
> I've jotted down some notes on several concrete examples of where the
> docs
> diverge from stylistic consistency, as well as some light analysis as
> to
> why such seemingly small inconsistencies can lead to such hangups in
> the learning
> process. If folks would be interested in me presenting a short 5-
> 10min
> presentation of these notes, I'd be happy to share.
yes pleeeease !!!
> Sorry for such a long-winded message! Personally, good documentation
> is
> absolutely essential, and I feel like I could give Guile's docs a
> serious makeover while I'm still at the early stage of my plunge and
> have a perspective on the psychology of not-understanding --
> something
> that won't last long!
Oh God, did you give this talk ?
Is a recordng available ?
If it's not, you should make a vlog !
Please !
>
> ez,
> blake
>
^ permalink raw reply [flat|nested] 13+ messages in thread