* Introduction
In software development circles there is a culture of creating so called "awesome lists". Those lists contain links to all kinds of resources for a topic, which can be as broadly defined as "computer science", "software development", "software engineering" or as specific as a single programming language or an area of application of programming languages such as "web development", "machine learning". Probably such lists exist for many other things than programming as well. Their character is mostly informal, which makes them easily extendable. Here is what not to expect from this list:
- comprehensiveness or completeness
- being finished
- always containing the most up to date links to relevant projects
- containing the links to the best options for all purpose or goal
While those things might be desirable, the list is a community effort. It is up to the author and community to share their knowledge. No one knows everything there is to know and new projects are initiated frequently.
The following list is such an "awesome list" for the programming language GNU Guile. Its purpose is to make it easy for people to find tutorials, resources or any kind of knowledge about GNU Guile.
Anyone, who knows something, that should be added to the list, is welcome to suggest edits or make pull requests.
* Manuals
- There is a huge reference manual for GNU Guile on the GNU website: [[https://www.gnu.org/software/guile/manual/]].
* Tutorials
- "Learn Scheme in 15 minutes": [[https://web-artanis.com/scheme.html]]
- guile-tutorial: [[https://notabug.org/cwebber/guile-tutorial]]
* Libraries
- GUIX package search
- website: [[https://hpc.guix.info/browse]]
- Search for example for ~^guile-~ to find many Guile libraries and projects.
** Async
- 8sync
- git repository at Savannah: [[https://savannah.gnu.org/projects/8sync]]
- manual / GNU software manual: [[https://www.gnu.org/software/8sync/manual/html_node/index.html#Top]]
- website / GNU software page: [[https://www.gnu.org/software/8sync/]]
- tutorial: [[https://www.gnu.org/software/8sync/manual/html_node/Tutorial.html#Tutorial]]
** Browser
- Nomad
- git repository at non-GNU Savannah: [[https://savannah.nongnu.org/projects/nomad/]]
- website: [[https://www.nongnu.org/nomad/]]
** Chat clients
*** IRC
- ~guile-irc~
- git repository at GitHub: [[https://github.com/fbs/guile-irc]]
** Compression
- ~guile-zlib~
- git repository at GitHub: [[https://github.com/davexunit/guile-zlib]]
** Configuration
- ~guile-config~
- git repository at GitLab: [[https://gitlab.com/a-sassmannshausen/guile-config]]
** Databases
- Generic
- ~guile-dbi~
- git repository at GitHub: [[https://github.com/opencog/guile-dbi]]
- documentation: [[https://htmlpreview.github.io/?https://github.com/opencog/guile-dbi/blob/master/website/guile-dbi.html]]
- offers MySQL, Postgresql and SQLite3 interfaces
- ~guile-redis~
- git repository at GitHub: [[https://github.com/aconchillo/guile-redis]]
- ~guile-sqlite3~
- git repository at notabug.org: [[https://notabug.org/guile-sqlite3/guile-sqlite3.git]]
- documentation at: ???
- Postgres
- ~guile-squee~
- git repository at notabug.org: [[https://notabug.org/cwebber/guile-squee]]
- documentation at: ???
- WiredTiger ([[http://www.wiredtiger.com/]]
- ~guile-wiredtiger~
- blog post: [[https://hyper.dev/blog/getting-started-with-guile-wiredtiger.html]]
- git repository at: ??? (framagit requires login?)
- ~guile-sparql~: [[https://github.com/roelj/guile-sparql]]
- ~sparqling-genomics~: [[https://github.com/UMCUGenetics/sparqling-genomics]]
** Data structures
*** Purely functional data structures (PDFS)
- ~pdfs~
- git repository at GitHub: [[https://github.com/ijp/pfds]]
- documentation: ???
- ~fectors~
- git repository at GitHub: [[https://github.com/ijp/fectors]]
*** RDF
- ~guile-rdf~
- git repository at framagit: [[https://framagit.org/tyreunom/guile-rdf]]
*** Lenses
- ~guile-lens~
- git repository at GitLab: [[https://gitlab.com/a-sassmannshausen/guile-lens]]
*** Other
- ~copernic~
- git repository at GitHub: [[https://github.com/amirouche/copernic]]
** E-Mail
- GNU Mailutils ??? ([[https://mailutils.org/]])
- ~guile-email~: [[https://guile-email.systemreboot.net/]]
** Event loop
- ~guile-a-sync~
- git repository at GitHub: [[https://github.com/ChrisVine/guile-a-sync]]
- documentation: ?
** FFI - Foreign Function Interface
- ~ffi-helper~ from NYACC
- documentation: [[https://www.nongnu.org/nyacc/ffi-help.html]]
** File formats
*** JSON
- JSON
- ~guile-json~
- on GitHub: [[https://github.com/aconchillo/guile-json]]
- on savannah: [[http://savannah.nongnu.org/projects/guile-json/]]
*** CSV
- ~guile-csv~
- git repository at GitLab: [[https://gitlab.com/NalaGinrut/guile-csv]]
- ~guile-dsv~
- This is more general, but can work with CSV as well.
- git repository at GitHub: [[https://github.com/artyom-poptsov/guile-dsv]]
*** XML
- Guile's standard library SXML implementation
- GNU software manual: [[https://www.gnu.org/software/guile/manual/html_node/SXML.html]]
- Basically your templates become functions or macros.
- The structure of your document is kept as Scheme data structures.
- This avoids having parse the document as a long string into an internal data structure to perform semantic transformations.
- It enables pattern matching without resorting to things like regular expressions and similar shenanigans.
*** Markdown
- ~guile-commonmark~
- git repository at GitHub: [[https://github.com/OrangeShark/guile-commonmark]]
- documentation: ???
*** Texinfo
- Guile standard library texinfo functionality
- GNU software manual page: [[https://www.gnu.org/software/guile/manual/html_node/texinfo.html]]
*** JPEG
- ~guile-jpeg~: a library for parsing JPEG files
- git repository at GitHub: [[https://github.com/guildhall/guile-jpeg]]
***
*** ICS
- ~guile-ics~
- git repository at GitHub: [[https://github.com/artyom-poptsov/guile-ics]]
*** torrent
- ~torrent~
- git repository at GitHub: [[https://github.com/o-nly/torrent]]
- documentation at: ???
*** Other
- If the input is not input from users and is trustworthy, one might be able to leverage read/write of s-expressions instead of using other formats.
** File system
- ~sdupes~, duplicate file detection
- git repository at GitHub: [[https://github.com/sph-mn/sdupes]]
** Game development
- Chickadee
- describes itself as "game development toolkit"
- OpenGL based
- website: [[https://dthompson.us/projects/chickadee.html]]
- manual: [[https://dthompson.us/manuals/chickadee/index.html]]
** Games
- StayAlive
- git repo: [[https://github.com/mwitmer/StayAlive]]
** Graphics
- ~guile-sdl~
- GNU software page: [[https://www.gnu.org/software/guile-sdl/]]
- gnuvola page of examples: [[http://www.gnuvola.org/software/guile-sdl-demos/]]
- gnuvola software page: [[http://www.gnuvola.org/software/guile-sdl-demos/]]
- ~guile-sdl2~
- project website: [[https://dthompson.us/projects/guile-sdl2.html]]
- ~guile-opengl~
- GNU software page: [[https://www.gnu.org/software/guile-opengl/]]
- GNU software manual page: [[https://www.gnu.org/software/guile-opengl/manual/guile-opengl.html]]
- git repository at Savannah: [[http://savannah.gnu.org/projects/guile-opengl]]
- ~guile-cairo~
- git repository at Savannah: [[http://savannah.nongnu.org/projects/guile-cairo]]
- ~guile-jpeg~: a library for parsing JPEG files
- git repository at GitHub: [[https://github.com/guildhall/guile-jpeg]]
*** Image processing
- ~guile-cv~
- GNU software page: [[https://www.gnu.org/software/guile-cv/]]
- git repository at Savannah: [[http://git.savannah.gnu.org/cgit/guile-cv.git]]
** GUI development
- ~guile-gi~
- git repository at GitHub: [[https://github.com/spk121/guile-gi]]
- documentation at: [[https://spk121.github.io/guile-gi/]]
- ~guile-gnome~
- GNU software page: [[https://www.gnu.org/software/guile-gnome/]]
- git repository at Savannah: [[http://git.savannah.gnu.org/cgit/guile-gnome.git]]
- ~guile-gtk~
- website: [[https://www.gnu.org/software/guile-gtk/]]
- CVS repository at non-GNU Savannah: [[http://savannah.nongnu.org/projects/guile-gtk/]]
- ~g-golf~: [[https://www.gnu.org/software/g-golf/]]
** Language
- ~guile-aspell~
- git repository at GitHub: [[https://github.com/spk121/guile-aspell]]
- website: [[http://lonelycactus.com/guile-aspell.html]]
** Logging
- ~guile-logging~
- git repository at GitHub: [[https://github.com/shanecelis/guile-logging]]
TODO: check e-mails from the guile user list for more info
** Machine Learning
- decision tree
- ~guile-ml~
- repository at notabug.org: [[https://notabug.org/ZelphirKaltstahl/guile-ml]]
** Message Queues
- Zero MQ
- ~guile-zmq~
- git repository at GitLab: [[https://gitlab.com/NalaGinrut/guile-zmq]]
- ~guile-simple-zmq~
- git repository at GitHub: [[https://github.com/jerry40/guile-simple-zmq]]
** Network programming
- Guile's standard library networking module
- GNU software manual page: [[https://www.gnu.org/software/guile/manual/html_node/Networking.html]]
- ~guile-curl~
- git repository at GitHub: [[https://github.com/spk121/guile-curl]]
- ~guile-ssh~
- git repository at GitHub: [[https://github.com/artyom-poptsov/guile-ssh]]
- GNU Serveez
- GNU software page: [[https://www.gnu.org/software/serveez/]]
- manual: [[https://www.gnu.org/software/serveez/manual/]]
- git repository at Savannah: [[http://savannah.gnu.org/projects/serveez/]]
- ~serveez-mg~
- git repository at GitHub [[https://github.com/spk121/serveez-mg]]
- based on GNU Serveez
** Parsing
*** Parser Combinators
- ~stis-parser~
- git repository at GitLab: [[https://gitlab.com/tampe/stis-parser]]
*** Parser Generator
- ~nyacc~: Not Yet Another Compiler Compiler
- git repository at Savannah: [[https://savannah.nongnu.org/projects/nyacc]]
- documentation: [[https://www.nongnu.org/nyacc/nyacc-ug.html]]
** Plotting
- ~guile-plotutils~
- git repository at GitHub: [[https://github.com/spk121/guile-plotutils]]
- website: [[https://www.gnu.org/software/plotutils/plotutils.html]]
** Protocols
- X protocol
- ~guile-xcb~
- git repo: [[https://github.com/mwitmer/guile-xcb]]
** Regular expressions
- IrRegular Expressions (Scheme, R[4567]RS)
- website: [[http://synthcode.com/scheme/irregex]]
** REPL
- ~guile-colorized~
- git repository at GitLab: [[https://gitlab.com/NalaGinrut/guile-colorized]]
** RPC
- ~guile-xmlrpc~: [[https://github.com/aconchillo/guile-xmlrpc]]
** Scientific computing and mathematics
- GNU Scientific Library (GSL)
- GNU software page [[https://www.gnu.org/software/gsl/]]
- git repository at Savannah: [[http://savannah.gnu.org/projects/gsl/]]
- wikipedia page: [[https://en.wikipedia.org/wiki/GNU_Scientific_Library]]
- Guile bindings: [[http://community.schemewiki.org/?gee-guile-gsl]]
- Matrix multiplication
- ~guile-ffi-cblas~
- git repository at GitHub: [[https://github.com/lloda/guile-ffi-cblas]]
- Symbolic mathematics
- ~guile-scmutils~
- website: [[https://www.cs.rochester.edu/~gildea/guile-scmutils/]]
- Guile implementation of symbolic mathematics shown in SICP
- Does this exist?
*** Interaction with the Jupyter ecosystem
- ~guix-kernel~
- git repository at gitlab.inria.fr: [[https://gitlab.inria.fr/guix-hpc/guix-kernel]]
- blog post: [[https://hpc.guix.info/blog/2019/10/towards-reproducible-jupyter-notebooks/]]
- ~guile-kernel~
- git repository at GitHub: [[https://github.com/jerry40/guile-kernel]]
** TUI development
- ~guile-ncurses~
- GNU software page: [[https://www.gnu.org/software/guile-ncurses/]]
- git repository at GitHub: [[https://github.com/guildhall/guile-ncurses]]
** Unit Testing
- SRFI-64 ([[https://srfi.schemers.org/srfi-64/srfi-64.html]])
- GNU software Guile manual page: [[https://www.gnu.org/software/guile/manual/html_node/SRFI_002d64.html]]
- ~srfi-64-driver~
- git repository at: ???
- website: [[https://ngyro.com/software/srfi-64-driver.html]]
** Version control systems
- ~guile-git~
- git repository at GitLab: [[https://gitlab.com/guile-git/guile-git]]
- ~guile-semver~
- git repository at ngyro: [[https://git.ngyro.com/guile-semver]]
- website at: [[https://ngyro.com/software/guile-semver.html]]
** Web Development
*** Web frameworks
- Guile's standard library's web module for dealing with web stuff:
- GNU software manual page: [[https://www.gnu.org/software/guile/manual/html_node/Web.html]]
- Guile's standard library's web server:
- GNU software manual page: [[https://www.gnu.org/software/guile/manual/html_node/Web-Server.html]]
- blog post about the performance of Guile's web server: [[http://wingolog.org/archives/2012/03/08/an-in-depth-look-at-the-performance-of-guiles-web-server]]
- documentation as generic interface for web server implementations: [[https://www.gnu.org/software/guile/manual/html_node/Web-Server.html]]
- examples for usage for creating a web app: [[https://www.gnu.org/software/guile/manual/html_node/Web-Examples.html#Web-Examples]]
- GNU Artanis web application frameweork
- GNU software page: [[https://www.gnu.org/software/artanis/]]
- git repository at GitLab: [[https://gitlab.com/NalaGinrut/artanis]]
- official website of the GNU Artanis project: [[https://web-artanis.com/]]
- blog post about GNU Artanis: [[https://dev.to/heroku/an-ode-to-gnu-artanis-2gn3]]
- manual:
- [[https://www.gnu.org/software/artanis/manual/manual.html]]
- [[https://www.gnu.org/software/artanis/manual/html_node/]]
- blog post about using GNU Artanis in a docker container: [[https://nalaginrut.com/archives/2019/09/18/install%20gnu%20artanis%20with%20docker]]
- SPH web app
- git repository at GitHub: https://github.com/sph-mn/sph-web-app
- tekuti
- The git repository unfortunately seems to be dead, because it was hosted at gitorious, a now disfunct git host. Where can the code be found?
- blog post about tekuti: [[https://wingolog.org/projects/tekuti/]]
*** Tooling / Additional libraries
- JSON
- ~guile-json~
- on GitHub: [[https://github.com/aconchillo/guile-json]]
- on savannah: [[http://savannah.nongnu.org/projects/guile-json/]]
- ~guile-www~
- git repository at savannah non-gnu: [[http://savannah.nongnu.org/projects/guile-www/]]
- ~guile-webutils~
- git repository at notabug.org: [[https://notabug.org/cwebber/guile-webutils]]
**** Authorization and authentication
- ~guile-oauth~
- git repository at GitHub: [[https://github.com/aconchillo/guile-oauth]]
- ~guile-jwt~
- git repository on GitHub: [[https://github.com/aconchillo/guile-jwt]]
*** Static website generators
- ~guile-haunt~
- git repository at GitHub: [[https://github.com/guildhall/guile-haunt]]
- SPH static website generator
- git repository at GitHub: [[https://github.com/sph-mn/sph-web-publish]]
*** Template engine
- Guile's standard library SXML implementation
- GNU software manual: [[https://www.gnu.org/software/guile/manual/html_node/SXML.html]]
- Basically your templates become functions or macros.
- The structure of your document is kept as Scheme data structures.
- This avoids having parse the document as a long string into an internal data structure to perform semantic transformations.
- It enables pattern matching without resorting to things like regular expressions and similar shenanigans.
*** Interaction with services
- ~guile-mastodon~
- git repository at framagit: [[https://framagit.org/prouby/guile-mastodon]]
- documentation at: [[https://framagit.org/prouby/guile-mastodon/-/blob/master/doc/guile-mastodon.org]]
*** Web application examples
- ~scheme-todomvc~:
- git repo: [[https://github.com/amirouche/scheme-todomvc]]
- demo: [[https://amirouche.github.io/scheme-todomvc/]]
** Window manager
- ~guile-wm~
- git repo: [[https://github.com/mwitmer/guile-wm]]
** Working with code
- ~guile-syntax-highlight~
- website: [[https://dthompson.us/projects/guile-syntax-highlight.html]]
- repository: seems to be missing
** Other
- ~guile-lib~
- git repository at non-GNU Savannah: [[http://git.savannah.nongnu.org/cgit/guile-lib.git]]
- website at: [[https://www.nongnu.org/guile-lib/]]
- SPH website:
- It has some Guile library and project descriptions and links.
- [[http://sph.mn/]]
* Programming paradigm
** "Object-oriented programming"
- GOOPS
- GNU software manual page: [[https://www.gnu.org/software/guile/manual/html_node/GOOPS.html]]
*** Prototype based
- Shelf
- git repo: [[https://github.com/mwitmer/Shelf]]
** Relational programming
- ~minikanren~
- git repository at GitHub: [[https://github.com/ijp/minikanren]]
- miniKanren uncourse by William Byrd: [[https://duckduckgo.com/?q=minikanren+uncourse&t=h_&iax=videos&ia=videos&iai=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DiCuVTGWNU3s]]
** Functional programming
- Monad implementations
- git repository at GitHub: [[https://github.com/ijp/monad]]
* Tools
** Project management
- ~guile-hall~
- git repository at GitLab: [[https://gitlab.com/a-sassmannshausen/guile-hall]]
- ~homebrew-guile~: [[https://github.com/aconchillo/]]
*** Package managers
- ~guildhall~
- git repository at GitHub: https://github.com/ijp/guildhall
* Blogs
- [[https://hyper.dev/]]
-
* Other
- SPH lib, collection of Guile libraries
- website: [[http://sph.mn/computer/software/sph-lib.html]]
* Other lists of Guile software
- official GNU Guile website library list: [[https://www.gnu.org/software/guile/libraries/]]
- SPH list: [[http://sph.mn/foreign/guile-software.html]]
* Videos / Talks / Presentations
This category is still empty. Help filling it with interesting GNU Guile related videos, talks or presentations!