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

Expand criterium for consumed APIs; mention requires/okapiInterfaces/… #91

Closed
wants to merge 2 commits into from

Conversation

julianladisch
Copy link
Contributor

This is the current acceptance criterium:

- * Module descriptor MUST include interface requirements for all consumed APIs (3, 5)
-   * _This is not applicable to libraries_

This should be more actionable.

Evaluators need to browse through the source code to find out the consumed APIs and then check that the API is listed. Therefore the parts of the sentence should be swapped to start with "For each consumed API".

Evaluators of backend modules need to look up the interface requirement in the "requires" or "optional" section of the module descriptor. The section names should be mentioned in the criterium to make it more actionable. The name references the relevant part of the module descriptor documentation making the criterium easier to understand (the preceding criterium links to the module descriptor documentation). The criterium about the provided interfaces already mentions the "provides" section, similarly the the "requires" and "optional" sections should be mentioned.

Currently the criterium about the interface requirements in the module descriptor also applies to frontend modules. This can be simplified because the build process generates the module descriptor from the package.json file, and there's already a criterium that it "MUST produce a valid module descriptor".

Therefore we can change the criterium for the frontend to require the interfaces of the consumed APIs to be in the "okapiInterfaces" or "optionalOkapiInterfaces" section of the package.json file. This is more actionable because the package.json file can be edited while the module descriptor doesn't exist in the code repository. A note should link to the package.json documentation: https://github.com/folio-org/stripes/blob/master/doc/dev-guide.md#the-package-file-stripes-entry

Frontend shared libraries should also contain complete "okapiInterfaces" or "optionalOkapiInterfaces" sections. The current criterium doesn't require this because a frontend shared library doesn't generate a module descriptor. For a complete okapi interface dependency documentation this change adds the requirement for frontend shared libraries.

Note: The counterproposal #75 splits this criterium and moves it into the frontend and backend section.

This is the current acceptance criterium:

-* Module descriptor MUST include interface requirements for all consumed APIs (3, 5)
-  * _This is not applicable to libraries_

This should be more actionable.

Evaluators need to browse through the source code to find out the consumed APIs and then check that the API is listed.
Therefore the parts of the sentence should be swapped to start with "For each consumed API".

Evaluators of backend modules need to look up the interface requirement in the `"requires"` or `"optional"` section
of the module descriptor. The section names should be mentioned in the criterium to make it more actionable. The name
references the relevant part of the module descriptor documentation making the criterium easier to understand (the
preceding criterium links to the module descriptor documentation).
The criterium about the provided interfaces already mentions the `"provides"` section, similarly the the
`"requires"` and `"optional"` sections should be mentioned.

Currently the criterium about the interface requirements in the module descriptor also applies to frontend modules.
This can be simplified because the build process generates the module descriptor from the package.json file, and
there's already a criterium that it "MUST produce a valid module descriptor".

Therefore we can change the criterium for the frontend to require the interfaces of the consumed APIs to
be in the `"okapiInterfaces"` or `"optionalOkapiInterfaces"` section of the package.json file. This is more actionable
because the package.json file can be edited while the module descriptor doesn't exist in the code repository.
A note should link to the package.json documentation:
https://github.com/folio-org/stripes/blob/master/doc/dev-guide.md#the-package-file-stripes-entry

Frontend shared libraries should also contain complete `"okapiInterfaces"` or `"optionalOkapiInterfaces"` sections.
The current criterium doesn't require this because a frontend shared library doesn't generate a module descriptor.
For a complete okapi interface dependency documentation this change adds the requirement for frontend shared libraries.

The common criterium about interface requirements is split into frontend and backend criterium and moved from
the Shared/Common section to the Frontend section and the Backend section.
This is the current acceptance criterium:

```
- * Module descriptor MUST include interface requirements for all consumed APIs (3, 5)
-   * _This is not applicable to libraries_
```

This should be more actionable.

Evaluators need to browse through the source code to find out the consumed APIs and then check that the API is listed. Therefore the parts of the sentence should be swapped to start with "For each consumed API".

Evaluators of backend modules need to look up the interface requirement in the `"requires"` or `"optional"` section of the module descriptor. The section names should be mentioned in the criterium to make it more actionable. The name references the relevant part of the module descriptor documentation making the criterium easier to understand (the preceding criterium links to the module descriptor documentation). The criterium about the provided interfaces already mentions the `"provides"` section, similarly the the `"requires"` and `"optional"` sections should be mentioned.

Currently the criterium about the interface requirements in the module descriptor also applies to frontend modules. This can be simplified because the build process generates the module descriptor from the package.json file, and there's already a criterium that it "MUST produce a valid module descriptor".

Therefore we can change the criterium for the frontend to require the interfaces of the consumed APIs to be in the `"okapiInterfaces"` or `"optionalOkapiInterfaces"` section of the package.json file. This is more actionable because the package.json file can be edited while the module descriptor doesn't exist in the code repository. A note should link to the package.json documentation: https://github.com/folio-org/stripes/blob/master/doc/dev-guide.md#the-package-file-stripes-entry

Frontend shared libraries should also contain complete `"okapiInterfaces"` or `"optionalOkapiInterfaces"` sections. The current criterium doesn't require this because a frontend shared library doesn't generate a module descriptor. For a complete okapi interface dependency documentation this change adds the requirement for frontend shared libraries.

_Note: The counterproposal #75 splits this criterium and moves it into the frontend and backend section._
Comment on lines +47 to +51
* For frontend modules and frontend libraries
* For each consumed API `package.json` MUST include the interface requirement in the `"okapiInterfaces"` or `"optionalOkapiInterfaces"` section
* -_note: read more at https://github.com/folio-org/stripes/blob/master/doc/dev-guide.md#the-package-file-stripes-entry_
* For backend modules
* For each consumed API the module descriptor MUST include the interface requirement in the `"requires"` or `"optional"` section
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We have separate sections for FE and BE, why not just move the separate criteria to those sections?

Copy link
Member

@marcjohnson-kint marcjohnson-kint Jan 29, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I believe the intent of the criteria is general to both front-end and back-end (and edge) modules. Only the mechanism of checking may differ between the two (it doesn't have to)

My preference is to retain a single, general criteria, which could include guidance for how to check that is specific to different types

@craigmcnally
Copy link
Contributor

The TC decided to go with the other approach (#75)

@julianladisch julianladisch deleted the consumed-api-requires-optional-nosplit branch January 29, 2025 16:20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants