UCL-CCS / EasyVVUQ

Python 3 framework to facilitate verification, validation and uncertainty quantification (VVUQ) for a wide variety of simulations.
https://easyvvuq.readthedocs.io/
GNU Lesser General Public License v3.0
87 stars 27 forks source link

Just a quick question #121

Closed rmmilewi closed 5 years ago

rmmilewi commented 5 years ago

Hello!

My name is Reed, and I'm a software engineering researcher at Sandia National Laboratories in the US. I've created an issue on your repo just to ask a quick question. If you don't have time or don't care to respond, feel free to ignore me and/or delete this issue.

Where I work, we have a very diverse ecosystem of cutting-edge research codes spanning every discipline you could imagine. I'm part of our software engineering research department, and it's our job to keep that ecosystem robust and healthy. Part of that means helping scientists to adopt good software practices. Right now, my mind has been on software versioning/release schemes (e.g. semantic versioning).

In order to build a case for/against getting my people on-board with the practice, I figured I should ask people who already use versioning to release their software to see what they think. So I gathered up a list of scientific software repositories on GitHub, then I selected those that tracked versioned releases, that were reasonably active, etc. Finally, I picked a handful of those repos and decided to reach out to them. Y'all were on that list.

Anyway, here's the question:

What do you believe are the benefits (or drawbacks) of having versioned releases of your software (i.e. 1.0.0, 1.1.0, 2.0.0...)? When should someone start thinking about versioning/releasing their code?

Just a sentence or two, that's all I need. For context, imagine the preceding sentence is this: "But don't just take my word for it, just listen to what these accomplished mathematicians have to say!". I assume that's what y'all call yourselves.

Thank you so much!

Reed Milewicz rmilewi@sandia.gov

dww100 commented 5 years ago

Hi Reed,

I think we have two main types of reasons for versioning and having 'releases' - (1) external communication and (2) internal motivation and design.

For (1) the idea is that it is much easier for a user to know the version number (as opposed to say a github commit hash) and that helps understand bugs vs state of the code or features available. It is also nice to communicate what you think is stable to users and show progress.

In terms of (2), we have definitely found that having 'releases' in mind helps us to capture the idea of what features (of fixes) are needed to make a significant improvement and motivate focusing on those (rather than what you feel might be the most fun/interesting developments). It also helps to get management to understand the need for concerted effort.

In terms of when should you start. I tend to think as soon as you think there is something you think might be communicated for others to use. Even if it is just to give you motivation to get things 'sorted'.

I hope that is helpful. Feel free to get back to me/us if you want clarification or have other questions.

dww100 commented 5 years ago

@rmmilewi I know in the UK the software sustainability institute and the research software engineers list have discussed this sort of thing before. They might give you a more community led idea if you asked them.

rmmilewi commented 5 years ago

Thank you so much! You've been very helpful.

And yeah, good point about the SSI and that RSE mailing list. We've been networking with the SSI over the past year or so; it'd be good to get their take on this topic. Thanks for the suggestion!