A static website generator in Python
github.com
github.com
* Actively maintained
* Supports Markdown
* Written in Python
* Flexible templating system
* Supports RSS/Atom feeds
* Supports syntax highlighting
* Track history (been around for at least a year)
The above list seemed like a good place to start, and after going through all the various candidates, the one that met all my criteria was Pelican. I liked the project and its author enough to eventually join the team as a committer. Check it out at: http://getpelican.com/
Cactus looks interesting, but I prefer having a wider range of deployment targets (instead of just S3). I also prefer the Jinja templates that Pelican uses instead of Cactus' Django templates. Just my two cents, of course. All of the various static site generators bring something interesting to the table — the more the merrier!
It will fit into all your requirements and has been there for almost a year now.
Isn't punch a nodejs app?
* Download and Install Node.js.
* Install Punch npm install -g punch
Seems so.A lot of you are probably familiar with Flask and its awesome Jinja2 templating system.
There's a well supported, officially approved extension called Frozen-Flask that generates static sites from a Flask/Jinja2 deployment: http://packages.python.org/Frozen-Flask/
If you are familiar with building sites with Flask, I can obviously see the appeal, but for someone unfamiliar with Flask, is there any advantage to going the Frozen-Flask route over simply using a static site generator and content stored as flat markdown? One of the selling points of static sites for me was not having to include a database layer for something as simple as a personal blog with a few dozen entries that I wish to serve.
I have a static site, which is published in two languages, currently with over 5000 pages and about 50 page updates and new pages added per day. None of the static blog frameworks were flexible enough even though my requirements are pretty minimal. I ended up using https://github.com/mtigas/django-medusa/ with a custom app, https://github.com/StuartMacKay/django-sitepaths to manage all the pages and allow pages to be easily regenerated. This works well, with little tinkering to keep it working however I'd certainly take a closer look at Frozen-Flask for my next project.
https://github.com/shazow/composer
Composer is framework for building your own static site generator. It's not opinionated about what kind of website you want, or which templates you want to use, or what kind of pre/post processing you want to do, etc.
For example, shazow.net is composed by pulling metadata from a git repo and using author/timestamps those as variables in each Mako template container for Markdown+Pygments processed text.
Composer comes with a bunch of pre-built filters for convenience (Mako, Markdown, Jinja2, RST, Pygments—adding your own is bordering trivial), a site compiler and auto-reloading server, and some other reusable components.
If you're interested in doing something completely custom, this might be a good starting point. I haven't worked on it in several months but I like the core philosophy and design—I think others might too. Forks and pull requests welcome.
It also by default will recognize multiple formats (e.g. markdown, mako, plain html) for rendering and you can embed markdown inside of the mako templates.
And vaporfile works pretty well for uploading the finished site to S3: https://github.com/enigmacurry/vaporfile
Warning: Not good for blogging or anything you would like to update often.
I’ve also tried Flask-Freezer for static sites. All the benefits of regular frameworks.
Cactus has some nice things going for it, but some decisions are weird. May I suggest using Jinja2 for templating, Django is complete overkill and simply an inferior template engine. Oh and make it at least somewhat PEP8 compatible.
That's the real thing that I see missing in a lot of CMS's. If I could setup A/B tests right in markdown and easily post the results somewhere(A bit tricksy, yes), that would simplify operations hugely for a great many people.
I tried it once and it was quite interesting... easy to setup and really easy to use.
Just my two cents...
My money on the static site generator race is on docPad.
Just add one line of HTML your <head> and you're good to go. (It loads some JS.)
I've been working on a static site generator as well, but with a twist. My issue has always been having to learn a brand new framework and set of commands to simply generate a static site. I already know Django very well, so I built a static site generator on top of it. I just use the Django test client (https://docs.djangoproject.com/en/dev/topics/testing/#module...) to dump the static content to a folder. I have some markdown helpers too, so all posts can be written in markdown and live in some folder at the root of the project. I have a few more things to finish with it, if anyone's interested I can throw it on Github.
Jinja2 templates; write in md, rst, textile; sphinx syntax highlighting; yaml config; compatible with s3 and github pages; atom feed.
Very simple, but perfect for my needs. Granted, I haven't added a blog yet, but it looks like it'll be pretty easy when I get around it it.
However, for my homepage[0], I use Asciiweb[1], a - As a fan of ASCII art, I'm really happy with it. It's great for a static homepage, though not that great for blogging.
It uses a custom markup language that supports a couple of great features: optional per-page configuration, executing scripts through a nifty <exec> tag, and the script's output is placed in the web page. I use this to run a BSD fortune script[2]!
The minor problem is that all the ones I used so far are a lot more complex to use that dynamic generators, for some reason. (Even thus I write templates, css, etc for the dynamic ones as well). It seems like a "it has to be complex" syndrome :p
I have initiated work on talkatv (http://talka.tv).
It's written in Python using Flask. You might find it useful and I hope you'll be able to help me expand it, since I havent found much time to do so myself.
But on my host, it was not that easy to setup, and I am not that much of a rails guy. So a python-based alternative might fit me better.
I'll have a look.
Very few sites are enhanced by allowing people to leave comments. I don't go to YouTube for the comments.
I agree at the sub-optimality of third party comment hosting. Maybe a solution is to encourage better discussion on aggregators, and better aggregators?
I rarely feel the need to comment, but when I do, I don't want to give you my e-mail address (what the hell are you gonna do with it, anyway?), wait until it's approved by the author or constantly go check your website if someone replied to my comment.
The only difference is that host controls &store the comments, and the host isn't disqus or what not, but the guy owning the blog instead.
But psst... following that logic you must hate hackernews commenting system :p
The Hacker News commenting system doesn't bother me as much, because I only need to sign up once. For self-hosted comment sections I have to either "sign up" for every individual blog I want to comment on or tie my real identity to my comments for convenience. That's something I'd rather not do and which isn't necessary at all.
On top of that, Hacker News provides a nice "threads" page where I can track who replied to my comment. With a self-hosted comment section I'd have to check the comments section of several blogs constantly or subscribe to some kind of comment RSS feed, which is not ideal at all.
Hacker news can be substituted for "A service like Disqus" in the last two paragraphs.
For these reasons, I might decide to not reply at all, even though I might have something relevant and interesting to say.
I'd like to hear your reasons for hosting comments yourself though, as I can't think of any good ones myself that render the arguments I laid out here irrelevant.
http://www.movabletype.org/download.html
If you wait long enough, everything old becomes new again :D
I think static site generators are pretty great...especially if you have a decent grasp of JS frameworks. According to the recent HN front page submission, Obama's $250 million fundraising site was run off of Jekyll.
http://blog.williamting.com/posts/2012/05/30/migrating-from-...
tldr: Wanted to mess around with internals, but rather than learn Ruby I switched to a Python-based platform instead. I've learned Ruby since then, but only at a surface level of comprehension.