[Policy] Add README.md to each submodule with optional getting translated

Created on 26 February 2023, almost 2 years ago
Updated 28 February 2023, almost 2 years ago

Problem/Motivation

Currently, README.md files are not available for each sub-modules. Instead, the documentation is contained within the .module files to facilitate parsing by api.drupal.org.

As a coder who reads source code, I prefer to read the README first. Visiting api.drupal.org is an option, but usually, I was leading to there by search engines. If I have the source code on my local, I read the README.md first.

Meanwhile, we are using GitLab more and more, it parses README.md automatically.

And I read a message on slack recently that api.drupal.org was not working well.

Meanwhile, I am considering using ChatGPT to help and translate the README.md file into other languages. It can lower the barrier more or less for learning from the examples module.

All README.md files will be parsed/rendered automatically on GitLab as well. And each transition should be reviewed by a native before gets committed.

Steps to reproduce

Proposed resolution

  1. Continue with extracting a README.md from the .module file to avoid credits gaming, do it in one go, or do it with 3-5 submodules per batch.
  2. Extract a README.md file from the .module file for each submodule -- Chatgpt may help
  3. Remove those long comment blocks from .module files
  • To have an example of help_topics: help_topics_example, ✨ Add help_topics example Active , postpone the implementation or integration of help_topics into examples.
  • Allow to accept translations of README.md, but optional, for the syncing. If the translation is outdated, give it a time window, e.g. one or two weeks to update, or it gets removed.

Take js_exmaple sub-module as the example, optional translation support with the following file structure:

README.md // English by default
README.translation
   - zh-hans/README.md // Chinese,
   - es/README.md // Spanish
   - fr/README.md // French
   ... 

Or with the following file paths

  • js_example/README.md
  • js_example/README.translations/zh-hans/README.md
  • js_example/README.translations/es/README.md
  • js_example/README.translations/fr/README.md
  • ...

Fewer lines would be better in code or TLDR.

Remaining tasks

User interface changes

API changes

Data model changes

🌱 Plan
Status

Active

Version

4.0

Component

Documentation

Created by

πŸ‡¨πŸ‡³China jungle Chongqing, China

Live updates comments and jobs are added and updated live.
Sign in to follow issues

