aboutsummaryrefslogtreecommitdiff
path: root/README.org
diff options
context:
space:
mode:
Diffstat (limited to 'README.org')
-rw-r--r--README.org37
1 files changed, 37 insertions, 0 deletions
diff --git a/README.org b/README.org
new file mode 100644
index 0000000..a11adbb
--- /dev/null
+++ b/README.org
@@ -0,0 +1,37 @@
+#+TITLE: ennum
+
+ennum is a purely functional Org Mode based static blog generator written in Emacs Lisp. It is intended as a complete blog-specific replacement for the org-publish system.
+
+* Features
+- minimal rebuilds
+- purely functional
+- resize and optimize images for file size
+- tag posts
+- generate post listings (of all posts, and filtered by tag)
+- generate Atom feeds
+- translate posts to multiple languages
+- tangle source blocks embedded in posts
+
+* Features in detail
+** Minimal rebuilds
+When an input file did not change, it is not rebuilt. This saves a lot of time and makes the "edit-compile-debug" cycle really fast.
+
+** Purely functional
+ennum is purely functional in that the built output always corresponds to the current source. The built output is guaranteed to not contain artifacts from previous builds. For example, when a source file is deleted, the corresponding output file is also deleted in the next rebuild.
+
+Note that ennum's purely functional nature is not achieved by merely deleting the output directory and creating a new one in its place. That would be an enormous waste of time and a violation of the "minimal rebuilds" principle. Instead ennum uses what we call "ennum expressions"---a caching and dependency tracking system inspired by the [[https://guix.gnu.org/][Guix]] store and [[https://arxiv.org/abs/1709.00833][G-expressions]].
+
+** Resize and optimize images for file size
+ennum resizes and optimizes images in posts so that pages load quicker and are light on network use.
+
+** Generate post listings and Atom feeds
+ennum generates index pages listing all posts, and posts filtered by tag.
+
+** Multiple languages
+ennum understands posts translated to multiple languages. It automatically links to translations of a post, and generates separate post listings for different languages.
+
+** Tangle source blocks embedded in posts
+ennum lets you tangle source blocks embedded in posts and write them to a separate source file. Thus, you can make the source code in your blog available for download without having to duplicate your code in two places.
+
+** Pure Emacs Lisp
+ennum is written purely in Emacs Lisp [fn::except for the image processing code, for which we shell out to external command-line tools]. No need to pull up your terminal emulator or shell mode to rebuild your blog.