pySDC
pySDC copied to clipboard
Enhancing the user experience and onboarding
Long time ago, I thought having a website with some examples is a good idea to give users a first glimpse of what pySDC does and how. I still think it is, but the way the examples, tutorials, projects are presented is more than outdated, preventing interactivity, understanding and engagement. I think it is time to change this.
More precisely, I propose to
- Overhaul the website, put it on a more modern basis, make it more reactive
- Move (at least) the tutorials to an interactive playground using Jupyter Notebooks/JupyterHub, maybe with AI support
- Include some developer documentation (how the datatype, problem, sweeper, etc ... are structured)
- Use a RAG/Chatbot trained specifically to answer pySDC-related questions, following what HiRSE is doing
- Improve the testing, both in terms of coverage and readability to support the documentation
- Enhance the CI to also work (reliably) on heterogeneous architectures
Yes, this will be a lot of work and no, I don't know if all of that will work out well (enough), but I think it is worth trying.
This issue is meant ONLY to collect expressions of interest from pySDC developers and users as well as further ideas. Please refrain from discussing these ideas in detail here, we will find another place to do this. Instead, indicate your general interest in this here. And the best part: indicating interest does not mean you got to do this. Instead, I would like to leverage your expressions of interest to apply for external funding.
This sounds like a good plan for increasing pySDC's reach. I could work on this later this year. I would give highest priority to updating the tutorials to notebooks and untangling long integration tests to multiple unit tests.
Sounds like a great plan - I'd be really interested to see how this goes, in particular the examples that use other libraries such as Firedrake for the spatial discretisation...
I like this idea! It will help getting users on board and by this increase the usage of pySDC.
I would propose to put emphasis on the tutorials (notebooks) and the overall accessibility of the website/documentation. Not only in a technical sense (reactive design; complying with recommendations e.g. from w3c) but also in terms of content by e.g. adding a RAG to be able to ask questions about usage of pySDC.
When the tutorials are converted into notebooks, they could also be used to automatically test. By this, it is ensured, that the tutorials work and produce the expected results as well as increasing test coverage and/or work as integration (or even end to end) test.
I would really appreciate this. A lot of the doctoral researchers in our group do use pySDC and anything that helps them to learn, use and modify the code would be hugely valuable.
Also love the idea. If possible, maybe this could include some developer documentation too (how the datatype, problem, sweeper, etc ... are structured), eventually in parallel to some small restructuration as initiated with #446
Also, Jupyter notebook are a nice tool for documentation, and can be included in the documentation website while tested by CI, as it is done in qmat, see Tutorials page
Great idea! I am currently not a user and so far I have absolutely no idea how pySDC works. However, with such a more reactive example website, interactive tutorials, chatbot or similar, I would definitely be interested in learning more and trying it out! Thus, I want to express my interest here and confirm that this would be valuable.
Like the idea too :) I can help with developing some test cases with power system simulations.
sounds like a great idea!
This would be great. I'd especially appreciate the developer documentation!
Good idea! I will work on updating the tutorial and write it in a notebook.
Great idea! It would be incredibly useful not only for research, but also for teaching, outreach, and attracting new people to the PinT community!
I also strongly support this idea. This project would make PySDC more accessible, including to students at other institutions (like mine) who would be interested, and it would help open up collaborations with other Python packages (like PyAMG, which implements algebraic multigrid, AMG, for spatial solves, where I'm a co-developer).
From the following two perspectives I support this idea:
- pySDC is very useful for short-lived projects such as Bachelor or Master thesis projects if they want to use advanced time stepping methods for PDEs. I supervised this thesis where pySDC allowed us to apply SDC in a coupled simulation. The interfacing of pySDC with FEniCS was also very handy. It would be useful to further improve the usability in order to reduce the effort required for onboarding to let students get even deeper into the topic. Additionally: I think the installation process of pySDC works very smoothly which probably saved us a lot of time and frustration during the onboarding phase.
- In my own research on higher-order time stepping I often struggled finding off-the-shelf time-stepping schemes for PDEs with spatial-discretization using FEM. For firedrake there is irksome which offers a very intuitive interface. However, I'm working with FEniCS and tried to fill this gap by using pySDC. I gave up at some point using pySDC in my own experiments due to the entry barrier and since it was not my main research focus. In this thesis we developed a prototypical implementation inspired by irksome for FEniCS as a work-around.
I assume you already know, but for sake of completeness: FEniCS is at its end-of-life and pySDC does not support the successor FEniCSx but maybe such an upgrade would also fit into the funding you are planning to apply for.