Code52 / pretzel

A site generation tool (and then some) for .NET platforms
http://code52.org/pretzel/
Microsoft Public License
598 stars 163 forks source link

Merging of efforts with Sandra.Snow and others #227

Closed JacobVoracek closed 9 years ago

JacobVoracek commented 9 years ago

Hi guys,

I was looking around for static site generator written in C#/F# and found that there isn't a go to option like Jekyll or Middleman or Octopress. Pretzel is pretty good but it's not quite there yet (especially as far as the ease of use/on-boarding experience for newbies goes). As I was looking around, I found a few other options that are also trying to replicate Jekyll-like functionality in .NET and wanted to see if there is any interest in maybe merging efforts and working together. I figured I would open an issue to get some discussion going.

Sandra.Snow and FsBlog seem to be the two other projects that are the most mature but there are others like Baker, Lithogen, etc. that are at various level of maturity. Even if there isn't much interest in combing efforts wholesale, maybe there is an opportunity to cooperate on templates, themes, plugins, etc.

Including @jchannon, @phillip-haydon, @tpetricek and @kelindar for their thoughts.

JacobVoracek commented 9 years ago

Adding a few more people: @PhilipDaniels, @robmen, @bcwood, @ipavl, @adamkrieger.

tpetricek commented 9 years ago

Building something that makes C#/F# blogging easy would be great!

FsBlog does a good job at processing Markdown (in a highly customizable way - because you can transform the documents) using F# Formatting and at formatting F# code (using the compiler service) - this is pretty much the main reason why anybody writing about F# should use it - because it also produces code tool tips etc. It does not do very good job at the other things (like templating).

So, if there is something that the "perfect system" should have from FsBlog, it is probably the Markdown processing model and the F# code formatting.

The Markdown processing idea is that it runs the parser and gives you back a document that you can transform in any way you wish. There is a short example in the docs that collects all links (you could generate "References" section from this). A bigger example is FsReveal which does some special transformations on the document to turn it into reveal.js presentation.

adamkrieger commented 9 years ago

Thanks for bringing me into the discussion. I'm interested in combining efforts.

Fable was written over the course of a few weekends. It's pretty short on capabilities, but I learned a number of things from it.

Wanted to get in touch. I'll take a look at the open projects you've mentioned.

Thanks again, Adam Krieger

kelindar commented 9 years ago

I agree, something simple for blogging would be great.

My personal takeaway was the architecture: a static generator can be seen as a stream processing system that should be easily parallelised and customised. That way any plugin can be just defined as a stream processor taking an input and producing an output.

A nice thing would be to have a repository (nuget?) for plugins, themes etc. Something that allows easy contribution/discovery.

PhilipDaniels commented 9 years ago

Thanks for starting this discussion. I am the author of Lithogen.

I got into this space because I wanted to write a static site for my ConfigZilla project - http://philipdaniels.com/configzilla/index.html - Jekyll didn't seem suitable, being really geared towards blogging, and I didn't want to learn Ruby. Alas, at the time there didn't seem to be anything suitable/active enough in the .Net space, so I looked into various Node engines, of which Docpad and Assemble.IO are probably the best. I used Docpad to build ConfigZilla's website and Assemble.IO to build my Git cheatsheet at http://philipdaniels.com/gitcheatsheet/ - though I have now rebuilt this with Lithogen. I decided to build my own site generator because of a nasty experience with Docpad - I accidentally upgraded some of the node modules and everything broke and I had no way to update my site. Not nice. Assemble.IO is pretty cool, but not really actively maintained. And Grunt is a colossal PITA.

My aim for Lithogen is to finish the core functionality needed for static site generation and then it will be easy to build a blog engine on top of it. I just got LiveReload working tonight, though it's still a hack. The main things left to do are

One thing to be aware of is that the ground may shift significantly when ASP.vNext is finally released - although I suspect that inflicting Grunt on people will not be seen as a forwards step no matter how Microsoft tries to spin it :-)

@JacobVoracek sharing themes might be a good idea. If a theme is just CSS + a layout. Of course, raises the question of what format the layout is in.

@Kelinder: That is in fact how Lithogen works (I stole the idea from Assemble.IO). A view is read from disk then passed through a series of processors f(g(h(file)), where the sequence is defined by the file extensions. At least that is the idea, currently support razor, handlebars and markdown. Lithogen and Baker are probably at about the same level at the moment.

JacobVoracek commented 9 years ago

I was hoping there would be more interest but regardless, it seems like there is at least some interest in maybe merging efforts. So the next question obviously, is where and how? FsBlog and Fable are both F#. Baker and Lithogen are C#. I don't think the choice of language really matters as long as the final solution is .NET/Mono compatible. Thoughts?

@tpetricek I know one of the issues with FsBlog is performance but that may partly be because of the dependency on Razor in F# Formatting. I recall there being some discussion about maybe replacing Razor with DotLiquid. Is that still the case?

@laedit @shiftkey @vikingcode @AndreyAkinshin Thoughts?

JacobVoracek commented 9 years ago

I also wonder if something like @madskristensen's MiniBlog might be close enough to a static site that he might be interested in this as well.

vikingcode commented 9 years ago

I'm not saying I'm not interested, but I will say I'm not at the point where programming of any sort is something I do more than once a month these days. I can waffle on about a bunch of lofty goals, but I 'm sure somebody else could fill that role. Remember, the name of pretzel was largely decided because I was hungry. No, I'm not joking.

One of the bigger differences between the various projects is not what language they're written in but the goals. Pretzel was at least at one point in time (and currently is, AFAIK) meant to be a drop in replacement for Jekyll. Oh sure it did some auxiliary formats and the such, but that was more the byproduct of the architecture.

Others like Sandra.Snow and FsBlog seem to be Jekyll-inspired.

To me, that'd be the fundamental key difference to either 'merge' or create a new combined project from - do you go for something thats Jekyll compatible as its goal, or strives to be more than Jekyll and learn from some of the mistakes-or-ruby specifics that it has?

vikingcode commented 9 years ago

Oh and I agree that running on mono should probably be a key goal. Having a git post-receive hook that then builds the site ala gh-pages that will run on digitalocean would rock my socks.

phillip-haydon commented 9 years ago

I'm not... not interested (double negative) I got the email while I was on holiday for my birthday. So ended up forgetting about it.

My fear of merging is having too many opinionated people. I wrote Snow to re-create in a way, what Jekyll is, and add features I wanted to make things easier. i.e self-hosting for testing after a compile, 'series' to handle a group of posts without having to go back and update old posts. etc.

I would hate to have to fork a merged effort down the road to implement what i want/need and/or move the project back on track of being just a static file generator and not some full blown attempt to do things outside of what it was originally designed to do.

ipavl commented 9 years ago

Although the static site generator I wrote was more of an F# experiment and meant to be rather simplistic, I'd be interested in collaborating on a more "proper" project. I've generally been developing using Mono lately.

laedit commented 9 years ago

Like @vikingcode and @phillip-haydon said I think that all static site generator on this thread was created with a certain purpose. So I don't think that a merge can be achieved if all the purpose are different.

But we can collaborate at some point, like sharing a common layout and themes.