I'm answering these out of order, sorry. :)

On Tuesday, March 17, 2015 at 12:40:53 AM UTC-5, Reid McKenzie wrote:
>
> Hey Christopher,
>
> I'm Reid, the Grimoire maintainer.
> I'm delighted to see that someone besides myself and Alex is interested in 
> this project and I wish you the best in your GSoC application.
>
> I'm somewhat concerned in reading your proposal that while you claim the 
> proposed data structure represents a "minimal superset of the other 
> documentation engines", it is by no means a superset of the lib-grimoire 
> infrastructure.
> In fact the proposed "list of defs, list of namespaces" fails entirely to 
> address the issues with multiple versions of multiple artifacts on multiple 
> platforms that I've spent the last four releases of Grimoire and 
> lib-grimoire wrangling.
>

Agreed, I think addressing versioning is a critical aspect.
 

> The Thing structure and list/walk/read/write API I've provided via 
> lib-grimoire seem to solve these issues at least in my work of trying to 
> build a general documentation engine behind Grimoire so that I can just add 
> artifacts left and right.
>

I haven't looked at this yet, but I think that's a requirement for this.
 

> If I wanted to build a system like Grimoire where the fundamental 
> navigation is entirely `group -> artifact -> version -> platform -> ns -> 
> def` hierarchical decent, why would I choose your representation over the 
> representation already present and usable in lib-grimoire?
> I note with some entertainment that there exists a set of namespaces 
> duplicated between ClojureScript's Clojure and ClojureScript sources.
> For these namespaces and the defs therein, CrossClj.info incorrectly 
> displays the Clojure namespaces when doing a qualified symbol lookup.
> Grimoire used to have the same issue until I asked David Nolen and he said 
> that's a bug.
> You absolutely need the platform to disambiguate what definition and 
> source you're looking at.
>

That's interesting. I suspect the new reader conditional and cljc portable 
file extension will further complicate this.
 

> If I wanted to display the documentation for all the forks of 
> `org.clojure/clojure`, how could I get all of that into your system?
> All the forks have defs in the namespace `clojure.core`.
> How do you propose to tell them apart?
> You have to have the Maven artifactid and groupid.
>

Yes.
 

> Multiple versions of a single artifact?
> Now you need the Maven version as well.
>

Yes.
 

> Now we've encoded all the same information that lib-grimoire already does.
> Why would I agree to use this pair of lists structure and then reconstruct 
> a hierarchy from node data when I could use a fundamentally hierarchical 
> structure for instance the one proposed [here](
> https://github.com/clojure-grimoire/lib-grimoire/issues/9)?
> [by my metrics](http://conj.io/heatmap 
> <http://www.google.com/url?q=http%3A%2F%2Fconj.io%2Fheatmap&sa=D&sntz=1&usg=AFQjCNGFEQ4IhEHCVXR7Mu2kYvjxTb0_cg>),
>  
> the most-visited URLs on Grimoire specify a single def or other content 
> precisely.
> Why would I want to adopt a data format which does not inherently 
> represent this common case of documentation being a lookup when as above I 
> could build or use one that does?
> That you discard these datums with no discussion is worrysome to say the 
> least since I found that they were needed and was forced to invent them 
> after I had done without them for some time.
>

Like I said in the other mail, Chris (or whoever does this project) is 
going to start with less context than you or I. The project hasn't started 
yet and I expect this kind of feedback to be incorporated.
 

> I agree that there is a lot of duplicated code between the various 
> documentation systems.
> Most of it has to do with finding namespaces on the classpath, loading 
> them and documenting them.
> Thankfully we already have `clojure.tools.namespace` which is supposed to 
> solve this problem.
> Currently `clojure.tools.namespace` can't find ClojureScript namespaces.
> As I recall, codox ducks this limitation by implementing its own classpath 
> searching code.
> (apologies to Stuart Sierra who I bugged about patching this a while back.)
>

If stuff like this needs to be built, I think that's a perfectly adequate 
sub-goal for the project.
 

> Your goal of "Building a repl plugin that will search statically across 
> the code accessible by the project so you can query all artifacts without 
> actually loading them." could use some clarification.
> It took me longer than I care to admit to realize you were talking about 
> browsing _documentation_ via some packaged documentation structure(s) 
> before the user actually loads code.
>
> Since the novel work you propose is really a documentation distribution 
> convention, you should say more about that.
> Are you suggesting that every artifact package a "doc.edn" file?
> Is this an open research question you don't have an answer to yet?
>

I do not know what the serialization format should be, but I envision this 
being a jar of stuff that can be automatically built on a project and 
deployed to maven repos with a known classifier (just like the -javadoc and 
-source jars built and distributed with most Java projects). Except instead 
of distributing source metadata as html, we can distribute it as *data*. 
Given a known classifier, this artifact can be consumed automatically by 
build or other dev tools. For example, imagine that you could download 
source metadata artifacts for all of your project dependencies and run a 
dynamic web service that gave you "clojure docs" specifically for your 
project. Or let you search across them, scoped specifically to your 
dependencies.

Another aspect that I didn't list in the original proposal to keep things 
simpler is the idea of merging multiple metadata artifacts for the same 
project. For example, examples or other explanatory information (for 
Clojure itself for example) could be maintained in a secondary repository 
of just that, then merged into the automatically extracted source metadata 
to produce something like what you get with clojure docs or grimoire. In 
particular, people are often bothered by the conciseness of Clojure's docs. 
There are no plans to change that, but there is the option to combine those 
docstrings with (for example) a curated repo of examples or extended 
description. 
 

>
> This is a set of problems I've sunk a lot of time into and would like to 
> see addressed.
> It is certainly not my intent to dissuade you from this project.
> Whatever documentation packaging and distribution system you come up with 
> I'm likely to wind up supporting in Grimoire so it's in my direct interests 
> to make sure that you skip as many of the pitfalls that I hit as possible.
> I hope that you find this feedback constructive, and I look forwards to 
> seeing how this project evolves.
> Feel free to bug me about Grimoire related stuff, especially if you find 
> bugs or documentation issues :P
>

We will regardless. :) Thanks for the feedback.
 

>
> All the best,
>
> Reid
>

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to