Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Differences with Pollen? #2

Closed
classicrob opened this issue Jul 15, 2021 · 6 comments
Closed

Differences with Pollen? #2

classicrob opened this issue Jul 15, 2021 · 6 comments
Labels
question Further information is requested

Comments

@classicrob
Copy link

classicrob commented Jul 15, 2021

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
Copy link
Owner

JeremS commented Jul 19, 2021

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:

  • you can write notes based on different syntaxes (Logseq uses Markdown and Orgmode I believe)
  • you get the processing of the data in these notes to generates documents, knowledge graphs, bi-directional links, etc...

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
Copy link
Author

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
Copy link
Owner

JeremS commented Jul 21, 2021

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.

@JeremS JeremS added the question Further information is requested label Jul 21, 2021
@classicrob
Copy link
Author

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
Copy link
Owner

JeremS commented Jul 22, 2021

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,

@JeremS JeremS closed this as completed Jul 22, 2021
@classicrob
Copy link
Author

classicrob commented Jul 22, 2021

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?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
question Further information is requested
Projects
None yet
Development

No branches or pull requests

2 participants