dev.metalisp.survey/README.org

263 lines
8.9 KiB
Org Mode
Raw Normal View History

2024-06-09 13:02:05 +02:00
#+title: dev.metalisp.survey
#+author: Marcus Kammer
#+email: marcus.kammer@metalisp.dev
2024-06-09 14:13:23 +02:00
* dev.metalisp.survey
2024-06-24 19:08:19 +02:00
Made with Love ❤️ and Common Lisp
2024-07-03 17:37:20 +02:00
** Disclaimer
2024-07-04 08:31:42 +02:00
Libre software (LS) is often misunderstood as entirely free, including support
and maintenance. While LS is freely available to use, modify, and distribute,
users bear the responsibility for its integration, upkeep, and
2024-07-03 17:37:20 +02:00
troubleshooting. Unlike commercial software, which typically includes support
2024-07-04 08:31:42 +02:00
services, LS relies on community or paid third-party support, if
2024-07-03 17:37:20 +02:00
available. This model empowers users with flexibility and control but requires
2024-07-04 08:31:42 +02:00
a commitment to managing the software effectively. Therefore, adopting LS
2024-07-03 17:37:20 +02:00
demands a proactive approach to handling any issues and ensuring the software
meets organizational needs.
2024-06-09 14:13:23 +02:00
** Introduction
2024-06-17 22:25:59 +02:00
2024-07-05 16:40:07 +02:00
I am developing a web application using Common Lisp, specifically tailored for
efficiently administering the System Usability Scale (SUS), user experience
questionnaires, and VISAWI to streamline usability evaluations. This
application not only presents these various questions and collects responses
but also simplifies the entire process of gathering and analyzing usability
feedback. Designed to enhance the ease of creating, managing, and integrating
questionnaires within existing websites or software systems, it leverages
flexible templates to offer high levels of reusability and adaptability. The
software allows for the synthesis of data from multiple questionnaires into a
single study, enabling deeper insights. As a self-hosted solution, it provides
enhanced data protection, granting users full control over their data—a crucial
feature in environments handling sensitive data. This makes it an invaluable
tool for research projects, market research, and other sectors that require
precise data collection and analysis.
2024-06-17 22:25:59 +02:00
** Design Goals
1. *Integration*: The app integrates seamlessly into existing digital
platforms, enhancing user experience and simplifying data capture.
2. *Reusability and Adaptability*: Customizable templates allow for the
creation of consistent and repeatable survey formats suitable for various
applications.
3. *Data Synthesis*: It supports combining data from multiple questionnaires
into a single study, providing broader and more comprehensive analytical
insights.
4. *Privacy and Control*: With self-hosting, the software ensures complete data
sovereignty and enhances privacy, avoiding the need to transfer sensitive
data to external servers.
2024-06-17 18:56:47 +02:00
2024-06-22 13:12:05 +02:00
5. *Accessibility*: The application is designed following the Web
Content Accessibility Guidelines (WCAG) provided by WebAIM,
ensuring that the survey is accessible to all users, including
those with disabilities. This includes features such as keyboard
navigation, screen reader compatibility, and high contrast modes to
accommodate users with varying needs and abilities.
2024-06-24 19:05:09 +02:00
** Features
1. *Questionnaires*: Questionnaires can be defined using a Domain-Specific
Language (DSL) developed for dev.metalisp.sbt. The benefit of defining forms
in files is that they can be versioned using GIT, providing better control
over changes and updates.
2. *Simplicity*: All data is saved to files, eliminating the need for a
database. This reduces costs for self-hosting and simplifies the setup and
maintenance of the application.
2024-06-09 14:13:23 +02:00
** Dependencies
2024-06-09 14:08:37 +02:00
- https://github.com/edicl/hunchentoot
- https://git.sr.ht/~marcuskammer/dev.metalisp.sbt
2024-06-09 14:13:23 +02:00
** Mailing list
- https://lists.sr.ht/~marcuskammer/dev.metalisp.survey
** Issue tracker
- https://todo.sr.ht/~marcuskammer/dev.metalisp.survey
2024-06-09 14:45:45 +02:00
** News Feed
- https://git.sr.ht/~marcuskammer/dev.metalisp.survey/log/main/rss.xml
2024-06-09 14:58:56 +02:00
** Installation instructions
2024-06-23 13:44:33 +02:00
*** Without using Quicklisp :noexport:
2024-06-23 13:37:21 +02:00
**** 1. Install a Common Lisp implementation
2024-06-09 14:58:56 +02:00
- Ensure you have a Common Lisp implementation installed. Common options
include SBCL (Steel Bank Common Lisp) and CCL (Clozure Common Lisp). You
can download and install them from their respective websites:
- [[http://www.sbcl.org/][SBCL]]
- [[https://ccl.clozure.com/][CCL]]
2024-06-23 13:37:21 +02:00
**** 2. Set up ASDF
2024-06-09 14:58:56 +02:00
- ASDF is typically bundled with modern Lisp implementations. However, if
it's not present, you can download it from [[https://gitlab.common-lisp.net/asdf/asdf][ASDF's repository]].
2024-06-23 13:37:21 +02:00
**** 3. Organize the project directory
2024-06-09 14:58:56 +02:00
- Place the =dev.metalisp.survey= project in the =~/common-lisp=
directory. Ensure the directory structure looks like this:
#+BEGIN_EXAMPLE
~/common-lisp/
└── dev.metalisp.survey/
├── dev.metalisp.survey.asd
└── src/
2024-06-09 15:01:58 +02:00
└── app.lisp
2024-06-09 14:58:56 +02:00
#+END_EXAMPLE
2024-06-23 13:37:21 +02:00
**** 4. Configure ASDF to find the project
2024-06-09 14:58:56 +02:00
- Open your Common Lisp REPL and run the following commands to set up the
ASDF central registry:
#+BEGIN_SRC lisp
;; Ensure ASDF is loaded
(require :asdf)
;; Add ~/common-lisp to the ASDF central registry
(push #p"~/common-lisp/" asdf:*central-registry*)
#+END_SRC
2024-06-23 13:37:21 +02:00
**** 5. Load the project
2024-06-09 14:58:56 +02:00
2024-06-09 15:01:58 +02:00
- In your REPL, load the project by running:
2024-06-09 14:58:56 +02:00
#+BEGIN_SRC lisp
(asdf:load-system :dev.metalisp.survey)
#+END_SRC
2024-06-23 13:37:21 +02:00
**** 6. Run the project
2024-06-09 14:58:56 +02:00
- After loading the system, you can run the main function or entry point of
2024-06-09 15:01:58 +02:00
the project.
2024-06-09 18:40:24 +02:00
=ml-survey:start=, you would execute:
2024-06-09 14:58:56 +02:00
#+BEGIN_SRC lisp
2024-06-09 18:40:24 +02:00
(ml-survey:start)
2024-06-09 14:58:56 +02:00
#+END_SRC
2024-06-23 13:37:21 +02:00
**** Optional: Example Initialization in .sbclrc
2024-06-09 14:58:56 +02:00
To make the ASDF configuration persistent across REPL sessions, you can add the
setup to your =.sbclrc= file:
1. Edit =.sbclrc=
- Open (or create) the =.sbclrc= file in your home directory and add the
following lines:
#+BEGIN_SRC lisp
(require :asdf)
(push #p"~/common-lisp/" asdf:*central-registry*)
#+END_SRC
2. Reload SBCL
- The next time you start SBCL, it will automatically include the
=~/common-lisp= directory in the ASDF central registry.
2024-06-23 13:37:21 +02:00
*** With using Quicklisp
Quicklisp is a highly recommended library manager for Common Lisp capable of
streamlining the process of installing and maintaining libraries. It simplifies
downloading, building, and loading libraries with a minimal fuss and supports
command line interaction.
2024-06-23 13:44:33 +02:00
This guide will demonstrate how to install Quicklisp on both Linux and Windows
operating systems.
2024-06-23 13:37:21 +02:00
**** Why Use Quicklisp?
Quicklisp offers several advantages for Common Lisp development:
- *Ease of Use:* It simplifies the installation process of common Lisp
libraries, handling dependencies automatically.
- *Extensive Library Collection:* Quicklisp connects to a vast repository of
libraries, making it easy to find and install almost any library you need for
a project.
- *Regular Updates:* Quicklisp updates its library list monthly, so you always
have access to the latest versions.
- *Integration:* It integrates well with many Lisp environments and tools,
enhancing your development workflow.
**** On Linux
1. *Install a Common Lisp implementation:*
For example, to install SBCL:
#+begin_src bash
sudo apt-get install sbcl
#+end_src
2. *Download Quicklisp Installer:*
Open a terminal and run:
#+begin_src bash
curl -O https://beta.quicklisp.org/quicklisp.lisp
#+end_src
3. *Install Quicklisp:*
With Lisp implementation installed (e.g., SBCL), run:
#+begin_src bash
sbcl --load quicklisp.lisp
#+end_src
Within the Lisp environment, enter:
#+begin_src lisp
(quicklisp-quickstart:install)
#+end_src
4. *Integrate Quicklisp with your Lisp environment:*
To automatically load Quicklisp on Lisp startup:
#+begin_src lisp
(ql:add-to-init-file)
#+end_src
Follow the on-screen instructions, then exit Lisp:
#+begin_src lisp
(quit)
#+end_src
**** On Windows
1. *Install a Common Lisp implementation:*
Download and install, for example, SBCL from http://www.sbcl.org/platform-table.html
2. *Download Quicklisp Installer:*
Open PowerShell and run:
#+begin_src powershell
Invoke-WebRequest -Uri https://beta.quicklisp.org/quicklisp.lisp -OutFile quicklisp.lisp
#+end_src
3. *Install Quicklisp:*
Open installed Lisp (e.g., SBCL) shell by searching it in the start menu. Then run:
#+begin_src shell
--load quicklisp.lisp
#+end_src
Within the Lisp REPL, execute:
#+begin_src lisp
(quicklisp-quickstart:install)
#+end_src
4. *Set Up Quicklisp:*
To enable Quicklisp every time Lisp starts:
#+begin_src lisp
(ql:add-to-init-file)
#+end_src
Follow the steps provided, then exit:
#+begin_src lisp
(quit)
#+end_src
2024-06-23 13:44:33 +02:00
**** Load dev.metalisp.survey
1. Clone this repository and dev.metalisp.sbt
#+begin_src shell
git clone git@git.sr.ht:~marcuskammer/dev.metalisp.sbt ~/quicklisp/local-projects/
git clone git@git.sr.ht:~marcuskammer/dev.metalisp.survey ~/quicklisp/local-projects/
#+end_src
2. Start sbcl and load dev.metalisp.survey
#+begin_src shell
(ql:quickload :dev.metalisp.survey)
#+end_src
2024-06-09 14:13:23 +02:00
** License
2024-06-09 13:02:05 +02:00
MIT