Show HN: Podlite - a lightweight markup language for organizing knowledge

podlite.org

142 points by zagap 10 days ago

Unbound by any specific domain, programming language, or concept, Podlite stands out as a universal markup language

In addition, the support for Markdown markup as a standard block adds convenience and allows for the use of familiar syntax for text formatting

It's perfect for documentation, educational materials, blogging, and much more for organizing knowledge.

One of the key features of Podlite is its extensibility. This allows for defining unique and domain-specific blocks and expanding the language's functionality according to the requirements of your project.

The Podlite specification is published under the Artistic license 2.0.

Site: https://podlite.org Thank You!

bachmeier 10 days ago

While I think this is worth exploring, at a certain point you end up doing so much that you could just write raw HTML, and then you'd have the advantage of being able to display it directly in the browser and using Javascript's powerful querying features.

  • zagap 9 days ago

    Good question!

    To meet modern requirements and make documents dynamic, we need a flexible API and integration with contemporary frameworks. Simple HTML just isn't up to the task. Although this was the approach during the early implementation (https://github.com/zag/js-pod6), it turned out to be a dead end.

    thank you

kkfx 10 days ago

Please, anytime you try to imitate parts of org-mode, consider org-mode, markup and abilities.

  • exe34 10 days ago

    I had all kinds of plans for my knowledge management for over a decade. Then I started using org-roam and now the activation energy to consider anything else is so high that I'm stuck in a local minimum.

    • okibry 10 days ago

      What do you mean ?

      • exe34 10 days ago

        I had the idea that handwriting, an infinite canvas and cross linking between ideas were going to be a big part of my external knowledge base. So I learnt a lot of technical skills that would allow me to put something like that together. Then right around the time I got an eink tablet and thought I'd start making something, I started using org-roam and it seems more than enough to contain all the information I tend to want to record. If I really want to handwrite or sketch something, I'll just do it on paper and snap a picture, crop it and paste it in Emacs (I have a script that copies it into a subdirectory) and the whole thing lives in a git repo.

        • kkfx 10 days ago

          You might like artist mode (while personally I use it only to "fill" pdf non-fillable form with TiKz) :-)

          • exe34 10 days ago

            Nice, will have a look

            • kkfx 9 days ago

              To quickly locate, via artist-mode the spot to be filled in a pdf, view via pdf-tools https://github.com/Nidish96/cart.el as dummy handwritten fonts I like:

                \usepackage{pbsi} % for most text except all-caps
                \usepackage{fontspec} % for all-caps, require XeLaTeX o LuaLaTeX
                \usepackage{pifont} % for check marks 
              
                \usepackage{xcolor} % for a dummy ink color
                \newcommand{\blue}[1]{\textcolor{blue}{#1}} % as a handy wrapper
              
              usable like, for as much pages as you need (a \clearpage between them)

                % block for page 1, repeat the block for 2, ...
                \begin{tikzpicture}[remember picture,overlay]
                    \node at (current page.center) {\includegraphics[page=1]{ToBeFilledPDF}};
                    \begin{scope}[shift={(current page.south west)},every node/.style={anchor=base west}]
                 
                    \node at (50mm,237mm) {{\blue{\bsifamily normal text}}};
                    \node at (29mm,170mm) {{\blue{\fontsize{12}{13}\selectfont\bsifamily scale text size as needed}}};
                    \node at (62mm,199.7mm) {{\blue{\ding{51}}}}; % a checkmark 
                    \node at (135mm,24mm) {\includegraphics[scale=1]{signature.png}};
                    \node at (1mm,2mm) {{\blue{\fontspec{QTChanceryType}\bfseries ALL CAPS}}};
              
                    \end{scope}
                \end{tikzpicture}
              
              where coordinates came out from cart.el wizard-clicks, then eventual small change by hand to perfectly align. It's not super quick, Xournalpp is quicker, but via LaTeX you can input anything, with very nice dummy handwritten fonts, you can add images if needed (for instance insurances form at least in Italy/France) etc. Next step is eventually make them (a bit long) a PDF/A, adding an eventual vector version of the signature, adding an eventual PADES signature or even embedding the LaTeX source into the pdf, just to teach a lesson to those who in the 2024 still send non-fillable pdf forms meant to be printed, filled by hand, scanned back...
  • lyu07282 10 days ago

    also if you find yourself inventing a new complex syntax for yet another markup language... consider doing something else instead

k8si 10 days ago

Please put concrete examples right at the top of the page you're publicizing!

  • zagap 10 days ago

    The specification for the Podlite markup language is written using Podlite markup itself.

    https://github.com/podlite/podlite-specs/blob/main/Specifica...

    Also online playground is available here: https://pod6.in/

    Thanks for your interest in Podlite! with best, Alex

    • jon_richards 10 days ago

      That playground is cool. I wonder if there are any 2-way playgrounds where the right side is also editable using a Word / Google Docs style interface (and the changes are reflected in the code-style interface on the left). I've always wanted something like that for teaching non-technical people the basics of Markdown. Bonus points if it's collaborative.

      • zagap 9 days ago

        This is a wonderful and highly sought-after idea. However, it requires significant resources, so we will definitely come back to it and implement it. Thank you

WA 10 days ago

What's the main advantage over AsciiDoc?

Although it's already on your roadmap, but it definitely needs more complex examples. Fiddled around a bit with links to same-doc references. Got it to work, but took a while.

  • asystole 10 days ago

    I'm still upset that Markdown ended up getting all the mindshare. AsciiDoc is so much nicer.

    • aspyct 10 days ago

      I'm happy that something at all got all the mindshare. Otherwise we'd still each be using something different.

      Markdown is perfectly usable.

    • everforward 10 days ago

      AsciiDoc is much nicer, but has the unfortunate flaw of having basically one implementation and it's in Ruby (the JS one is just transpiled, the Java one runs on JRuby, not sure about Go and Haskell).

      They don't even have a Python library, which basically guarantees that AsciiDoc won't be taught in colleges.

      I like AsciiDoc, but not nearly enough to mess around with installing Ruby and Gems and then having to do the same for anyone else at work that needs to build the docs for whatever reason.

      Ruby is basically a non-starter for me in general. Dependency management and interpreter versioning is a pain in the ass for interpreted languages, so I'd rather have as few as possible on my system. I've already got Perl and Python installed by default, I'd rather not add a third.

      • pbronez 9 days ago

        Looks like they’re making progress on that since the Eclipse Foundation took over AsciiDoc. There are now Golang and Haskell processors

        https://gitlab.eclipse.org/eclipse-wg/asciidoc-wg/asciidoc.o...

        • everforward 9 days ago

          Ooh, that’s exciting news. I would love to use acidic, I’ve just been waiting for them to give me a reason.

          It’s a long shot, but if GitHub/GitLab added render support for AsciiDoc my life would be complete.

          Regardless, it’s impressive and awesome progress.

    • Ringz 10 days ago

      I'm still upset that Markdown ended up getting all the mindshare and doesn’t evolve. All the fragmentation through different markdown flavors doesn’t help.

      • fwip 10 days ago

        Evolution in the biological world usually looks a lot like fragmentation, at least in the short term.

        • Ringz 10 days ago

          You are right. It would be interesting to compare evolution from a computer scientific and biological point of view. To find out if they are similar…

          I believe that natural evolution makes it easier to let the bad branches die out.

          • bandyaboot 10 days ago

            We need a specification for the forced extinction of markup languages that fail to gain traction.

      • threatofrain 10 days ago

        The original core markdown being privately owned and frozen doomed it to having a politically funny future.

chj 10 days ago

Isn't it the way perl scripts write their documentation? I don't know what makes it good for personal knowledge systems from reading the introduction

  • apgwoz 10 days ago

    Perl's POD, yes. But you're right! The spec authors are Perl folx, and this is clearly derivative. What's kind of interesting is that POD stands for "Plain Old Documentation" and then there's a "lite" version of it... so "lite-r Plain Old Documentation" --- I don't see a clear summary of the differences, though.

ThinkBeat 10 days ago

Reading through the source for the specifications was interesitng. There is a lot of good stuff here, but there is so much to learn but I dont see enough benefits to push me to learn it when I already have Latex,Markdown and straight HTML in my toolbox.

I would like to be proven wrong though.

PixelEngineer 8 days ago

Podlite indeed looks promising, especially with its extensibility and support for Markdown. I agree that if a markup language gets too complex, using raw HTML might be more advantageous. However, I think the strength of Podlite lies in its universality and flexibility, allowing it to adapt to various project requirements.

I'm particularly interested in the extensibility of Podlite. This feature allows the language's functionality to be expanded according to the specific needs of a project, which could be a huge plus in many cases. I look forward to seeing how Podlite evolves.

As for using raw HTML and JavaScript, while they indeed provide powerful querying features, Podlite might be simpler and more intuitive for those who are not familiar with these technologies. I think that's another strength of Podlite.

All in all, I think Podlite is a project worth watching. I'll keep an eye on its progress and look forward to seeing what changes it can bring in the future. Thanks for sharing this project!

fabianholzer 9 days ago

Interesting approach.

I would love to have a notation to get a various ways of representing of intellectual tasks into a single document. A real killer feature in my eyes would be if a kind of umbrella markup language would support a convenient two-way binding for creating and manipulating notations, so for example that diagrams could not only be rendered in a desktop app, but also be manipulated with the markup being automatically being updated. I guess the problem is that light-weight implies too little structure to make such a thing easy to implement...

john2095 6 days ago

I think you've lost the point of Markdown: it's readable as raw text.

I was excited that this was an extension of markdown but now I that see it I react with horror: markdown is not a programming language. This looks rather like a programming language.

randomguid 6 days ago

Wow. This is so good. For reference: It is 4 times smaller than HTML. It is 29.5 times smaller than PDF. It has a really good structure and is more readable than Markdown (sometimes).

alexisread 10 days ago

Looks nice, I have a couple of questions:

Does this use a single pass for the parser? Is there an EBNF spec? What sort of diagrams does it support?

Thanks

  • zagap 10 days ago

    The existing typescript implemetation builds a complete AST (Abstract Syntax Tree), over which middlewares are run in several passes. Yes, there are multiple passes over the tree. This is necessary, among other things, to build a table of contents (TOC). thank you

    • alexisread 9 days ago

      Might not work for my use case then. djot is single-pass so dovetails better with forth-style languages. I do like the blocks and mistake marking though :)

      • austinjp 9 days ago

        Interesting. Have you been using djot for anything substantial, like technical/academic publishing, large projects like entire books, or similar? How does it fare and what is your toolchain? Thanks in advance!

        • alexisread 9 days ago

          I'm trying to use it as part of a new forth-style language, hence the need for single-pass.

          I've found it as easy to use as markdown, but more regular ie. Well defined, which suits a language spec.

          The key parts for me are reference links for execution-thread documentation and ``` blocks to program literally, (and separate/scope comments // from documentation """)

          The toolchain as such is just part of the language- the compiler needs to parse djot. I'm not fully there though.

pixelcodev 9 days ago

Hey, I'm Lee! I like this, nice work! :)

TrueDuality 10 days ago

Ouch. IMHO the reason markdown became so popular is because how simple it is, how well the syntax generally stays out of the way of the content, and its almost entire lack of mixing formatting with document structure.

This is VERY heavy, and VERY invasive. The entire lack of opinion in "use whatever markup you like as long as its wrapped in our markup" seems like an extra awful complication. I'd be curious to hear about what concrete problems the authors of this spec were trying to solve and why they went so far.

  • the_real_cher 9 days ago

    I thought the same thing when I saw the example page. Its closer to html than markdown.

dash2 10 days ago

Damian Conway… a name to conjure with.

What are the advantages of the Podlite design?

  • zagap 10 days ago

    It's extensible and not tied to any specific programming language, allowing for constructs like this ( mix chunks of markdown and build TOC ):

    ---

    =toc head1, head2, head3

    =begin markdown

      # header from markdown
      ## second level
      
     =end markdown
     
     =head1 This is header from Podlite 
    ---

    https://pod6.in/#p=%3Dtoc+head1%2C+head2%2C+head3%0A%0A%3Dbe...

    • dash2 10 days ago

      That's an interesting feature. What is its advantage, i.e. how and when is it useful?

      • zagap 10 days ago

        I agree with you on this. It's a cool feature.

        What I find most interesting is that there’s no need to choose between Podlite and Markdown; you can use both and switch between them as needed.

        I think Podlite could be really useful in document management systems and electronic publishing. But... let's see what practical uses Podlite will find.

        thank you