· via Hacker News – Front Page (native)
maak.el brings the Guile Scheme Make alternative Maak into Emacs
A new Emacs package, maak.el, adds task discovery, completion and asynchronous execution for Maak, a Guile Scheme alternative to Make, and reached the Hacker News front page.
An Emacs package that integrates the Guile Scheme-based build tool Maak into the editor reached the Hacker News front page on 9 September 2026. The package, maak.el, is hosted on Codeberg and lets Emacs users discover, inspect and run Maak tasks without leaving their editor, with rich minibuffer completion for task names, signatures and documentation.
What Maak is
According to the project's Codeberg README, Maak is a command runner, control plane and project automator in the spirit of Make, built on GNU Guile Scheme. Its core argument is that most build tools invent their own limited domain-specific language, whereas Maak embraces a full Lisp: build logic is written as ordinary Scheme code in a maak.scm file at the project root. The project contends this keeps task definitions declarative yet fully programmable, and robust enough to stay maintainable for decades to come.
What maak.el adds to Emacs
The integration exposes one primary entry point, M-x maak-run-task. The README describes several behaviours behind that command:
- Project discovery: Emacs searches upward from the current buffer using dominating-file heuristics until it finds a maak.scm, so the command works from any file inside a project.
- Task completion: a minibuffer menu lists tasks rendered as aligned columns showing each task's parameter signature and docstring. The UI adapts to the user's completion framework, whether Vertico, Ivy, Helm or the native completing-read, and matches the active theme's font-lock faces.
- Visibility filtering: maak.el honours the #:export list in the Scheme module definition, showing only public tasks by default, or every task when no exports are declared.
- Argument prompting: when a task defines parameters, for example a deploy task taking a server and an environment, the minibuffer prompts for each value in turn before execution.
- Compilation output: tasks run asynchronously through Emacs's built-in compile system in a standard compilation buffer, which the README says keeps shell escaping tight and lets users jump straight to errors in the build output.
Behaviour and appearance can be tuned via a customize group, including the padding between argument and docstring columns and the faces used to render each.
Parsing Scheme with Emacs Lisp
A notable technical detail is how the package knows which tasks exist. Rather than shelling out to Maak or shipping a separate parser, maak.el reads maak.scm inside Emacs itself. Because Scheme and Emacs Lisp are both S-expression languages and mutually parseable, the package opens a temporary buffer in standard Emacs Lisp mode, parses the Scheme forms while staying aware of comments and strings, locates the module's #:export form to build a whitelist, and then maps the defined procedures to extract their docstrings and formal parameter lists.
Availability, licensing and policies
The README notes the package is not yet available in MELPA or ELPA. Installation is shown with Elpaca, pulling directly from the Codeberg repository and binding the run command to a key of the user's choice. The code is licensed under the GNU General Public License v3 or later, while the documentation ships under the GNU Free Documentation License v1.3 or later.
The project also publishes an explicit AI policy: language models may be used for review, small refactors or as a sounding board, but a human must remain in the loop for all contributions, and autonomous AI agents automatically generating and submitting pull requests are strictly prohibited. Community discussion runs through a Zulip chat and Codeberg issue tracker, with Zulip recommended as the starting point.
Why it matters
Build automation remains one of the last corners of software development dominated by bespoke mini-languages. Maak is part of a broader shift toward expressing build logic in real programming languages, and maak.el shows a natural payoff of that approach: when tasks are ordinary functions with signatures and docstrings, editors can introspect them, offering completion, interactive argument prompting and error navigation that a Makefile parser cannot easily match. The fact that an Emacs integration for a niche Scheme tool can land on the Hacker News front page also points to lasting demand in the Lisp world for tooling that treats the editor, the language and the build system as a single programmable environment.
- #emacs
- #guile-scheme
- #build-tools
- #open-source
- #developer-tools