-
Notifications
You must be signed in to change notification settings - Fork 0
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
Summary of Alex Zahatski's suggestions for Rakudoc #5
Comments
@thoughtstream Thank you for this analysis, and I'm really glad that there has been offline communication between you and Alex. Regarding the I think I'll discuss each of the other ideas separately |
@thoughtstream @zag @lizmat First, I think its important to distinguish between the specification for the minimal renderer, and the ability to customise. The specification we are creating here is entirely backwards compatible, with one minor exception that was never implemented. The v2 specification allows for customisation, so if eg I think that this 'custom' way must be a part of the specification because, as @thoughtstream points out, there are several markup variations for formulas. So we could have The question is how to signal to the renderer where to get the customisation. This is contained in the If there is eg Consequently, to use @zag we did discuss at some point privately how to distinguish between your Also, I am willing to try to implement in However, for the specification, I think we need to keep to the minimum blocks idea. I am going to discuss custom markup codes in another issue, because there may be more discussion about it. Also, I want to discuss the |
Regarding @zag proposals about new markup codes The fundamental problem is limited 'real-estate'. There are not many ASCII uppercase letters, and most of them are used up. In fact we had to resort to There is going to be substantial disagreement about individual usage. So I don't like Emoji, but I do like Font-Awesome icons. So, in I also want to have the space for inline formulas, and for PayPal buttons. Custom blocks is not the answer here because they need to be inline, not a block. Given the limited 'space' for markup letters, the current specification has two ways for creating custom markup codes: Any Unicode character with the property 'upper' can be used for custom markup, and I am going to need to change my You could have This seems to allow the specification the flexibility to have any number of custom markup, without needing to include ones we might like in the minimal specification. Does this seem reasonable to you? |
@zag @thoughtstream We have a number of block/inline pairs, for example, It seems a good extension of the same paradigm to have
However, even as I write, I am unhappy with this. We already have
So, instead may be we could define
where
For the inline version, perhaps something like Actually, I like the idea of having an explicit ALT because internet connection errors play havoc with I also like the idea of eliminating My only concern is that
CAPTION is inserted into the ToC at the position of LEVEL, by default 1 |
@zag @thoughtstream It seems from what I have read that there are suggestions for forward references with RakuDoc v2 has a number of components that have forward references (forward may not be the correct term). The clearest forward reference is However, suppose we have I think all of these are forward references, and the renderer simply has to find a way to handle them. |
@thoughtstream Thank you, Damian, for taking the time to analyze my proposal.
I really like LaTeX, and I'm glad that it's also acceptable to you. LaTeX is the go-to choice for entering mathematical formulas. I have nothing against other formula formats, but in my opinion, LaTeX is more widely recognized and will interest authors of mathematical articles. Additionally, LaTeX is supported by GitHub, which could be a valuable plus. Thanks for the additional information about formats. It's entirely possible to implement them as Named blocks and custom markup codes 👍
Haha, my frequently used emoji is
For backward links, I've come up with a more precise definition that reflects their essence: contextual backward links.
Thank you! @finanalyst , Thank you, Richard, for your attention and ideas.
I'm not sure they're the same thing. contextual backward link is attributed by the surrounding context and it can be displayed differently on the destination page. Keep in mind what destination can be
I'm not sure if there's a problem as described. From my perspective, the When placed within a paragraph,
Regarding the naming, I could provide a more specific response if I knew what you find unsatisfactory about
I'm sorry that
What do you think?
I like the idea of extending support for other formulas, also thank you To maintain consistency, I'll leave a link to the full text of my proposal here: Rakudoc proposal with best regards, |
@zag I have now looked carefully at the proposal linked in the comment above. For the record, it should be noted that you were included in the group of people with access to the RakuDoc-BETA repo, and I regularly asked for your feedback about various issues. The aim of a collaborative discussion is to avoid the sort of situation we now face with respect to the RakuDoc specification, with two quite separate documents. During the discussion on RakuDoc-BETA we spent quite a bit of time on
As a result of those many discussions, Damian, Liz and I created the RakuDoc specification set out in this repo and which is rendered into HTML in the above link. From the posts in RakuDoc-BETA, you will see that Damian, who wrote S26, significantly edited the new specification (going through it with a tooth-comb at least three times). The new version is backwards compatible with S26 except for some forms that were never implemented. Backwards compatibility is not guaranteed by keeping to the textual form of the original specfication, but by the way it is rendered. As @thoughtstream (Damian Conway) pointed out in the opening post, you have some great suggestions. Since they are good, and we have gone past the deadline for suggestions, the deadline has been extended. I am certain that some of the suggestions will be included in the new specification. Other ideas create problems, and I will explain them in detail in new posts to this issue. |
@zag This is about the paradigm for RakuDoc, and the way the specification exists as it does. RakuDoc is not just targetted at HTML. Even though, HTML is used for websites, there are other formats into which documents do and will appear. These include XHTML (for epub books), pdf, and other other formats for printing. The aim of RakuDoc is to be declarative in nature so that when new formats appear, the RakuDoc files are not themselves changed. Consequently references to other markup languages (such as HTML and Markdown, for text, or There is, and will be, a need to include other markup text. The approach adopted for RakuDoc as hinted at in S26, but expanded far more in the new specification, is to allow for customised blocks. As mentioned in a previous post, I have already developed custom blocks for Maps, Latex formula, graphs. For historical reasons it is necessary to provide As for Markdown, it is essential in the current environment, to ensure that all RakuDoc files can be converted into Markdown output. So there must be a |
@zag Concerning emojis Originally I thought that the idea was a custom markup code. As I tried to argue against the idea, I realised that in fact, you are extending the paradigm of the I've run out of time, but I'll be discussing |
Hi, @finanalyst, I think this discussion is about the ideas from my version of the Rakudoc specification, rather than the specification itself.
But let me remind you that you simply sent your draft version of the specification and suggested working on it. I guess you used user documentation of Raku Pod named In situations like this, I believe it would have been better to gather opinions beforehand. You could do this publicly or write to me and ask for input, especially since we have known each other for a long time, and you are aware of my work on Podlite.
I'm glad my ideas have generated such interest. Thank you |
@zag we disagree on process, but then we are human both of us, so disagreement is inevitable. The podlite project is something I do want to be able to use in a project I am thinking about. So, I do appreciate your work. Focusing on the RakuDoc, I want to discuss some of the new ideas you have, and some ways we can get them to work for both a RakuDoc v2 compliant renderer and podlite. So, I'll list them here: EmojisAs I mentioned above, adding another syntax to Contextual linksAs you said, these are extensions of I would like to see how they could be used in practice with some use cases. It seems to me that the extension could first be implemented in three ways:
RakuDoc v2 as it stands allows for renderers to provide new codes and blocks. So, using this convention podlite could immediately implement the new markup, and if it is useful, it will be copied by other renderers. Place or includeRakuDoc v1 specified V1 also included the schema The problem, as you have pointed out, and which Damian accepted in the first post, is that a complete Table of Contents is really a block, not an inline. The same could also be said of text from large files, or an HTTP link. So my suggestion is to have both By having both a block I do not think it is necessary to deprecate any of the schemas, eg |
Closed was a mouse misclick. Reopening |
@zag @thoughtstream Before making a mistake when inputting my last post, I was describing Do not include things.The reason I feel strongly about @zag By the way, you commented above that you did not see the connection between What about a
|
done it again. Reopen |
I want to thank everyone involved here for the time and thought they've put into this issue. You've all clearly put a ton of effort into thinking through the various implications. I'm confident that whatever consensus you come to will result in a strong design. And, since I haven't put the same careful attention into the design considerations, I won't weigh in on the substance. But I do want to raise one procedural point: In the (hopefully unlikely!) eventuality that we can't reach consensus, the Raku community as a whole will decide on the RakuDoc specification using its normal process for making decisions in the absence of a consensus (i.e., the Problem Solving repo and, if needed, RSC involvement). Of course, @zag, if you end up disliking the RakuDoc specification that the Raku community creates, Podlite could use a different specification; you could even fork the RakuDoc spec, as permitted under its license. However, if you end up doing so, we would ask that you use some name other than "RakuDoc" for that specification both to avoid confusion and because the "Raku" label belongs to the community as a whole (in a moral sense, and to the Raku Foundation in a trademark-law sense). Again, I don't see any reason to think that we'll fail to reach consensus on a RakuDoc spec that works for Raku and for Podlite. But I think it's important to be clear on the procedure just in case ☺ |
I don't think that approach works. The current draft of the spec includes the examples:
Both of which insert text with RakuDoc markup in them. For a start, the placement mechanism would be much less useful if the placed content The circular inclusion problem is, frankly, a solved problem. The renderer simply uses a stack |
Placement blocks and inlinesHere are my thoughts about the notion of adding a In short, I am strongly in favour of this, but I think both mechanisms I will also touch on a few other issues in my discussion, including the removal 1. Inline vs block placementsWe definitely should support a block-oriented placement form, but it is Personally, I suspect In contrast, directives (such as Looked at from that perspective, So, to complement the
2. Graphics as placementsAs the above example implies, I think that graphic inserts (images, charts, diagrams, etc.) This would mean we can remove the However, as @finanalyst has already pointed out, unlike the other placement types, Blocks can already be given captions and included in the ToC, through the use of the So we could allow placements like:
...and:
We also have prior art on inlines that take ALT-like texts: the optional “visible text” fields
This might even be handy in the general case. We could change the rule for how missing
..or:
..or:
3. Inline vs block ToCsAs for the question of whether we need a separate In my view, the range of heading levels that a And, if my above suggestion for adding metadata options to the
I think it’s better that every kind of insertion into the text should be specified I’d rather we had the uniformity of:
...than the semi-arbitrary diversity of:
|
hi, @codesections ! Thank you for the positive vibes! Your acknowledgment of the hard work put into the RakuDoc specification is motivating. I love that my ideas improve Rakudoc 🥳 I appreciate the clarification on the use of the "RakuDoc" name. I just to provide some additional information from my side. I've used a separate branch specifically to prepare the RakuDoc proposal: https://github.com/zag/specs/tree/rakudoc-proposal The name "RakuDoc" is only used within this branch for the purpose of presenting my work. On another note, I want to highlight that I've intentionally chosen to stay away from discussions that get too personal. I truly believe that focusing on ideas and keeping the conversation positive is the key to progress. Sparkling and smoky discussions are eye-catching, but it's the warmth that drives progress.😄 Thank you for your understanding Warm regards, |
Placement of RakuDoc sourcesI don't think that we have ever stated explicitly that a
|
My original intention (and still my preferred approach) is that
Meanwhile, the kind of content being placed is inferred from the
Renderers are not required to render anything but plaintext and RakuDoc, In the case where a URL does not end in a recognized extension:
...then the type of content (and hence rendering) may be inferred from the schema:
Agreed.
Yes. Every kind of placement should certainly be treated as being in its own block scope.
Nothing. In that example, the
Probably. That’s certainly a cleaner use of a semantic block |
- first draft for =place - changes needed to remove =graphic - summary tables need changing
@zag @thoughtstream I was looking at the emoji suggestion. There is actually no need to change the specification because |
Agreed. But I also agree that an example of this feature would be helpful. |
I've read through this thread carefully three times. I have a couple "technical" things which I'll write as separate comments, but otherwise little to express beyond the emojis I chose during a fourth pass to summarize my thoughts and feelings about each comment. It's not often I read such a design thread and end up getting to marvel at both the substance and the quality of the exchange. Thanks! I'd like to celebrate the palpable sense of family and offspring -- of multiple "parents" and their multiple "children" -- by writing a comment that I look forward to seeing output via a future Rakudoc renderer: E<MAN, EMOJI MODIFIER FITZPATRICK TYPE-6, ZERO WIDTH JOINER, WOMAN, EMOJI MODIFIER FITZPATRICK TYPE-1-2, ZERO WIDTH JOINER, GIRL, EMOJI MODIFIER FITZPATRICK TYPE-3, ZERO WIDTH JOINER, BOY, EMOJI MODIFIER FITZPATRICK TYPE-4]> (👨🏿👩🏻👧🏼👦🏽) |
This comment and my next are two design suggestions. Apologies if either or both have already been discussed / accepted / rejected. I see that RakuDoc has some support for what look like named parameters/arguments for some constructs. For example in More generally, is this "named" parameter/argument support pervasive across other constructs? For example, Richard wrote about What about in |
I recall wondering a while back what Then the discussion arose as to whether the content being placed was or wasn't to be interpreted. So, there's an ambiguity about what "place" might mean, and that must be resolved. Further, I hope it's resolved as Damian suggests, and that got me thinking. If
|
@raiph asked:
Yes. Named arguments are clearly much better than positionals The current proposal is that the syntax is simply:
As for I actually did consider whether to extend the inline syntax to allow named arguments, but decided that |
@raiph asked:
I'm all in favour of finding a better keyword than My problem with generalizing
Parsing a particular block and making the results available for further processing is one of the main use-cases |
closing as completed |
Hi @finanalyst
To recap a comment I wrote earlier:
That said, I'm curious what process was followed prior to closing it. I'm used to seeing a general theme in which, to some degree, there are linked commits, or linked new issues, or discussion that concludes a point raised has been sufficiently addressed, before it gets closed. It looks like that doesn't apply to this issue. For example, near the start of @thoughtstream's opening comment he wrote:
An in-page search for "checked" only caught his own further commentary ("adding a So I'm wondering which way to think about things:
? Thank you for your focus on RakuDoc! |
@ralph Thank you for the response.
Several things to say, including about community governance.
1) The whole process of the RakuDoc revision has taken place in stages. The
Alpha version was mostly written by me with some editing by Liz.
2) At the same time, I became a member of the. Raku Steering Council and we
discussed how to go forward with RakuDoc. There was a concern that opening
the revision to a free for all would chew up a lot of time. There are only
a few people who have any experience rendering RakuDoc (POD6) and who could
contribute to the spec. At the same time Raku is a community driven
project. We thought that it might be useful to try a multi-stage approach.
3) The Beta version would be worked on by a small group, effectively
Damian, who first specified POD6, myself, and Liz. Aleksandr was also a
part of that group. The form of the specification changed, clarifying lots
of things. By the end of August, a Gamma version was ready.
4) The Gamma version was made available to the community and widely
advertised.
5) The Steering Council decided that a limited period of time would be
given for consultation - 2 months - after which the draft would be given to
the RSC for approval. The deadline was 2 months lasting to 1 November.
Built in to the deadline was the provision that if a major change was
suggested needing an extension, the RSC would formally adopt one.
6) Very few changes were suggested until just at the end Alexandr submitted
a whole swathe of changes. The correspondence can be seen here.
7) Several of Alexander's suggestions lead to a better generalisation of
some things, several were already in V2, some were possible via the
customisation inherent in the specification. Metadata options are the
easiest to customise and it expected for all renderers to have their own.
It was clear an extension to the deadline was needed. And it was extended
to December though January is also possible.
8) Due to other work, I could only get the recent changes in after December
1.
So the question is whether any major changes need to be incorporated.
It was my judgement that everything had been included. I'm not infallible.
I thought we had included everything.
I opened a new issue about submitting the revision. So if there is a major
change needed it could be signalled there.
Regarding :checked. I am against the suggestion and I thought Damian had
indicated the same. Perhaps not, so here's my thoughts.
1) The idea of :checked is associated with # as a magic meta option for a
variety of blocks, such as item.
2) magic # was explicitly excluded from V2 and it represents the single
backward incomparability with V1. To be fair, none of the renderers of POD6
ever implemented magic # or numbering in general.
3) For simplicity and a more intuitive way of numbering, V2 introduced a
new set of blocks that explicitly number items.
4) Regarding :checked specifically there is an implication of a form, which
is an HTML way of expecting user feedback. RakuDoc does not specify user
interaction because it is declarative and for multiple output formats.
Anything that is implicitly format related, such as an HTML form, is not a
part of base RakuDoc. However, it is expected that developers will create
custom blocks which will be format constrained. (I intend to write custom
blocks for HTML services, such as 3rd-party payment buttons).
Similar remarks relate to task lists.
Finally, I think there will be at some stage in the future, a V3. As
developers create new customer blocks it will become clear which
instructions should become built in.
Does this help?
…On Fri, 8 Dec 2023, 16:02 raiph, ***@***.***> wrote:
Hi @finanalyst <https://github.com/finanalyst>
closing as completed.
To recap a comment I wrote earlier:
It's not often I read such a design thread and end up getting to marvel at
both the substance and the quality of the exchange. Thanks!
That said, I'm curious what process was followed prior to closing it. I'm
used to seeing a general theme in which, to some degree, there are linked
commits, or linked new issues, or discussion that concludes a point raised
has been sufficiently addressed, before it gets closed.
It looks like that doesn't apply to this issue. For example, near the
start of @thoughtstream <https://github.com/thoughtstream>'s opening
comment he wrote:
*New*
task lists, C<=item :checked>,
This is not in the current specification, but I think it certainly should
be.
An in-page search for "checked" only caught his own further commentary
("adding a :checked metaoption for any block (or, at least, for =item and
=headN blocks) seems like an excellent idea") and a search for "task lists"
didn't catch anything other than the quote from the email Damian was
responding to.
So I'm wondering which way to think about things:
-
In general, it was a productive discussion, and one can expect what
was agreed (eg Damian and Alex presumptively agreed about :checked,
and no one disagreed) have been, or definitely will be, incorporated into
the RakuDoc spec text, even though, evident agreement aside, there's no
indication in this issue that they have been or will; *or*
-
In general, while it was a productive discussion, and readers can
reasonably assume that what appeared to have been agreed will not be
blocked from inclusion in the RakuDoc spec, it will be up to participants
to chase things to write commits or PRs that add corresponding verbiage to
the spec text; *or*
-
Something else.
?
Thank you for your focus on RakuDoc!
—
Reply to this email directly, view it on GitHub
<#5 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AACYZHANFFHDJJ2KHX4L3VTYIM2ZBAVCNFSM6AAAAAA6GL6SFOVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTQNBXGQ2DONBWGM>
.
You are receiving this because you were mentioned.Message ID:
***@***.***>
|
Hi @finanalyst
Yes, thank you. I still had questions about 6 thru 8, but given Damian's recent comment and Liz's thumbs up of it I'm going to leave them unspoken. I'm going to presume the collaboration with Alex, including the processing of this issue, went well, notwithstanding the lack of links to commits and confusion about Happy holidays! 🙏 |
I've just opened an issue (hopefully the last! :-) regarding the |
@raiph Liz just pointed me at the reddit comments about Pod. I had not read your input there when I wrote my comment above. Hopefully, you might have seen that a recent commit includes Alexandr as an author of the revision document, something he was happy to agree to. We may not agree about everything, but I think we all respect each others' work and contributions. |
Here’s my summary of Alex’s suggestions
(drawn from an email discussion we had before he submitted them)...
These are already in the current specification
This is not in the current specification,
but I think it certainly should be.
Note, however, that we are also removing "magical" inline options like:
...so we could not accept another magical inline option specifier like:
But adding a
:checked
metaoption for any block(or, at least, for
=item
and=headN
blocks)seems like an excellent idea.
This is a complex new feature and needs separate and more-extensive discussion.
These are already in the current draft specification,
(except that
=row
is a directive, not a block, and we also support=column
to provide more flexibility in laying out tables).
Even after discussing these with Alex,
I'm still not convinced that these need to be blocks,
rather than kinds of placement links.
I can see Alex’s point that making the table-of-contents a block,
rather than just a
P<toc:...>
placement link avoids the problemof how to cleanly render “embedded” TOC placements like:
This is already covered in the current draft specification,
except that the syntax is
=graphic
andG<...>
.(Because not all graphical elements are "pictures" :-)
However, Alex rightly pointed out that
G<image.jpg>
for inline images couldjust as easily be
P<graphic: image.jpg>
or even justP<image.jpg>
.Except that, if we were to do that, then we’d have to extend
P<...>
codes to allow for an ALT text as well. That might not be a bad idea
anyway, since other kinds of
P<...>
placements might also benefitfrom ALT tags (especially when the source being inlined is not
accessible for some reason).
This is not in the current specification,
but I think it should be.
The only question is which internal syntax for specifying the formulas
should be used:
Note that the above choices are ordered from my personal most-preferred (Typst or ASCIIMath)
to my OMG-PLEASE-NOOOOOOOOOOOOO!!!!!!!!!!! preferences (MathML, OpenMath, or OMDoc) :-)
I’d be okay with LaTeX syntax, but I think the more humanist Typst or ASCIMath
would fit better into the Rakudoc universe.
These are already part of the current draft specification,
with the same codes.
Though I almost never use emjoi myself, allowing
E<>
to specify emojidoes seem like a reasonable extension that would be useful to many people.
(I confess there are plenty of times I’ve been sorely tempted to document
some annoying bug, misfeature, or other issue with a 💩 emoji ;-)
It took me some time to comprehend what these are.
Finally, Alex and I concluded the best way to describe them
is that they are
P<>
codes that display likeN<>
codes.That is they are a mechanism for specifying pop-ups (or sidebars or footnotes)
whose contents are drawn from another document (or another part
of the current document).
I think they would be a good addition to the current specification.
These are already removed from the current draft specification
As I mentioned above, we will need to further discuss
the entire issue of placement links vs dedicated blocks.
The text was updated successfully, but these errors were encountered: