JacquesCarette / Drasil

Generate all the things (focusing on research software)
https://jacquescarette.github.io/Drasil
BSD 2-Clause "Simplified" License
140 stars 26 forks source link

Update 'Creating Your Project in Drasil' Wiki #3072

Closed peter-michalski closed 1 year ago

peter-michalski commented 2 years ago

This issue is for updating the above wiki page as I build a Drasil example. Updating the workflow to include wiki maintenance might be a good idea, and be worth an issue or discussion page. Is it possible that, as Drasil is developed, updates to the wiki are sometimes forgotten? It would be unfortunate if potential contributions to the project are abandoned because deprecated manuals decrease usability.

Following the advice of @JacquesCarette in #3067, I have started to build an SRS for the website by creating a 'Drasil example'. The initial commit is e3d112d620a7386526af5e27acce75141f2ec7cc.

As I was setting up the base files following the Creating Your Project in Drasil wiki, I noticed that the yaml and cabal file section must be out of date. The yaml and cabal files are currently housed within each example, but the wiki page suggests that there is one common yaml file in /code/drasil-example/package.yaml. I'm not sure if this is a typo or if indeed this used to be the case regarding yaml files in Drasil.

Either way, there may be more typos or deprecated instructions. I will document potential typos or deprecated instructions as I proceed with the 'website example'.

peter-michalski commented 2 years ago

This now has me wondering how quickly (quantifiably) various types of users (of software in general, not Drasil specifically) give up when encountering out of date documentation.

smiths commented 2 years ago

Excellent observation @peter-michalski. I know for a fact that at least some people give up when they encounter out of date documentation, because I've certainly done that! My son was just telling me about all the headaches he had with a highschool programming project because the library he was using was no longer maintained, but he didn't know that at the outset of the project. Something that should have been easy took hours of time, and then had to be abandoned to do the task a different way.

That is one of the selling features of Drasil in Drasil. If Drasil could generate its own documentation and the documentation was always current, we wouldn't have the documentation challenges you are eluding to. Unfortunately, the problems you found in our instructions are because they were written manually, and not fully maintained.

Please continue as you have suggested and watch for typos and deprecated instructions.

JacquesCarette commented 2 years ago

Completely agree with @smiths .

peter-michalski commented 2 years ago
peter-michalski commented 2 years ago

https://github.com/JacquesCarette/Drasil/blob/4e40ad9860c3cba87e905ba455ef5f7eb8b75d2e/code/drasil-example/template/lib/Drasil/Template/Body.hs#L43-L47

peter-michalski commented 1 year ago

The tutorial appears, when referencing the Haddock documentation, to skip several potential sections at this point. We should consider adding a comment here that a full list of potential sections can be found at that link, and that not all sections need to be included. A similar comment exists near the bottom of the tutorial, but should probably be moved higher. Either here or near the top of the tutorial.

terms is defined as a ConceptChunk in other examples.

Side note: correctness is defined twice in software concepts

Slope Stability has figures.hs, but does not import figure.hs. A figure is required for PhySysDesc.

symbMap really needs more of an explanation. I'm about half-way through the tutorial and it's not clear how to use it, and what it is really for. The tutorial does identify this as the chunk database, but this needs more explanation, and its importance needs highlighting. Furthermore, there is no step 10 in the next section, step 10 is missing. At this point it is not clear where to update symbMap. I needed to reference other examples to figure out what concIns is and where to add it.

This is not done in any example.

Should add a note that this needs to be added within SSDSolChSpec of SSDProg. This section also has an unnecessary comment about adding modules to package.yaml

Same comments as for the assumptions section. Also need to update some paths.

Same comments as for the theoretical models section.

Same comments as for the theoretical models section.

Same comments as for the theoretical models section.

Same comments as for the theoretical models section.

This is not needed.

This is not needed.

Update path.

This section is not clear. A sample of examples do not have this section to reference.

Same as above. Only GamePhysics uses this.

peter-michalski commented 1 year ago

Clarify adding terms to TermMap. (nw websitelayout : nw website : [nw program]

JacquesCarette commented 1 year ago

Really great documentation about what's currently wrong. What's the plan forward?

peter-michalski commented 1 year ago

Below is a summary of the changes that I will make to the tutorial (and related files):

smiths commented 1 year ago

Very thorough @peter-michalski! Is there a logical place for us to record the version of Drasil (current commit hash, or maybe a tag?) for which the instructions are correct? Over time they will get out of date again (unfortunately), so until we automatically generate the wiki, it would be good to know the baseline.

I'll also ask for you to keep an eye on any changes to Drasil so that we remember when the project instructions get out of date again.

peter-michalski commented 1 year ago

@smiths I can add a comment in the updated tutorial that the instructions are for commit b555167ce688040b766742b03442fbf7af750087 on 29 Oct 2022.

peter-michalski commented 1 year ago

The wiki tutorial is now updated.

JacquesCarette commented 1 year ago

Indeed, nice thorough list. And thanks for the fixes.

Can you speculate about the following things:

This issue is not the best place to 'do' such speculation - probably a Discussion would be better suited.