Skip to content

Revise wording to better convey the purpose of SPECs #280

Closed
@cbrnr

Description

@cbrnr

Following up the discussion in scientific-python/lazy-loader#70, the way that SPECs are presented on the Scientific Python website can be misleading. It puts some (a lot of?) pressure on packages to adopt all SPECs, at least that's my impression. Since this is not intended, I think some modifications to the website might help clarify this. Here are some examples:

  • The introductory sentence on the main SPEC page says: "SPECs provide operational guidelines for projects in the scientific Python ecosystem." If I develop a project in the scientific Python ecosystem, this sounds like I need to follow these guidelines. I guess the term "guidelines" is too strong, maybe "recommendations" or "suggestions"? I think it would be great if the first sentence already clarified that it's OK to not adopt any SPECs if it is not feasible, and that a project would still be part of the scientific Python ecosystem.
  • The list of recommendations lists all SPECs as well as projects which have endorsed them. I think this is exactly the thing that's misleading projects into thinking that every good projects should strive to adopt as many SPECs as possible. After all, they get featured prominently on the website then. Honestly, I would remove all endorsing projects here, and maybe create a separate document, which describes projects that have adopted certain specs. This would give more room for presenting the pros and cons of each SPEC, and maybe make it clear that it's OK if a projects opts to not adopt a certain SPEC. It would also make it harder to see the amount of SPECs each project has adopted. Or maybe list projects which have supported a specific SPEC at the bottom of each SPEC page.
  • On each SPEC page, and I'm now mainly talking about SPEC 1 (lazy loading), tone down the wording so that it is clear that no project has to adopt that SPEC. This also includes listing the pros and cons, which are already discussed, but maybe not prominently enough (only the advantages are listed near the top, the disadvantages get a short Caveats section much further into the text. For example, the introduction says: "This SPEC recommends a lazy loading mechanism—targeted at libraries—that avoids import slowdowns and provides explicit submodule exports." The libraries part is a bit unclear – when is a package a library? So after reading this, the message I get is that lazy loading is recommended. Period. I'd also include more caveats in this section (instead of footnotes), such as the rejection of the lazy import PEP, comments by some Python core devs why they are probably never going to include the mechanism, etc. This is extremely important information, which I had completely missed when we were discussing including lazy loading in MNE. At that time I just skimmed the SPECs page and thought "yeah, this sounds great, who doesn't want reduced import times for free?".

These are the things that I think could be easily improved. I can make a PR, but I think it makes more sense to discuss the changes here before that.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions