IMO, adding new APIs to sympy which are present in other CAS is fine. In fact, sometimes various bugs are discovered while adding new APIs and their testing. For example `Range` now supports symbolic inputs to some extent which was needed while making extensions to stats module. Wolfram Alpha supports control systems as available at https://www.wolframalpha.com/examples/science-and-technology/engineering/control-systems/. However, we should not hurry in adding a new package. A proper discussion should happen for designing the APIs, the framework of the package before proceeding towards the implementation.
It is true that there are a lot of bugs across various modules of SymPy which should be fixed. IMO, a GSoC project shouldn't be based on fixing a subset of issues, as it would be very difficult to allocate mentors to such a student. In addition, bugs can never disappear, they will always exist and in a difficult task like computer algebra they will be there with us. However, to tackle the problem of stalled issues, I would suggest that we can participate in programs like KWoC <https://kwoc.kossiitkgp.org/>, RGSoC <https://railsgirlssummerofcode.org/> to name a few. They don't require any specific proposals to be submitted or mentors to be allocated and students participating in these programs usually fix issues which is kind of an open source sprint. I am getting familiar with such programs so that we can participate in them in future, if community agrees. For the control package, I would say, the contributor should think how to use existing framework of SymPy(probably control package is very much related to ODEs, though I am not familiar with the literature) and use minimum lines of code to add this new functionality that again requires a lot of exploration and thinking. So, may be we can discuss and improve if anyone has thought of something. I would be happy to see a post describing the rough idea of APIs which would be better as we will be having a direction in which we can think. On Monday, February 3, 2020 at 7:28:14 PM UTC+5:30, Naman Nimmo wrote: > > Hi Everyone, > I'm Naman Gera, from the Electronics and Communication Engineering > department at the Indian Institute of Information Technology, Guwahati. > > I started contributing to Sympy in December 2019 and ever since then, I've > learned so many things. I have immense respect for this brilliantly > talented open source community. They are some of the best coders I have > seen, developing open-source (even on weekends!) because they believe in > it. I have raised several PRs so as to solve some issues, and after each > new PR, I learned something new and also understood that particular part of > code. > > This summer, I would like to work on adding a control package to > sympy.physics. > > > Initially, I would try to complete the work started in #17866 > <https://github.com/sympy/sympy/pull/17866> > I'll get the already implemented methods polished for merging. > > > After setting up the base classes (which are `StateSpaceModel` and > `TransferFunctionModel`), I'll add some other methods like > `observability_matrix`, `observability_subspace`, `is_observable`, > `series`, `parallel` (interconnection) and many more which can be useful > for any Engineer attempting to solve a `control` problem. > > > The main aim would be to make the whole model symbolic. The package will > use some of sympy's core classes like `Basic` so as to avoid rewriting > code. > > > In the later part of the program, I'll also introduce some graphical > analyses such as the Bode diagram, the Nyquist diagrams etc.. > > In the meantime, I'll take some inspiration from other CAS as much as > possible. > > I'm also ready to implement some other ideas which the community or my > potential mentor will suggest. > > Regards, > Naman > > > > -- 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 [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/sympy/a8ae4fb2-2f72-41f4-befc-ad40e1dfd3f8%40googlegroups.com.
