blogc(1) is a blog compiler. It converts source
files and templates into blog/website resources.
blogc is simple...
blogc was designed with simplicity in mind. If some feature requires a very complex change, it won't be implemented.
blogc is powerful...
Based on the flexibility of its template engine, even considering that it just implements the basic features of a template engine, blogc can be used to generate almost any blog/website resource, including atom feeds and sitemaps.
blogc is portable...
blogc(1) is often tested on Linux and FreeBSD, but the code should work
on any POSIX-compliant operating system and Windows. Patches for portability
are always welcome and have high priority. The optional helper tools, like
blogc-runserver(1) are only
tested on Linux and rely on some POSIX features that are not available on
blogc is compatible with
blogc(1) was designed to be used with
make. It is stateless and idempotent
(no global state is shared between process calls, and each call with the
same arguments will always result in the same output), and works pretty
much like a system compiler.
blogc is self-contained...
blogc just depends on a libc. The test suite (yes, blogc comes with a somewhat complete test suite!) depends on cmocka and a few other common tools found on Linux machines, but users aren't required to run it.
blogc is designed for developers...
Due to its simplicity and similarity to a system compiler,
blogc(1) is meant to be used by software developers, that are used to work
make and similar development tools.
Frequently Asked Questions
Is this a blogging engine?
No, it is just a blog compiler. It will only build one file at once, and does
not know anything about the other files that needs to be built to get a full
blog working. This is a job for a build tool like
make. We recently
developed a build tool for blogc, called
blogc-make(1), that can turn
blogc(1) into a
blogging engine suitable for most users' needs, but no user is required to use
What is its markup language?
blogc comes with its own markup language, see
blogc-source(7). The language is quite similar to
John Gruber's Markdown, but differs in some aspects.
But why not just support Markdown?
While the blogc markup language is quite simple, we have plans to support advanced features that are not part of Markdown, like something similar to reStructuredText directives. Also, this project is an experiment, and one of the targets of the experiment is the markup language.
How can I get started with blogc?
You should install it from github or
from a stable release. It
is a standard autotools project, that can be built with
./configure && make
&& make install. Take a look at
./configure --help to learn about how to
enable the helper tools. There are also several pre-built binaries and
distro-specific repositories available in the sidebar of this website.
There's also a Git repository with an example blog: https://github.com/blogc/blogc-example
Feel free to clone it, remove
.git and start your brand new blog.
The example repository uses GNU Make. You should be able to write a Makefile
that only uses POSIX features, and get it working with any
implementation, but our example uses lots of GNU features. This should be
fixed in future.
A git branch using
blogc-make(1) instead of GNU Make is being implemented
and will be announced here as soon as it is ready. Meanwhile, users can
use the source code of this website
as an example.
What the name "blogc" means?
"blogc" stands for "blog compiler". The name has nothing to do with the programming language used to implement it. ;-)
I don't like
blogc-make, what can I do about it?
You are free to use any other build tool you like. You can even use something
grunt, if you really want. blogc is a command-line application, like
any other. Anything that can call command-line tools should work just fine.