
Introducing Lektor – A Static File Content Management System For Python - jilljennV
http://lucumr.pocoo.org/2015/12/21/introducing-lektor/
======
the_mitsuhiko
Direct links to project:

* Website: [https://www.getlektor.com/](https://www.getlektor.com/)

* Github: [https://github.com/lektor/lektor](https://github.com/lektor/lektor)

Would be really curious to hear how people like it :)

~~~
bliti
Very nice. I had been building the same thing after wanting something more
than pelican and less than wordpress. This seems to fit perfectly.

Is there a roadmap for contributing to the project? I failed to see one on
github.

~~~
the_mitsuhiko
> Is there a roadmap for contributing to the project? I failed to see one on
> github.

Nope. Hoping to get some feedback to see what people need. It does what I need
pretty much at the moment. Just figured i add some docs and share it as some
sort of Christmas or whatever else you celebrate present.

------
vinceguidry
My feeling is that every serious programmer will end up inventing tools like
this simply because the overhead of incorporating other people's tools
eventually starts to overtake the overhead of maintaining one's own system.

~~~
currysausage
Let's not forget that Lektor solves actual problems. Show me another CMS that
offers:

\- Static HTML export with elegant dependency tracking by design (reducing
attack vectors and maintenance cost on the frontend server)

\- Admin interface (I can't tell a non-techie to connect via SSH, fire up vi
and run Jekyll)

\- Flexible content structure (Title/Author/Content doesn't really scale
beyond a simple blog)

\- Elegant design and implementation (I could do anything with WordPress and
half a dozen plugins, but I fail to even find a bare-bones theme without
kilobytes of code that I will never need; the whole ecosystem revolves around
the novice user who understandably prefers "quick and dirty" over touching
code)

I have been looking for a CMS that fulfills these exact criteria for quite
some time. Lektor looks ideal for projects where the developer prepares a non-
trivial page structure (think book listings, music albums, anything that goes
beyond _bold_ and _italic_ ), but the client should be able to edit content.
Thank you, Armin!

~~~
hanniabu
A few alternatives....

[http://getgrav.org/](http://getgrav.org/)

[http://getcockpit.com/](http://getcockpit.com/)

[http://harpjs.com/](http://harpjs.com/)

~~~
scotchio
Checkout SpudPress - Static WordPress hosting. All the same except you can use
WordPress theming and Admin. If you know how to distinguish between static and
dynamic. It's insanely useful

[http://spudpress.com](http://spudpress.com)

~~~
isoos
I think a lot of people who would love to use a self-hosted version of this.
However, paying for $20/m is usually not worth for a hobby/blog site.

------
qwertyuiop924
I always love Armin's stuff. In quality, it's often near that oh-so-very-
special spot that is reserved for Steve Yegge's best posts. Now I will
simultaneously be lynched by both the people who think that Steve sucks, and
the people who think that Steve's stuff is 1 million times better than
anything Armin could ever post. Not to mention 500 other groups who I don't
even know.

~~~
auvrw
nope, you're upvoted b/c i also appreciate source-level userfriendliness of
pocoo projects

------
davepeck
From the original post:

> There is very little innovation in that space and that's a bit unfortunate

I'll have to respectfully disagree with Armin here, but perhaps I map the
terrain a little differently than he does.

In addition to the half-dozen tools he names, which are more narrowly targeted
at blog-like static sites, the broader space of asset pipelines and static
generation is seeing a lot of innovation. I'd point to Gulp and Rails' latest
as a sign that there's more work to do here. Even strictly in the Django
world, there are a zillion asset-pipeline-like-apps; django-compressor and
django-pipeline, the two most used, are quite different in their approach and
philosophy.

I'm excited by this proliferation of tools for generating static web content
"offline" and expect to see far more in the future. Lektor looks like another
interesting piece to the puzzle, particularly in its focus on end-users rather
than programmers. (Anyone remember Movable Type? That's probably the first
user-centric static site generator to gain widespread use?)

~~~
the_mitsuhiko
> I'd point to Gulp and Rails' latest as a sign that there's more work to do
> here.

If you want to throw them into the same category, then sure, there is
different stuff happening. But Gulp is even further away from something non
programmers can use.

~~~
davepeck
I definitely do see gulp et. al. as belonging to the same category of tools,
although they're much more general-purpose. I think that's where I map the
terrain differently than you. I do so because I'm hopeful that future
innovations _there_ will find their way back to tools like Lektor, etc.

(And completely agree on the programmer-centric nature of these tools.)

------
gamesbrainiac
Armin Ronacher just makes more and more awesome stuff. I think I'm going to
ditch my pelican site, and go for Lektor.

------
gotchange
I'm really suffering from an acute case of Analysis Paralysis when it comes to
Static Site Generators. The offerings on the market are overwhelming and you
don't know which one to pick, do you go with an incumbent or mainstream like
Jekyll with a huge selection of functionality at your disposal or go for the
underdog and minimal one offering just the basics or just build your own
framework and adapt to the evolving needs of your projects over its lifetime.

If you're thinking that the scene of MVC JavaScript frameworks resembles more
of the good ol' days of the Wild Wild West, wait to see how things are
currently like on the SSG front.

~~~
princeb
i had this problem a week ago- ended up building an ultra-low-frills low-
dependency one in an afternoon just a few weeks ago. Seems silly - i am pretty
sure with sufficient time investment i am better off learning how to use
popular frameworks (because learning how to use frameworks will make me better
at learning how to use frameworks).

------
ngrilly
Considering that one of the project's main goals is to address the needs of
non-programmers, do you plan to add an improved Markdown editor (with some
syntax highlighting and maybe buttons for things like titles, bold, etc.)?

~~~
the_mitsuhiko
Absolutely. See also the open ticket here:
[https://github.com/lektor/lektor/issues/7](https://github.com/lektor/lektor/issues/7)

------
dwightgunning
This looks great! The native desktop app is a powerful way to drive adoption
with non-technical people.

Cactus was on the right track with that although I'm fairly sure the author,
Koen Bok is now focussed on his company, Framer. Are there plans to build
clients for other platforms? I guess the community can jump in at any time.

Sidenote: do people know of native clients for the other major static site
generators like Jekyll, Hugo, Middleman?

Shameless plug: If you're looking for somewhere to host your static site,
please check out my side project,
[http://www.knownly.net](http://www.knownly.net)

~~~
wuster
I want to also vote up Cactus despite the lack of attention paid to it lately.
IMO it's very well designed and deserves to be worked on by a wider community.

It's open sourced via BSD 3 clause:
[https://github.com/koenbok/cactus](https://github.com/koenbok/cactus)

I especially liked the "deploy to s3" feature, IMO the cheapest way to run a
highly scalable static site today.

Alternatively, a "deploy to GitHub page" would be neat as well.

I would work on extending Cactus if it was a bigger problem personally, but so
far what's released fits my needs already.

------
rcarmo
Very neat. Static site generators are hard to get right (I've been hacking
away at a hybrid solution at [http://sushy.no-bolso.com](http://sushy.no-
bolso.com) / [http://blog.carmo.io](http://blog.carmo.io) \- same engine,
different themes).

I do have two questions, though. Why the new file extension (.lr) and the
field separator?

Jekyll's front matter format is easier for most people - and my engine uses a
plain newline to separate front matter from text, and supports multiple file
extensions to make it easier for desktop editors.

~~~
the_mitsuhiko
The .lr format is easy to explain: it conforms to data models and is easy to
parse and generate. Frontmatter does not fit into these requiements. I tried
it quite a bit but it makes everything more complex. Not worth it.

~~~
rcarmo
Well (and this is only an opinion) having to separate each field makes it
harder to edit manually, and a new file extension will be a hassle for non-
technical users who want to use their favorite editor.

(I went with .txt/.md/.textile to support multiple markup engines and make it
easier for people to edit with literally anything)

~~~
the_mitsuhiko
> Well (and this is only an opinion) having to separate each field makes it
> harder to edit manually, and a new file extension will be a hassle for non-
> technical users who want to use their favorite editor.

A non technical user would use the admin interface.

Obviously a custom file extension is not particularly nice but there is really
not that much one can do around that. Renaming the file to `.md` will not
magically make things better because the contents are just wrong and the
Markdown format just does not do what Lektor needs.

------
jeffwidman
> Lektor belongs to a separate org and the project does not use any resources
> only I have access to (other than the domain name and the server travis-CI
> deploys to).

Really appreciate you starting it out this way from the getgo.

> Because I run so many Open Source projects and maintenance of all of them
> turns out to be tricky I figured I do this better this time around.

Looking forward to seeing Flask & Flask-SQLAlchemy moved to a dedicated Flask
org on github. Ideally with another person or two having Pypi creds for
pushing releases.

------
ngrilly
Armin, are you not afraid that having to install Lektor locally could be a
serious obstacle for "people that have no understanding of programming"?

~~~
voltagex_
I wonder how hard it'd be to bundle up into a single executable that the user
could run. I know I've been battling with Python -> exe tools ever since I
started using Python, though.

~~~
the_mitsuhiko
There is a bundled cersion for osx with a ui. Just didn't have the time to do
it for windows and linux.

------
cdnsteve
Respectfully, I don't think this puts this project outside the scope of any
other static site generators as listed.

In my view a content only API would be more disruptive. A smart content API as
a service could be used for any project. Give it a beautiful interface for
authors and focus on the writing experience.

Maybe this is Mediums potential new market/ platform. What if you could grab
and query your content with a smart api with graphql? No updates, servers,
etc.

Any new project I used, I grab my content from this saas and use whatever
tech/framework I want. Why aren't more devs looking at this as an option going
forward?

~~~
jsdalton
Services such as the one you describe do exist, e.g.
[Contentful]([https://www.contentful.com/](https://www.contentful.com/)). I've
used it on a few projects and it's pretty awesome.

The only thing it's missing from your description is graphql. :)

------
programminggeek
This looks really interesting. I always love seeing new static site builders.
Each one is a bit different, which is cool.

I'm working on making hosting for static sites easier. My static hosting
service is still in beta, but we have a sign up form if people are interested.
[http://www.statichosting.co/](http://www.statichosting.co/)

~~~
hatchoo
Thanks for the link Brian. The "Get In Line For The Beta" button does not work
for me (it does not do anything).

------
Michael_L
Out of topic: When the next version of Flask will be released? Does Flask has
a roadmap or it is "abandonware"?

~~~
ganduG
[https://www.reddit.com/r/Python/comments/3xi6o9/whats_the_fu...](https://www.reddit.com/r/Python/comments/3xi6o9/whats_the_future_of_flask/)

------
mxuribe
This is great! I'm using pelican and while a very good tool, I was considering
building out a desktop/local-front-end for it...But this is _MUCH_ better than
what I could build (with my current level of expertise)...i think i'll be
using this, and seriously consider contributing! Kudos @mitsuhiko!

------
pkd
I love Armin's work, especially Flask, but this seems like lot of other
products out there. I have no incentive to switch to this from the generator
I'm already using, and for non-techy people I think it's still a big jump in
terms of just opening up a tumblr blog.

~~~
Torgo
What other static file CMS are you using?

~~~
pkd
I don't use a static file "CMS", but I use my own generator[1] which I made
because I wanted something really fast. If you want a flat file cms, then a
Google search will throw a lot of them. Kirby is the most popular, IMO. But
it's not FLOSS. PicoCMS ticks all those boxes though.

[1]
[https://github.com/pawandubey/griffin](https://github.com/pawandubey/griffin)

~~~
Torgo
I wanted a "full" CMS and a GUI, and it looks like finally I got one now. I
hadn't seen another static generator that had a GUI of any kind (that seemed
to be supported.)

------
Socketubs
Nice stuff! (Again and again :)) What's about multi-language website? Tips?
Advice?

~~~
niijv
Have a look at
[https://www.getlektor.com/docs/content/alts/](https://www.getlektor.com/docs/content/alts/)

~~~
Socketubs
Thank you ! :-)

------
amai
Urubu (A micro CMS for static websites, with a focus on good navigation
practices.) might be an alternative:
[http://urubu.jandecaluwe.com/](http://urubu.jandecaluwe.com/)

------
johnchristopher
Does it support some kind of live preview mode (like with HarpJS) ?

~~~
the_mitsuhiko
Depends on what you mean by live. If you hit the save button the page renders
immediately and you can see it. It rebuilds as files change.

------
lifeisstillgood
Hmm - gonna have to steal this for a project in new year. This comment is more
a bookmark than any contribution to society

------
krick
I found sculpin pretty much perfect, but having a built-in admin panel is a
nice touch.

------
Siecje
Why did you call it Lektor?

~~~
frakkingcylons
It's German for editor. I'm gonna guess for the same reason that his WSGI
library is called Werkzeug (tool).

------
mars
i like [http://www.mkdocs.org](http://www.mkdocs.org), it's also python based.

