top | item 3766469

Simple - An Obtvse clone written in Python

141 points| jsherer | 14 years ago |github.com

Not my project, but found this interesting...

69 comments

order
[+] jsherer|14 years ago|reply
I'd like to see one of these clones that more closely resembles the static site generators like Jekyll (http://jekyllrb.com/) or Hyde (http://ringce.com/hyde). Basically, the CMS would just be the interface to create new and manage existing content. It would have the standard static publish function that builds out the pages of the blog as HTML.

(NOTE: "Simple" is not my project)

[+] espeed|14 years ago|reply
Lightbulb (https://github.com/espeed/lightbulb) is a Git-powered, Neo4j-backed blog engine written in Python.

It allows you to create entries in ReStruturedText using a text editor. I designed it with Heroku in mind, but can be easily adapted for any Web environment that uses Git.

When you push to Heroku, the entry metadata will be automatically saved to Neo4j, and the HTML fragment generated from the ReStructuredText source file will be served off disk.

You can use the free Heroku dyno and Neo4j Add-on (https://addons.heroku.com/neo4j) to serve your blog for free.

[+] bravura|14 years ago|reply
I want to bake NLP into an existing CMS, so let me speak to your point. To extend your idea, these tools should be much more modular:

Simple/Obtvse should be an interface for adding posts and editing existing posts. Similarly, a command-line-interface can also be used for adding posts. (`newidea "I want a castle made of marshmellows"`)

The site is stored in a database when live, but the database can be transformed one-to-one into a directory of human-readable Markdown or ReStructuredText files.

Rendering is handled by a separate component, e.g. nanoc or jekyll. The important thing is that the site database can easily be mapped to a human readable format. The advantage of this approach is that it is easy to write a modular rendering engine without mucking with the specifics of the CMS.

For example, I want to automagically categorize posts in a taxonomy, find related posts, group posts that are lists, etc. using some NLP wizardry. I would much rather write this application for a directory of human-readable files, adding metadata fields to text files, than paint myself into a corner with a particular CMS.

Please email me if you are interested.

[+] X-Istence|14 years ago|reply
I use one called Blogofile[1], but it is entirely local. You basically give it the posts as markdown/restructured text and it generates the entire site as static HTML. I'm sure you could use it as a starting point to start the service you just mentioned, instead of having it read the posts from disk have it read them from a database.

The thing I like about static generators is that I don't have to worry about a programming language being present on my hosting site (http://funcptr.net is blogofile, http://bertjwregeer.com/ is Poole.py[2]) and the overhead is a lot smaller, since all I have is static files there is a lot less worry about accidentally causing CPU spikes, or a database being overloaded, and using sendfile() one can very quickly and efficiently serve up HTML files to clients.

[1]: http://www.blogofile.com/ [2]: https://bitbucket.org/obensonne/poole/overview

[+] anthonyb|14 years ago|reply
What's wrong with just

  wget -m -k -nH <your URL here>
combined with some sort of rsync?
[+] siong1987|14 years ago|reply
Then, it is not going to be as static as as static site generators like Jekyll or Hype. One good thing about those sites are that you don't have to serve those static sites from any hosting without any dynamic generation of the web pages.

But, with the feature you request, then, it doesn't really work for a static site generator. It is better to use normal caching with a dynamic site like how Simple is doing now.

[+] slig|14 years ago|reply
> Go download Python 2.7+, Flask, Sqlalchemy and flask-sqlalchemy and you are good to go.

OP, you should learn about requirements.txt and virtualenv/virtualenvwrapper, it will make your life easier.

[+] gecko|14 years ago|reply
He actually has a REQUIRES file that's in requirements.txt format, so it looks like he kind of does.
[+] phwd|14 years ago|reply
Nice work with the Python style, though I believe Simple and Obtvse missed the point as with every clone of something out there that tries to replicate what they could see on the outside. Skipping over Dustin's attitude of the situation, no one really knows how Svbtle.com works on the inside do they?

From the outside look and the screenshots (because that's all Dustin showed you) it's a simple design and that's the point; it was never supposed to be a complex work of design for you to be proud that you could replicate it in 1 day in rails. Yeah, Dustin put some work into thinking what could work for the layout but once the application of the design is done, replication is beyond simple.

Clone all you want I think it's great but Dustin was really telling the story of the "network" the idea of a closely knit community of writers (pseudo-writers whichever you prefer). I look at it as similar to the Deck Ad network or Dribbble (before every desperate Designer begged for an invite). Or when an HN clone comes along, no one ever migrates across, they always come back here.

Point is, the one thing you are never going to have is the network, that human element that sets apart the clone from the real deal.

[+] nwienert|14 years ago|reply
Whats funny is I agree with just about everything you've stated here, although I do believe we did get a pretty good idea of the backend with the screenshots.

But your point doesn't detract in any way from these projects. The point of Svbtle is the network. The point of Obtvse/Simple is the backend. You say "clone all you want" which is exactly what we did.. the goal was never to "beat" anyone or prove anything, it was to mimic the software, which we've already accomplished.

And IMO, that is more valuable than a network. Because now anyone can use it. And as good as Dustin's network ends up being, if it's never all-inclusive, it will always miss out on a the biggest and best talent-pool around... the internet.

[+] victork2|14 years ago|reply
So much drama around what is basically a skin/cosmetic improvement...

Good luck anyway.

[+] geoffw8|14 years ago|reply
I think these two packages could become a great learning resource for noobies. I'm a Ruby guy, but am definitely going to take a look into this version, should add usually difficult to find "context".

Nice work :)

[+] killnine|14 years ago|reply
AH! I was waiting for the python version.

I also watch this python static blogging app on github here:https://github.com/fallenhitokiri/Zenbo

[+] nikcub|14 years ago|reply
I wrote my own static generator with a command-line and web interface a while ago, add it to your watch list if interested, ill eventually clean it up into a v1.0 and release it, but it works right now and I have been using it for my own blog for a while:

https://github.com/nikcub/floyd

[+] pfraze|14 years ago|reply
I'm holding out for the Haskell version.
[+] richthegeek|14 years ago|reply
This is getting ridiculous... nice job all the same!
[+] conductor|14 years ago|reply
Nice work, thanks, though I have a feeling that it's misnamed, sPymple would've been a nice match to Obtvse :)
[+] aprescott|14 years ago|reply
This should probably have a license added to it somewhere. Especially with those 21 forks hanging around.
[+] astrofinch|14 years ago|reply
I'm a Django guy. Can someone explain the appeal of Python micro-frameworks like flask? Why would you want to give up all of those open-source Django apps?

http://djangopackages.com/

[+] edwinyzh|14 years ago|reply
You know what? Today I was thinking of that it'd great if Obtvse was written in Python + Flask :)
[+] tptacek|14 years ago|reply
This one doesn't even bother to rewrite the CSS; it just takes the cloned CSS from Obtuse. The snake eats its own tail.
[+] unalone|14 years ago|reply
Obtvse was open-sourced for a reason: so that people could take it and modify it and use it however they'd like. This is open-source working.
[+] mcantelon|14 years ago|reply
Pretty crazy that one open source project would reuse something from another. :P
[+] kami8845|14 years ago|reply
i don't think you understand why obtvse was created in the first place