Hi. Thanks for posting this. Here are my high level thoughts.

- I'm not opposed to the idea, and it's always good to write design
decisions down, but we should make sure it doesn't become
bureaucratic, as David mentioned.

- We have already done some degree of high-level planning in the past.
It just hasn't been organized. For example, you can see there are some
documents on the wiki that go over design ideas for various things.
Some of them are implemented and some not. And of course, every GSoC
project starts with a GSoC proposal that outlines what will be done in
the project.

- I would look at how other similar projects do this, especially
projects in the scientific ecosystem. NumPy, matplotlib, and
scikit-learn are some examples I know of. I would expect matplotlib
and scikit-learn to be more similar to SymPy, since they are also
large projects with distinct parts, where most contributors are only
familiar with some specific submodules, but there's also a "core" that
affects the entire library. We should also talk with members of those
communities to see how they feel about the processes and what works
and what doesn't. I think Python PEPs aren't a great model to mimic
directly. The Python community of developers is much larger, the
community of users is *much* larger, and they also care much more
about not breaking compatibility and being conservative about adding
new features than we do.

- My biggest concern is this: it is often impossible to really know
what will work unless we try to implement it. I think the assumptions
are a great example of this. The idea of what the "new assumptions"
should look like has changed several times over the years, because
every time it has become clear that the current idea isn't tenable.
This has led to a rather unfortunate state of things where we have two
concurrent systems. But I don't really see how we could have come up
with a "new assumptions" idea that would actually work without first
trying out what we did and seeing why it didn't work.

- I have a few gripes with the Python PEP process which I think we
should try to avoid.
  - First, SEPs should not be treated as end-user documentation. There
are too many instances where Python links to a PEP instead of real
documentation. It always feels inappropriate, because PEPs spend a lot
of time talking about things that are irrelevant to an end-user, like
motivations for a feature, alternate proposals that were not
implemented, and so on.
  - Python PEPs often give the impression of a cabal, or separation
between the "core contributors" and "users", which I want to avoid for
SymPy. For example, you may be familiar with the politics that occured
with PEP 572 (assignment expressions) or more recently, PEP 622
(pattern matching).
  - Lastly, it really annoys me when people refer to Python PEPs by
number only. This serves to reinforce the "cabal" feeling, because
core developers tend to work with the PEPs a lot and know them by
number, but everyone else won't. Unless the PEP is PEP 8, I think
people should always either include a title with the PEP or a URL to
the PEP when referring to it.

- The SEP abbreviation is probably already used by some other
projects. How about SymPEP?

Aaron Meurer

On Sun, Aug 2, 2020 at 2:32 PM Oscar Benjamin
<oscar.j.benja...@gmail.com> wrote:
>
> On Sun, 2 Aug 2020 at 18:49, Gagandeep Singh (B17CS021)
> <singh...@iitj.ac.in> wrote:
> >
> > I read the original post and I think the idea of introducing SEPs seems to 
> > be really useful. Since, I am quite involved with `stats` module and was 
> > thinking to add some new features to it to make it more powerful and useful 
> > to the people working in the area of statistics. I wanted to know whether 
> > it will be possible to propose new features via SEP or more precisely, can 
> > SEPs initially have requirements and expectations, and then later on after 
> > community discussion, SEPs can be changed and more details can be added.
>
> I think that a SEP would be most useful where it represents a
> non-incremental change as incremental changes are well handled by the
> existing issue/PR workflow. So if the proposal is to add a feature
> without substantially altering the existing structure then that's not
> the kind of situation I'm thinking of although we could use SEPs for
> that if that's what people want to do.
>
> On the other hand I think a SEP would be useful if the proposal is
> something like "The stats module needs to be reworked with a new
> structure/API because the existing structure can not be extended in a
> backward compatible way to handle random variables with finite but
> symbolically sized sample spaces" then that's the kind of situation I
> was thinking of. Making deep incompatible changes needs careful
> consideration and needs to have a motivation/explanation that we can
> point to for downstream libraries and users.
>
> To me it would also seem useful if the stats module had a document
> (perhaps a SEP) that clarified what the intended scope of the module
> is in its entirety. For example: what features would the module have
> at the point that it was considered complete and what needs to be done
> to get there? Personally I would find a document like that useful
> because right now the intended scope of the stats module is unclear to
> me.
>
>
> Oscar
>
> --
> You received this message because you are subscribed to the Google Groups 
> "sympy" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to sympy+unsubscr...@googlegroups.com.
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/sympy/CAHVvXxSezSA%3Doiu9PWHNSX-7rAM_2Tdsg2yBDFvUKW9R9RENrw%40mail.gmail.com.

-- 
You received this message because you are subscribed to the Google Groups 
"sympy" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sympy+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/sympy/CAKgW%3D6%2BAGz2M2iVn%2B%3DG1n5QRRAguPZyQO9Mez0xwZ6iXur9dhA%40mail.gmail.com.

Reply via email to