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

Cut a new release #198

Open
nojb opened this issue Nov 19, 2019 · 17 comments
Open

Cut a new release #198

nojb opened this issue Nov 19, 2019 · 17 comments
Milestone

Comments

@nojb
Copy link
Contributor

nojb commented Nov 19, 2019

I think we should cut a new release. This will allow users to migrate to the 2.0 version and we will get more bug reports, etc.

What needs to be done before:

  1. complete some of the printers (text, markdown)
  2. document, cleanup the exposed API

I will try to do this in the next couple of weeks. Please post here if you can think of anything else that needs to be done before a release.

@nojb nojb self-assigned this Nov 19, 2019
@samoht
Copy link
Contributor

samoht commented Jan 16, 2020

Ping. Would be indeed very nice to have a new release (especially with the dune port).

@nojb
Copy link
Contributor Author

nojb commented Feb 22, 2020

Ping. Would be indeed very nice to have a new release (especially with the dune port).

Hello @samoht! Apologies for the long delay in getting back on this, I've been submerged by other things.

This is what needs to be done before a release:

Clean up the public AST type

Currently the public AST type is parametrized by a type variable that does not serve any purpose (it is an implementation artifact).

  • Remove this variable from the public API.
  • Get rid of the submodules in Ast corresponding to each constructor of the AST type, replace them by inline records or just plain records.

Adjust the HTML "printer" interface?

Currently the HTML printer (html.ml) is a record of functions that write on Buffer.ts. It can be extended by open recursion.

  • I would like to use the same printer type for all backends, and
  • I would like to change the signature so that we are not tied to Buffer.t's. Maybe print on Format.formatter?

I resisted doing this second point because any whitespace change in the printer output will break the testsuite which compares the generated HTML bytewise. But this is too fragile anyway and should be replaced by a comparison of the "parsed" HTML.

Add comments to the public interface

  • The meaning of each AST constructor and their arguments, and to the functions exposed in omd.mli should all be documented.
  • The "tag" system should be documented as being experimental and that it could go away in a future release.

Complete implementation of non-HTML backends

  • Complete the "Text" backend (text.ml)
  • Fix the FIXMEs in the "Markdown" backend (markdown.ml)

Other points to work on (not required for release)

  • Rewrite the inline parser (in parser.ml): the current parser goes through some hoops to try not to allocate too much but I don't think it is worth it, and it is very hard to read and modify. A simpler combinator parser may be enough and be much simpler to work on.

  • Decide what to do with the "tag" system; this was added in Added implementation of inline tags and tag blocks #191 but is highly non-standard (I am not aware of any other Markdown implementation that has something like this). We should decide if we keep it, if the syntax needs to be adjusted or if we want to replace it by something more standard.

  • In general I think that if we are going to be adding non-standard extensions anyway, we may as well follow the lead of pandoc (or some other already established implementation), instead of coming up with our own (incompatible) extensions.

That's it I think. Help welcome !

cc @clecat
cc @deveah who expressed interest in collaborating.

@deveah
Copy link

deveah commented Feb 24, 2020

Hello! I'm going to try to clean up the public AST type.

@shonfeder
Copy link
Collaborator

I should be able to help out here a bit. I'll start with

Fix the FIXMEs in the "Markdown" backend (markdown.ml)

since that should be provide clear guidance. Please let me know if you'd like me to focus on something else.

@nojb
Copy link
Contributor Author

nojb commented Jun 15, 2020

Hi @shonfeder, and thanks for the offer! Sure, that would be a good first step.

A bit of context: the project is basically "stalled" after a big rewrite because of not enough manpower (I am too busy to dedicate any serious time to it at the moment, and no-one else is available either).

If you have time available to work on it, it would really useful to help push towards the next release. I will gladly provide guidance of what needs to be done. Let me know (either here or by mail) if you want more information or if you want to discuss any other aspect of the project.

@shonfeder
Copy link
Collaborator

Thanks for the context and the offer! If it turns out I can keep the time freed up to help here in a substantial way, I'll definitely take you up on the latter :)

@clecat
Copy link
Contributor

clecat commented Jun 16, 2020

Hello !
I would be glad to help if hands are needed.
About the tags, I added them as a way to add personalized behaviours into the printers, but as you mentioned, this is not at all a common behaviour and might not be a good idea to keep.

And sorry for the late reply, I did not see this issue at the time

@nojb
Copy link
Contributor Author

nojb commented Jun 16, 2020

Thanks @clecat ! Any and all help is warmly welcomed :) I wrote some points in the issue description. Feel free to take up a point that you like, and do not hesitate to ask me if you have any questions/suggestions/etc.

@nojb
Copy link
Contributor Author

nojb commented Jun 19, 2020

Did the first two points in #201

@nojb
Copy link
Contributor Author

nojb commented Jun 20, 2020

Also reworked the testsuite #204 , and added an intermediate representation for HTML #128 which made the printing sort of trivial (both for HTML and plain text), so got rid of the printer data structure.

@shonfeder
Copy link
Collaborator

Hi! Just circling around here to see if I could be of help. It looks like you've made a lot of progress over the week! In particular, the stuff under "Complete implementation of non-HTML backends" seems completed (items checked and the referenced files don't exist any more) :) It's not clear to me where more help would be useful to make it possible to cut the release. Is there any other particular help I can offer over the weekend?

Thanks!

@nojb
Copy link
Contributor Author

nojb commented Jun 20, 2020

Hi @shonfeder,

Yes, sorry about that :) I had a rare opportunity to work on Omd this weekend and so I ran with it and tried to get as much as possible done in the available time.

I don't see any self-contained small issue to work on right now for the 2.0 release, but we will have for sure after the release. Right now I am trying to whip everything into shape to get the release out the door as soon as possible so we can get more testing and more feedback, which will help us prioritize new features, etc.

@shonfeder
Copy link
Collaborator

No worries at all! Very glad to see the progress, and even better it happens without my efforts :D -- thank you!

Sounds good to me. Feel free to tag me if I can be useful!

@aantron
Copy link

aantron commented Mar 7, 2021

What is the status of the release at this point?

@nojb
Copy link
Contributor Author

nojb commented Mar 7, 2021

What is the status of the release at this point?

https://discuss.ocaml.org/t/markdown-library-omd-seeking-mantainer/7420

@aantron
Copy link

aantron commented Mar 7, 2021

(For readers here, I replied in the Discuss thread — thanks @nojb).

@shonfeder shonfeder added this to the 2.0 milestone Apr 14, 2021
@nojb nojb removed their assignment Mar 11, 2023
@tatchi
Copy link
Collaborator

tatchi commented May 1, 2023

Hey, what's the current status of this issue ? And more generally, what are the remaining blockers for a 2.0 release?

As far as I know, we still need to implement a function that can print back the AST to a string. This will require us to address the issue at #223.

Is there anything else that we need to consider?

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

No branches or pull requests

7 participants