Monday, January 28, 2013

New GNU Recruits

I saw this lovely drawing over at Máirín Duffy's blog.  She works at RedHat.


Its from a post called FUDcon Lawrence: Overhauling the Fedora release model.  Note the little jumping person and the gap.  This indicates that Fedora understands that there is a barrier between using Fedora distro of GNU/Linux and contributing to it.  This is something they hope to address.

If I replace "Fedora" with "GNU" in the above picture, what happens?
  • Hear about GNU
  • Go to GNU website
  • Download GNU
  • Try out live media
  • Install GNU
  • Use GNU
  • ???
  • Contribute
Let's try it out and see what happens.

Step 1 - Hear about GNU.  Not a problem.  GNU gets mentioned fairly regularly in the press.

Step 2 - Go to GNU website.  There is a web site, www.gnu.org.  The main page is a bit cluttered, but, it exists.  There is a www.gnu.com, which is a snowboard company, but, there's little chance of confusing the two.

Step 3 - Download GNU.  From the main page, there is "What is GNU" and a big green "Download GNU Now" button.  Visually it can get lost because the page is very text-heavy and the button it is almost too big.  But overall, it is functional.  It takes you to the distros page.

This is where is gets more problematic.  First off, there is the big yellow italicized disclaimer "The FSF is not responsible for other web sites, or how up-to-date their information is".  It is highlighted so it must be important.  It sounds scary.  But what does it mean?  Up to this point, the term "FSF" has not been defined and its relationship to GNU has not been defined.

Also, there is no real distinction made between these distros or why or how one would use them.  Since they are treated equally, the first one, "BLAG" becomes the de-facto distro by virtue of its early appearance in alphabetical order.  So clicking on that takes us over to BLAG.
At the very top of Blag is a download link to Live CDs, and clicking on that link brings to an FTP server
Note that we've now implicitly answered the question of What is GNU OS?  GNU OS is Blag's 2011 fully free respin of Fedora's distro of GNU/Linux.

Step 4 - Try out live media.  So I've downloaded the live media.

Cool, but, how do I use it?  What do I do with it?  If I go back to the main Blag page and click on the documentation link, I get
This doesn't look good.  But if I allow the exception I end up at a perfectly respectable wiki.




Step 5 - Install GNU OS.  Installing GNU from live media become the same as installing Fedora from live media the way it was done back in 2011.

Step 6 - Use GNU OS.  Cool.  We're using GNU.

If I go back to the main GNU page to look for information on how to use the distro I've just downloaded, I get nothing general.  There is the documentation to many pieces of software that may or may not appear in that distro, though.

Step 7 - Contribute

On their part, Fedora knows that there is a big leap between using Fedora and contributing to Fedora. For GNU, it isn't just a leap from using GNU OS to contributing to GNU OS.  It is a complete disconnect.

Once someone has downloaded the Blag respin of the Fedora distro of GNU/Linux, what force is there to push them back to GNU the website, or the official GNU software projects?  What force is there to push them to contribute financially to the FSF?

Once someone had made the decision that he or she wants to contribute, he or she can end up back on gnu.org and see this.

Note the categories listed under the Take Action box or the yellow bar:  you can contribute by
  • working on the FSF campaigns
  • contributing to high-priority software projects
  • or maintaining unmaintained software
Notice how everything on that list has either a very low or  a very high level of technical expertise required.  There isn't a good story on how to train up a programmer on the ways of free software.  It is a bit of all-or-nothing. Suppose you wanted to help with one of the technical projects: there isn't really a good tutorial story on learning how to code GNU-style.  There are projects like GNU Hello and documents like the Coding Standards and the Information for Maintainers that sketch out the concepts, but, you would have to know that they are there and where to find them, and the barrier to entry is pretty high.

So, all in all, the flow of moving people from curiosity about GNU OS to using GNU OS to eventually contributing to GNU needs work.

DISCLAIMER: I don't speak for GNU and have no influence over its policies, or management. I am only just barely a member of GNU by virtue of being the maintainer of the ncurses bindings for guile. Guile-ncurses is a project that is so niche and so obscure that it has never been packaged by any distro and never has been downloaded or used by anyone ever, other than me, as far as I can tell. I also used to be a committer on the main Guile project, during the 1.8 to 2.0 transition, but, I've retired from Guile development, mostly.

10 comments:

Ludovic Courtès said...

Very insightful analysis! That points to several areas where concrete improvements can be made.

As for "Download GNU", hopefully GNU Guix will help address that in the near future.

Mike Gran said...

Ludo, I've always though that it would be a lot less confusing if GNU would just offer its own distro. Guix seems like a very capable way to make one.

I've always felt uncomfortable with the whole "GNU/Linux" portmanteau, because a large part of every distro is neither GNU packages or nor Linux kernel.

I know that RMS says that "GNU the OS" includes software that isn't GNU packages. So GNU's role GNU the OS, in my understanding, is that of anthologist: choosing software that belongs in the GNU collection and writing missing parts of the story.

The difficulty, then, is that GNU hasn't decided what to put in its own anthology: it instead focuses on (1) writing stories that get collected in other people's anthologies, (2) pondering what it might include if it were ever to write its own anthology, via the Free Software Directory, and (3) trying to convince other anthologists of what not to put in their collections.

(OK, a really badly extended metaphor...)

It would just be so much easier to explain to others if I could just go to GNU and download an iso of "GNU": an OS built from Linux, GNU packages, and GNOME OS along with other curated packages that focus on freedom.

spectrumgomas said...

Moreover, all these documents (GNU Hello, coding standards...) are for C programming. None is for GNU Guile which it is supposed to use a beginner because it's more friendly. You've done a great explanation. Thanks.

Arne Babenhauserheide said...

That’s a connection I did not make yet - thank you for that!

And since Guix is based on Nix and Nix can build the Hurd, Guix might actually offer the option to run GNU as alternative to GNU/Linux.

Arne Babenhauserheide said...

@Mike: I think your metaphor holds quite well.

@spectrumgomas: A guide for using GNU Guile to write an application would be nice, yes.

Arne Babenhauserheide said...

In the code repo of guile-ncurses, I miss the INSTALL file the README mentions…

Arne Babenhauserheide said...

hm, I need `autoreconf -i` to create INSTALL. Something like the following would be nice:

# HG changeset patch
# User Arne Babenhauserheide
# Date 1359555697 -3600
# Node ID e4a6f76d63f42f26cb531fc79d3f0d7d5e9e73a5
# Parent 7a1e60c82b5b0b990a857095298134fb4f48200a
README: add autoreconf info

diff --git a/README b/README
--- a/README
+++ b/README
@@ -35,7 +35,8 @@
INSTALLATION

For a basic explanation of the installation of the package, see the
-INSTALL file.
+INSTALL file. If there is no INSTALL file here, you might need to call
+`autoreconf -i` to generate it.

*important* If you want to use the wide ncurses library with Unicode
support, you need to run configure using the "--with-ncursesw" option.

Mike Gran said...

@Arne - thanks for taking the time to check it out. I'll get that fixed.

Arne Babenhauserheide said...

@Mike: Actually guile-ncurses looks pretty neat. It took me a bit to get guile-ncurses-shell running (mainly trying to install guile-ncurses in the source dir instead of systemwide, which I dropped after some times), but now I see the Hello World! - and I hope I’ll find a reason to use it in some project.

I think it’s a pretty nice way to start with scheme.

Arne Babenhauserheide said...

PS: I directly cloned the git repo. That’s much better for me than getting sources from an FTP :)