Prefer requirements over recommendations inside the standard?

I noticed we’ve recently added few extra sections to the Beman Standard. I really love the contributions! I think we should discuss again what rules are REQUIREMENTS and what are RECOMMENDATIONS. My feeling is that we should convert some RECOMMENDATIONS to REQUIREMENTS.

I will list few ideas:

  • Naming should be enforced for simplifying the usage and even automation for packaging:
    • [LIBRARY_NAMES] RECOMMENDATION
    • [REPOSITORY_NAME] RECOMMENDATION
    • [README.TITLE] RECOMMENDATION
  • I expect that the header of each library inside Beman libraries to be similar:
    • [README.PURPOSE] RECOMMENDATION - why not always having a purpose?
    • [README.IMPLEMENTS] RECOMMENDATION - why not always specify the papers in the same way? If not applicable, please write Implements: N/A.
  • [CMAKE.DEFAULT/SKIP_TESTS] RECOMMENDATION (WIP in Add CMAKELISTS recommendations by neatudarius · Pull Request #27 · beman-project/beman · GitHub). People seem to agree to be recommendation, but I think it’s essentially to be a requirement for packaging.
  • [FILE.COPYRIGHT] RECOMMENDATION / [CMAKE.AVOID_PASSTHROUGHS] RECOMMENDATION / [DIRECTORY.SOURCES] RECOMMENDATION- why allowing people for inconsistent behaviour here? We already required them (if they import code into Beman) to change their makefile / README/ Files for other aspects. Why not going to requiring all changes? (for libraries built from scratch, I suppose is not a problem to apply any convention).

What’s your opinion here?

Recommendations are in place to facilitate the incorporation of libraries built independently of the Beman project where it would be difficult or otherwise tedious for an author to change after the fact. Those complications could be due to corporate requirements (as in licensing) or an existing user base (as in branding).

That being said, some of your concerns still apply. I can’t think of a good reason for someone to not conform to [CMAKE.SKIP_TESTS] or [CMAKE.DEFAULT], for example.

Recommendations are in place to facilitate the incorporation of libraries built independently of the Beman project where it would be difficult or otherwise tedious for an author to change after the fact. Those complications could be due to corporate requirements (as in licensing) or an existing user base (as in branding).

I think we should have a mention that at least for libraries made from scratch inside Beman, all recommendations become requirements. :smiley: And that we strongly advice all incoming libraries to apply all recommendations.

That being said, some of your concerns still apply. I can’t think of a good reason for someone to not conform to [CMAKE.SKIP_TESTS] or [CMAKE.DEFAULT] , for example.

I would also add to this list few more items, e.g. README.* - if they are now in Beman, why they cannot write a root MD like other libraries? :smiley:

It makes sense to require README.md, but not necessarily to dictate its contents. I don’t feel strongly about this though so am eager to hear what other people think.