I agree that this would be good for the project but maybe it would be a 
good idea to polish the documentation a bit. Some of the pages in the wiki 
are somewhat outdated and they are on the first results in a web search.
On Saturday, August 1, 2020 at 6:22:49 PM UTC-5 Oscar wrote:

> Hi all,
>
> I've been thinking for some time that there should be more
> coordination amongst sympy contributors and more involvement with the
> broader sympy community in the general direction that sympy takes. I
> want to propose the idea of SymPy Enhancement Proposals (SEPs)
> analogous to numpy's NEPs and core Python's PEPs.
>
> The Python PEP process is explained in PEP 1 (the details would be
> different for sympy):
> https://www.python.org/dev/peps/pep-0001/
>
> Background
> -------------
>
> At the moment most discussions around the general direction of sympy
> take place on github and are spread across many different issues and
> pull requests. The only way to really keep track or to engage with the
> discussion is by following all traffic on the sympy github repos.
> That's what I personally do (I get an email every time anyone posts
> anything on any issue or pull request on any of sympy's repos) but
> that's only really manageable for someone who is very actively engaged
> with contributing to or following sympy development. That means that
> the broader sympy community is not really included in most of the
> discussions around the direction of sympy development.
>
> Also there is a lack of higher-level coordination amongst
> contributors. To me it seems that most work in sympy is piecemeal with
> different contributors working on whichever problem they personally
> care about without necessarily understanding the broader issues across
> the codebase that are affected by the work that they do. SymPy
> currently operates on a "consensus" model that once all people
> involved in a discussion are agreed then a change can be made but it
> is often not possible for many people to follow a particular
> discussion. In practice this means that most changes are agreed by a
> small number of people even if they have a wide impact.
>
> One particularly limiting aspect of this is that there isn't really
> any forum in which broader discussions about the higher-level
> direction of sympy development take place. I think that right now
> there are a number of major obstacles to further progress in sympy
> that need to be dealt with by broad community discussion. This should
> involve both downstream users and contributors (new, old, active and
> inactive). Examples would be the future of the new and old
> assumptions, new implementations of matrices, extensibility of the
> core of sympy, fixing major problems like the 2-arg Rational-Add Mul,
> fixing the evaluation model to get rid of evaluate=False, and many
> more. All of these are changes that would involve a substantial amount
> of work across the main sympy codebase and that would involve some
> compatibility breaks. They are all needed (IMO) for the future
> development of sympy though.
>
> I think that maybe numpy was in a more similar state some years ago
> but has now upped its organisational game and has many NEPs addressing
> long standing problems and even weekly online meetings amongst
> particularly active contributors. By contrast sympy has no
> organisational arrangements to facilitate coordination of development
> as far as I can tell.
>
> A Python PEP or numpy NEP is a document that proposes a change to
> Python/numpy but also explains bigger picture issues and crucially is
> presented to a wide audience for discussion. Once approved the PEP
> serves as a record of what was agreed at the time with a rationale for
> the changes as well as a prescriptive high-level explanation of what
> the changes will be. SymPy should have SEPs for the same reason that
> Python has PEPs:
>
> 1. A PEP makes it possible for many more contributors/users to take
> part in a discussion
> 2. The discussions around a PEP can improve the resulting proposal by
> taking in as much feedback as possible.
> 3. Having the discussion (and documenting it) engages the broader
> community so that the reasons for changes in sympy are understood.
> 4. After a PEP is agreed then it is possible to refer to it in future
> as an explanation/justification for doing part of the work to
> implement the PEP.
> 5. When a PEP has been fully implemented it serves as a historical
> document motivating the reasons for the changes made.
>
> A PEP serves a different purpose from documentation which explains the
> code as it is at a given time. By contrast a PEP focuses on the
> discussion around the changes to be made and the reasons for those
> changes (at that time).
>
>
>
> Idea
> ----
>
> The idea I want to propose is that sympy should have a process for
> proposing, discussing, approving and amending documents known as SymPy
> Enhancement Proposals (SEPs) analogous to Python's PEPs. There should
> be a repo `sympy/seps_repo` to host these documents. The main
> discussion should take place here on the mailing list. Some SEPs can
> be informational and others can be proposals for changes.
>
> In core Python a PEP is generally expected to have a full working
> implementation at the time of acceptance. I expect that for sympy it
> will make more sense for a SEP to represent something aspirational
> that is not achievable by a single contributor in a short period of
> time. Rather the SEP should define the general direction in enough
> detail that many different contributors can implement parts of the
> proposal. It would probably make sense for a SEP to have a section
> describing the extent to which it has been implemented. If we had a
> few SEPs that were accepted and that were defined in sufficient detail
> then it would be a lot easier for new contributors to implement those
> changes knowing that they were already agreed and specced. We could
> e.g. encourage GSOC projects that implement SEPs.
>
> The process could be something like:
>
> 1. Post a SEP draft on the mailing list and open a PR against the SEPs repo
> 2. Discuss on the mailing list and the repo
> 3. Amend the draft and repost etc until discussion converges
> 4. Some sort of decision is made...
> 5. The SEP is accepted but needs to be implemented
> 6. Implementation happens over some time probably by multiple contributors.
> 7. The SEP can be discussed or amended subject to discussion on the
> mailing list (if issues arise in implementation)
> 8. Once the SEP is fully implemented it is finalised and not edited 
> further.
>
>
> What do people think of this idea?
>
> --
> 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/f8eb5728-7ccc-4a3a-bee8-96c274630f75n%40googlegroups.com.

Reply via email to