Comments & Activities

  • Issue created by @jungle
  • πŸ‡¨πŸ‡³China jungle Chongqing, China
  • πŸ‡©πŸ‡°Denmark ressa Copenhagen

    I agree with your proposed resolution @jungle, moving the documentation out from each and into a README.md makes a lot of sense.

    So, as an example, would it mean deleting this part from the js_example.module?

    /**
     * @defgroup js_example Example: JavaScript
     * @ingroup examples
     * @{
     * Examples using Drupal 8's built-in JavaScript.
     *
     * We have two examples here.
     *
     * One 'weights' content and then sorts it by weight. This demonstrates
     * attaching JavaScript through Drupal's render arrays.
     *
     * The other demonstrates adding an accordion effect to content, through
     * Drupal's theme layer.
     */
    

    New README.md file (D8 reference removed):

    # Examples using Drupal's built-in JavaScript.
    
    We have two examples here.
    
    One 'weights' content and then sorts it by weight. This demonstrates
    attaching JavaScript through Drupal's render arrays.
    
    The other demonstrates adding an accordion effect to content, through
    Drupal's theme layer.
    
  • πŸ‡©πŸ‡°Denmark ressa Copenhagen

    Added child issue creation as a task under "Proposed resolution".

  • πŸ‡¨πŸ‡³China jungle Chongqing, China

    I copied and pasted the content of file_example.module file into chatgpt, and asked it to do it for me, it works well to me.

    See the commit here

    The sample instruction i used, FYI

    Extract a REAME.md file from the content following, wrap it in less than 80 chars for each line of the answer and give me the answer in a markdown code block.

    THE CONTENT OF THE MODULE FILE

  • πŸ‡¨πŸ‡³China jungle Chongqing, China

    So, as an example, would it mean deleting this part from the js_example.module:

    Go ahead please with the suggestion in #5 if you like, thanks!

  • πŸ‡¨πŸ‡³China jungle Chongqing, China

    Meanwhile, we are using GitLab more and more, it parses README.md automatically. Let's do it.

  • πŸ‡¨πŸ‡³China jungle Chongqing, China
  • πŸ‡¨πŸ‡³China jungle Chongqing, China

    Re #3 yes, for the example of removal, see this commit

  • πŸ‡¨πŸ‡³China jungle Chongqing, China

    Meanwhile, I am considering using ChatGPT to help and translate the READ.md file into other languages. It can lower the barrier more or less for learning from the examples module.

    The file structure would be

    README.md // English by default
    README
       - zh-hans/README.md // Chinese,
       - es/README.md // Spanish
       - fr/README.md // French
       ... 
    

    All README.md files will be parsed/rendered automatically on GitLab as well. And each transition should be reviewed by a native before gets committed.

  • πŸ‡¨πŸ‡³China jungle Chongqing, China
  • πŸ‡¨πŸ‡³China jungle Chongqing, China
  • πŸ‡¨πŸ‡³China jungle Chongqing, China
  • πŸ‡¨πŸ‡³China jungle Chongqing, China

    Or replace the folder name README with README_translations in the suggested file structure.

  • πŸ‡©πŸ‡°Denmark ressa Copenhagen

    Great idea with the different languages @jungle!

    I found this page: https://gitlab.com/postgres-ai/database-lab/-/blob/master/translations/R...

    So maybe a structure like this would work, same as theirs?

    README.md // English by default
    translations
      - README.chinese-zh-hans.md
      - README.spanish.md
      - README.french.md
       ... 
    

    Maybe we should start out with creating the sub-theme README.md's from the .module content, since that text has been curated and written by one or more persons, but use ChatGPT for translating, like you suggest? At some point, the texts can be rewritten with the help of ChatGPT, if we decide so.

    Also, are you able to create a "Documentation" option under "Component" for issues?

  • πŸ‡©πŸ‡°Denmark ressa Copenhagen

    I have created πŸ“Œ Create README.md for Example: JavaScript sub-module (js_example) Needs review ready for review. Should we add translation issues for "JavaScript examples" as child issues under that issue to keep it ordered?

  • πŸ‡¨πŸ‡³China jungle Chongqing, China

    Also, are you able to create a "Documentation" option under "Component" for issues?

    Added

    README.md // English by default
    translations
    - README.chinese-zh-hans.md
    - README.spanish.md
    - README.french.md
    ...

    The structure works, but I still think the following is better.

    README.md // English by default
    README-translations // A directory indicates that there are README translations inside and ONLY!
        zh-hans // Using language code is fine, I think.
            README.md // Chinese translation, Entering this zh-hans, this is the only file, and Gitlab recognizes it automatically
        es // Spanish
            README.md // Spanish translation
        ...
    
  • πŸ‡¨πŸ‡³China jungle Chongqing, China
  • πŸ‡¨πŸ‡³China jungle Chongqing, China

    @ressa, I did send this issue to #examples-module and #documentaion in Drupal slack, hopefully, We can get agreement or feedback from them, and I would suggest holding on for a day or two, at least, before taking any further contributions. As I am not the only maintainer of this project, others may have different opinions. This is a kind of broken change. -- content of this module on api.drupal.org gets affected.

    Many thanks!

  • πŸ‡©πŸ‡°Denmark ressa Copenhagen

    Thanks for the new "Documentation" Component :)

    I prefer to keep paths and names short, and have all files in the same folder for less clicking, which is why I suggest this structure:

    examples/translations/README.german.md

    This is also fine:

    examples/README-translations/README.german.md

    What would be the benefits of having the translations in individual folders?

  • πŸ‡©πŸ‡°Denmark ressa Copenhagen

    Good idea, let's get some more opinions :)

  • πŸ‡¨πŸ‡³China jungle Chongqing, China
    - README.md
    - README-translations/zh-hans/README.md
    - README-translations/es/README.md
    - README-translations/fr/README.md
    - ...
    

    Suggested file pathes are the above. Or another variation: replace README-translations with README.translations

    - README.md
    - README.translations/zh-hans/README.md
    - README.translations/es/README.md
    - README.translations/fr/README.md
    - ...
    
  • πŸ‡¨πŸ‡³China jungle Chongqing, China

    The root is each submodule in my suggestion.

    - js_example/README.md
    - js_example/README.translations/zh-hans/README.md
    - js_example/README.translations/es/README.md
    - js_example/README.translations/fr/README.md
    - ...

    > What would be the benefits of having the translations in individual folders?

    Let's see what others say :)

  • πŸ‡©πŸ‡°Denmark ressa Copenhagen

    Ah yes, the README.md would get rendered, true. In that case the number of clicks required to read the content would be the same with these two paths:

    - js_example/README.translations/fr/README.md
    - js_example/translations/README.french.md
    
  • πŸ‡¨πŸ‡³China jungle Chongqing, China

    > valthebald: for README.md, will this be compatible with core's help_topics module?
    > valthebald: it would be great to do so
    > valthebald @jungle ^
    > jungle: Hi, @valthebald no plan from me for that, to me, personally, it’s optional, README.md is enough for me as a dev. it’s an Experimental module in Drupal 9, I do not think it’s widely adopted by contrib modules, β€” just guess.
    >jungle: even implementing hook_help is optional to me.

    Chatting messages from slack.

  • πŸ‡©πŸ‡°Denmark ressa Copenhagen

    Great to see there's discussion going on, thanks for sharing!

  • πŸ‡¨πŸ‡³China jungle Chongqing, China

    There are more discussions continued with the above on slack, for the full messages in the thread, please view it here,

    The summary we agreed on:

    • Continue with extracting a README.md from the .module file to avoid credits gaming, do it in one go, or do it with 3-5 submodules per batch.
    • To have an example of help_topics: help_topics_example, ✨ Add help_topics example Active , postpone the implementation or integration of help_topics into examples.
    • Allow to accept translations of README.md, but optional, for the syncing. If the translation is outdated, give it a time window, e.g. one or two weeks to update or it gets removed.

    Thanks @valthebald and @andypost

  • πŸ‡¨πŸ‡³China jungle Chongqing, China

    Updating Proposed resolution

  • πŸ‡¨πŸ‡³China jungle Chongqing, China
  • πŸ‡¨πŸ‡³China jungle Chongqing, China
Production build 0.71.5 2024