pyiron / pyiron_base

Core components of the pyiron integrated development environment (IDE) for computational materials science
https://pyiron-base.readthedocs.io
BSD 3-Clause "New" or "Revised" License
21 stars 14 forks source link

I want to contribute, open for suggestions #590

Closed Ovakefali13 closed 1 year ago

Ovakefali13 commented 2 years ago

Summary

I want to contribute to pyiron as part of my studies at university. Do you have any suggestions on topics and/or features I might be able to contribute?

Detailed Description

Hi, I'm currently enrolled in a Masters' Degree of Computer Science at the University of Stuttgart. For the course "Simulation Software Engineering" we are supposed to contribute to a open source software project and follow the steps. Therefore, I want to help. As a Computer Scientist I don't have any real Physics, Chemics, or Engineering (apart from Software Engineering and Social Engineering ;-) background, but I'm eager to learn. Since I don't want to randomly edit some files in order to fix some typos and stuff, but rather contribute something productive, I'm open to suggestions on what might be a good improvement to the pyiron project.

Further Information, Files, and Links

I'm mostly working in a windows 10 environment, but have a Ubuntu VM installed. Windows subsystem 2 is installed, but I couldn't get pyiron running there (maybe creating an issue later, with the error I get executing the basic example), so I tried the VM and it worked there. As said, I'm no Simulation Scientist and quite new to the topic in general so I ran the few provided examples, got some nice graphs, but couldn't really interpret the results :)

liamhuber commented 2 years ago

Hi @Ovakefali13! Sounds good! Once you're familiar with some of the basic tutorials, probably the best thing to do is head over to the Issues pages of one of the sub-repositories and look for something tagged 'bug'/'help wanted'/'good first issue'. If you want to dive a little deeper into the materials, checkout pyiron_atomistics, if you want to stay more on the software side take a look at pyiron_base.

This is not bullet-proof advice, as a couple of our issues have managed to get out of date, and most require quite a bit of familiarity with the codebase. I took a quick peek didn't find anything that stood out to me as the absolute best place to start, but either of these would be helpful and (hopefully? I'm in so deep I've lost some perspective) doable.

pmrv commented 2 years ago

Hi @Ovakefali13,

Thanks for showing interest! We have few re-architecture projects going on, but it's probably best to discuss this with all of us in our dev meeting instead of typing long text walls. A short list of ideas that come to my mind is

  1. Common architecture for talking to the databases that we support (postgres/mysql/sqlite/plain file table), here.
  2. Common architecture for storage back ends. Right now we save everything in HDF5 files, but we have a proof of concept for S3 file storage here. Interesting are also backup systems on HPC clusters. This could also include performance stuff like parallel file access.
  3. Just recently we reorganized how to structure global state here, but I'm sure @liamhuber has more ideas to go from there

(this is mostly for reference to the other team members, since you likely don't have an overview of what all of this means, but if any of them sound interesting already, do let me know.)

Is there any aspect of the software that you would be particularly interested in working with?

PS: I thought our zoom link for discussions is public, but I've noticed you can't access the github teams page from outside, the link is ok to share, right @jan-janssen ?

EDIT: I forgot, but it's probably also interesting at what kind of time investment you're realistically looking at, before we discuss things that are either too trivial or way too complex.

jan-janssen commented 2 years ago

PS: I thought our zoom link for discussions is public, but I've noticed you can't access the github teams page from outside, the link is ok to share, right @jan-janssen ?

I guess in the beginning there was a risk of robots crashing your zoom meeting if you post the link publicly, I am not sure what is the state right now. But I guess we can also add @Ovakefali13 to the pyiron group that might make it easier.

max-hassani commented 2 years ago

@Ovakefali13, I have added you to pyiron team. Now you can access the link of our weekly Zoom meetings here. There will be an announcement for the meeting, but it is planned for 29.11.21 at 15:00.

Ovakefali13 commented 2 years ago

Thanks for all the suggestions and sorry, for replying only now, I had a lot of university stuff to do and couldn't make time for joining the meeting. Same sadly for the meeting next monday, but I will try to be there on the 13th (as far as I know these meetings are always monday). That being said, I'm looking forward to meeting you and maybe we can then talk about something fitting for contributing. I'm looking to find something that is usefull, but also doesn't take up too much time, since I do have lots of projects for university and work as well :)

As for being added to the team, I don't have insights currently. I don't know should I be added already, or did I miss an invitation email or something. Opening the link form @muh-hassani results in a 404.

max-hassani commented 2 years ago

@Ovakefali13 the invitations are valid for 7 days, when you do not respond timely, it gets expired. I have just resent you the invitation.

Ovakefali13 commented 2 years ago

@Ovakefali13 the invitations are valid for 7 days, when you do not respond timely, it gets expired. I have just resent you the invitation.

Thanks, looks like I now got into the team, thanks for sending me another invitation

Ovakefali13 commented 2 years ago

As stated in the meeting today already I got some questions for my research paper, with the topic of building and packaging (and documentation).

I already wrote down sufficient information about the documentation part.

In short:

  1. Is there something I forgot, a documentation I didn’t find yet for example?

I the building and packaging part if found that the Github repositories are automatically build and checked for conda and pip compatibility.

  1. How does that work exactly? – Are the merged pull requests automatically build and added to the online pip and conda packages?
  2. How is the docker container created and maintained? – Does that also work through Github workflows
  3. Do you have any additional information for building and packaging of pyiron?

Thanks for any kind of answer.

jan-janssen commented 2 years ago

Comment: I guess we should add this to the developer documentation. @Ovakefali13 maybe that is something you can do once the process is clear for you. Here is what we have currently: https://github.com/pyiron/pyiron_base/blob/master/CONTRIBUTING.rst#pyiron-releases

Process:

Background: For a package like pyiron which combines multiple packages for materials science, one challenge is remaining compatible to all dependencies. For the tests we fix the version of the dependencies to the latest version ==. And we use dependabot to get notified when one of our dependencies is update https://github.com/pyiron/pyiron_base/pull/582 . But for the pip packages and conda packages we use >= so we allow versions beyond the stable version we tested to allow users to update to the latest version. While this has the risk that the user ends up with a not working configuration, the same configuration is also used by other python packages like https://github.com/tensorflow/tensorflow/blob/master/tensorflow/tools/pip_package/setup.py#L73

Ovakefali13 commented 2 years ago

@jan-janssen Thank you very much, this helped me a lot for my paper and for understanding how the packages get build and are distributed.

jan-janssen commented 2 years ago

Great - Maybe you can extend https://github.com/pyiron/pyiron_base/blob/master/CONTRIBUTING.rst#pyiron-releases to make everything more clear for new people who join the project.