JeremS / prose

An alternate syntax for Clojure inspired by Pollen.
Eclipse Public License 2.0
43 stars 4 forks source link

Differences with Pollen? #2

Closed classicrob closed 3 years ago

classicrob commented 3 years ago

Hi! I'm about to start working on a research project where I'll be publishing a public hypertext notebook / digital garden for people to follow along (see robhaisfield.com/about for reference) and I was curious about the differences between Pollen and Prose. I'm more familiar with Clojure than I am with Pollen, but just trying to understand the landscape a bit better before I make the decision. Thank you!

For context, this is for a research project in decentralized knowledge graphs, see here for a short tweet thread with details. Thank you!

JeremS commented 3 years ago

Hi @classicrob,

There are indeed several differences between the two projects. Before I delve into them, note that if Pollen inspired me in writing Prose, I haven't used Pollen and I don't use Racket either. So this comparison is to be taken with a grain of salt.

The differrences

In essence both tools provide convenient syntax when writing programs that generate data. The use case the most presented for this syntax is the writing of mostly textual programs that generate textual documents I.e. web pages, books... The idea is to have static text in which you use a special syntax to embed code. This code serves to either mark specific parts (titles, links, etc...) like HTML does or dynamically generate part of the final document (think of a table generated from data in a database for instance) like template systems do.

In the case of Prose Clojure is embedded, in the case of Pollen Racket is. This means that you have access to Clojure's ecosystem with Prose, Racket's with Pollen. The language difference doesn't stop at the libraries you can use, booth tools present differences in how they are implemented. For instance both tools represent documents as trees in memory but where Pollen represents documents using X-expressions, Prose uses maps and seqs like enlive or hickory.

The scope of both projects also differ. While Prose provides APIs to read, execute, and output documents, Pollen provides that and more. It comes with a suite of tools to generate websites and its author refers to it as a publishing system. The author has published several books using it.

When choosing which tool to use you may consider what language you prefer, if there are specific libraries you want to use available in one system and not the other, whether the additional tools Pollen provides are useful to you or not. There are also other similar tools if you want to look at more options, Skribilo is one.

Some notebooks considerations

When I think of hyperlinked notes and your example, I think of tools like Roam Research, Athens Research or Logseq. One way to categorize the functionality of these tools is as follow:

Pollen and Prose may indeed be used to provide the syntax you write your notes in. There are trade offs involved off course, Pollen like syntax isn't as concise as Markdown, but adding new syntax in Pollen just requires adding a new function where you need to start by changing a parser in Markdown.

Prose (for sure) and Pollen (to my knowledge) don't provide the rest of the notebook functionality. Maybe the extra tools Pollen has when it comes to publishing are a good start toward what you want. However I am not confident these extra tools will allow for an easy way to recover the notebook functionality.

If you want to use something Prose like you'll need bridge to something or code something yourself for the notebook stuff.

I hope this helps. Cheers,

classicrob commented 3 years ago

This is very helpful, thank you! I assumed hypertext notebook functionality like showing backlinks would require custom coding regardless of whether I used Pollen or Prose. So am I correct from my reading of your explanation that if I want to turn this into a website (which I do), there would be a few extra steps involved to using Prose that I wouldn't have to use in Pollen?

JeremS commented 3 years ago

I have studied Pollen to get a sense of its syntax and it implementation. I only read in the docs the parts that helped me get a sense on how I could embed Clojure in plain text. Beyond that I don't know Pollen very well. I know there is functionality beyond what Prose provides. Whether that functionality will be a good fit for your use case I don't know.

classicrob commented 3 years ago

I guess I'm just trying to figure out... let's say that I'm capable of writing functions for Prose to create markup and syntax within it. Let's say I use the HTML compiler to turn the source into HTML. If I want to turn to publish it on a website, what comes next?

JeremS commented 3 years ago

To be honest we are going off of the Prose topic. What comes next is you host your HTML someplace accessible from the web, same process you went through with your current website. Again at this point this is outside of what Prose provides.

Cheers,

classicrob commented 3 years ago

Fair enough. I appreciate you answering my questions... feel free to tell me to shut up, I just find Prose fascinating and would prefer to work with that if I can figure out a few parts of it.

I'm still trying to explore the advantages of Clojure ecosystem with Prose then... How could you see Prose working with Reagent?