 Welcome. Hello, my name is Julia Sprenger. My background is also from the neurosciences. So similar to Jan's Can you hear me? No, I unmuted wait So I have to okay, sorry, or you have to be more quiet than it was Okay So I'm also from the neurosciences similar as Jan But today I don't want to talk about our setup and our software we are using But I I hope that there's some of you in the audience who are doing software development But are not in the sciences yet, and I want to convince those of you to that it's worth joining the Open-source software development in science right now, and it's something the science would benefit a lot from Okay, so first I'm I'm going to give you a bit of a background So we have a common understanding on how science works So in general of course the science is aimed to understand certain systems better So this might be something really tiny from individual molecules and how they fold to how the brain of a certain species works How earth Climate is changing or where we are coming from and where we are going to so the whole universe and the method used for this is That there's a scientific question at the beginning then the hypothesis is formed from this is a predictionist Yeah formed and this can be tested in an experiment and at the end there's a scientific finding either confirming or rejecting the hypothesis and To communicate this to other scientists the method of choice is to to write a paper. So to publish a paper Usually we're not done there, but there's a new scientific idea popping up and the whole circle starts from the beginning This is not the whole truth so of course also science needs to think about money at some point So to actually be able to answer your scientific question you need to have funding for your team and This can be funded by you writing a project proposal this gets evaluated and if If the project proposal is good, then you get the funding and of course a big aspect in this Proposal procedure is the reputation also of the respective scientists and for this Publications are the the currency and science basically As you can see already I'm not mentioning software here yet. Of course software is an important part, especially Like in the experimental part of of this loop, but it's it's not a key part It also doesn't really play a big role in in the publication or in the reputation at least not yet So differences to maybe software development in business or in other projects Compared to science so in science since the publication is the currency we are talking about The people have usually a time issue in in time they can invest for for software development and This software development if it is done is typically also Targeted directly at scientific outcomes so at plots for paper publications and so on so There's not really time for developing extensive infrastructure like the one one's yarn presented in the previous presentation or for Restructure and in refractoring your your code to make it nicer and more maintainable in the future Also in science When you study a certain scientific field you might might be an expert on that field But you don't know anything about how to develop software So meaning people Going into science usually don't know about best practices for code style how to assure quality Of your code version control is something completely new to most of them And how to validate your code and in general and also with respect to previous publications for example Also, I mentioned already money is is an issue so money needs to produce publications and It's not usually available for sending your scientists to to Training courses how to do software development There's also not a lot of money as Jan mentioned already for having non scientific Software developers in your lab or having the infrastructure just to develop Software in your in your lab having your own Continuous integration system running or something like that Additionally to those three obvious ones. There's also kind of a trust issue So as the scientists you tend to want to have control of your experiment or your setup So for small questions scientists tend to go for oh, I rather implement this myself Then have everything under my control and I don't rely on external Tools or I don't use existing simulators for the question I want to ask so but these small questions can then turn out of course to be huge projects and Yeah, need a lot of time and are poorly designed For complex projects Yeah, I'm also already mentioned that it's it's likely that you get the funding to buy some software instead of hiring software developers who Based on open source software develop something specifically needed in your lab Also relating to the to the trust issue is as I said the publication is the most important currency and So you work until you have the publication and maybe after this publication is out and accepted Maybe you release your code later. This is the the classic way of how people think about it And since making errors is kind of a taboo in science so everything published needs to be Safe and and perfect in the best case because your reputation depends on it the same also applies to software So people tend not to publish their software because other people might find bugs in there and this is then of course a problem Yeah some to Publications, I want to mention here to to kind of demonstrate the opposite that publishing code actually can also push the scientific progress is one by it's a case who who developed a model for Yeah in neural simulations And in 2006 at that time publishing code was not known at all But he actually did it on his website and this enabled researchers nowadays to Reimplement the same model and start Implementing the same model with modern techniques and also Validating the scientific results and at the same time they also wrote a guide on What could have done better in the first implementation to make it more reproducible in the first place? So this is also helping the whole community now another issue is also the dedication As I mentioned software development is rather a site occupation. So whenever the paper deadline is coming Software development is stopped and the paper goes first. So there's no extended time reserved for software development It's not like you can have like two weeks prints in your in your lab without being interrupted So it's not a continuous task But rather on demand when you need a feature for generating a plot you implement it But then you go back to other issues And and it has a rather low rather low priority also the Quick changes of stuff in scientific labs makes it difficult. So as I said people are not Educated from the from the university side in software development So whoever is coming to your lab needs to be educated in the best practices in your in your lab already Still and then typically people leave already. So it's it's not like there's a lot of time for people to get into it There's also not a dedicated team Only developing a certain part of software, but it's a lot of scientific projects People are working on their project and who whosoever project has an overlap with this particular software might contribute to that software a tiny bit but it's not a team working on it by definition and Yeah, maybe a difference to Business software is that in science usually the numeric precision is rather a high-valued aspect of the software Okay, so let me just quickly show you a couple of examples of Scientific software projects. So some you might recognize from Jan's presentation So there's of course software projects on all scales in sciences Auto male tables is a rather tiny one. It's it's basically an add-on to the autumn L Open metadata markup language yarn presented. It's it's an interface to make this Standard more usable and also in a laboratory environment. So So this project is rather young only a couple of years, there's only one developer no contributors and Only a few users and one publication referencing to this So basically if this one developer decides to leave science this project is done so that it Nobody will take care of it anymore So this is a rather small project and I think most of the projects in science are That scale of course. There's also bigger ones like a new. This is a kind of a standard representation for electrophysiology data sets and It's a it's an important tool because it it forms an interface between a large number of Yeah formats for electrophysiology data and the corresponding software building on top of it. So for data visualization Analysis and so on and this one is already a bit older it it Benefited from previous attempts to implement something similar. So there's already some knowledge going into this one It's used in more than 100 repositories has three developers in three laps So meaning it's a bit more robust than the previous one And has already a couple of users and has been presented at conferences and workshops So this one is a bit more robust then one level higher even there's Software on a scale like a like the nest simulator. So this is a community standard simulation tool for swiping neural network models and it scales from laptop applications to supercomputing facilities so to exascale computers and This one as you can guess is already has a longer history It started in 93 already and actually this piece of software is now not owned by individuals anymore But there's an initiative owning this piece. So the responsibility for the software is rather Distributed there's also a number of developers involved in here across different labs A large number of contributors and it also has a dedicated website Announcement tutorials videos. So this I would consider rather robust piece of software which is Solid solidly found it in the in the sciences and will be around for for the next decades and of course just to mention the The large players in this one you might recognize. So there's also bigger projects like the human brain is a project which is Generating infrastructure for the Neuron sciences. So also mainly software and a large number of this is also open source Then in the biology in general the open worm project and for particle physics You might have heard of root But of course as I mentioned, there's a large number of smaller projects which don't have this infrastructure available and are rather Yeah, on on the risky side when people leave leave the sciences. So the question is now What can you do as a software developer for those Rather small projects. So as I said the problem is that Scientists usually don't know a lot about how software development is done. What tools can be used for this? what how what what they should take care of so First of all if you want to get involved The first thing is talk to scientists and see if what they are working on or the problems they have is Interesting to you and you might be able to contribute in just giving us really simple and small advice to them and making their life also much easier Yeah get involved in existing scientific projects and provide feedback if you have experience in open source software development just Make a comment give some advice be helpful If you have a project which might be interesting for scientists make sure that you make it understandable for scientists so Have a have an easy documentation or at least something like an installation for dummies because People might be experts in their scientific field, but they don't know how to compile your software to install it Yeah, if you think that your particular piece of software might be interesting to a particular scientific community attend conferences and maybe go to a workshop to Create the link between the two So as a From the perspective of a scientific software project As I said before these smaller projects are endangered to basically die when people leave science So if you want to prevent this to happen to your project It's better to involve a larger user base because with a larger user base Also a number of contributors might join your project and thus thus keeping your project alive Even when you might leave science The same as before applies so simplify the usage and contribution on all levels So make it as easy as possible for other people to join Including the user and developer guide tutorials on how to Use your particular piece of software Solve simple issues first so don't start implementing the most complex analysis functions But start with easy things people might look out for in in the first attempts of analysis for example Yeah, define project standards and contribution guides and Advertise this is also the one of the most important parts as a scientist Don't start implementing Stuff from scratch, but first have a look what is around especially open source wise and If you don't find anything then you might start from scratch, but most likely there is something which might help you If you want to make sure your your project is robust there's a the best practice core infrastructure org website where you can register your software project and Have certain features that are checked how How robust your your project is meaning how is the support how many people are involved in it? How is the documentation? Create links to other packages because if other package packages care about your software It might be either integrated into that one in the long term or yeah other people will feel responsible for it also, not only you Yeah, and If you start from scratch consider software development aspects from the beginning So don't don't start just writing 1,000 lines of code Don't care about the structure behind it. Maybe or version control so as a summary now As a vision in the future it would be awesome if this whole Scientific cycle from the prediction to the publication would also involve more the open source aspect of software development Including all of the nice Features that come from from the agile development side for example like path programming test driven development peer review should be used And it should build of course on the large stack of open source software that is already available Including also that open source software or software in general should be considered in project proposals fundings and should also make a bigger deal of the Reputation of a particular scientist's contribution to particular software peers Okay with this I would like to thank you for your attention So So within the oh, sorry So what what can we do within a scientific community to to make software more accessible also by other people in the community? I So you mean besides going to to the particular conferences and Talking to people about there about your ideas or your solutions to this problem Yeah That So also, I mean I can I can only talk about the neurosciences because So also in the neurosciences there's no Yeah Attempts to organize this in a in a more. Yeah, at least German white fashion so there's institutions being being founded for Collecting problems that are common to particular sub fields maybe and then Coordinating this and solving this in a more consistent manner And I think without such institutions It's this it's a really hard task to solve but you need to recognize that these ones are Necessary and need to get them funded basically. That's the issue Yeah Because it's related to New York science like for example when somebody like Obama says A lot of money to like this brain project. I realize that's in the United States But in terms of like the scientific community, what does that mean to you in real terms? You mean Yeah, it depends on what's the what's the aim behind this funding. So if if it goes into projects like this one providing a an infrastructure, which is basically collecting common needs across the whole field and trying to solve them in a in a common manner or Coordinating basically these attempts then it it's awesome. I I don't know what exactly the aim was behind this now So I guess nothing of that has trickled down to you I guess or maybe it's somebody that you know in the U.S. I Mean, I'm not working in the U.S. I Haven't heard anything directly, but that's just my personal experience. I I can't make a general comment there Maybe someone else can Okay, yeah Yeah, yeah, this is getting I saw what's my opinion about software publication journals basically So this is getting more common and I think it's it's also a good way of kind of going around this only Publications count issue, but it's not the long-term solution because Writing it. I mean papers have a have a very different style of writing and make you might Provide some examples in the in a publication, but it's still just it's just the PDF which is aiming at Showing people this software exists go to the documentation and read about it, right? So it's the the style is maybe not the best one But for the purpose of getting publications and getting more software awareness into the sciences I think for now it's a good. It's a good way Yes, I am aware of it, but the The softwares I'm involved with so also basically similar to the ones Jan talked about I'm not in there. I think as far as I know So that scientists don't consider themselves to be like Proper software developers and that's the reason why they don't really go into it. That's a that's a common issue and Usually so in my experience it needs like one or two people in the lab Who are more dedicated towards the software development side to pull more people in if you don't have these people in your lab It's really hard Then it basically won't won't happen If you're lucky, then then you have them and it works, but there's no There's no general advice on how you can get people Interested in software development who are not I know born for it Yes, so you mean to have a dedicated place where people more like software developers and Scientists can can go together and talk about problems so Yeah, myself. I don't have Extended experience with this, but it's it's a it's a really good Opportunity and that's not Hacker spaces but similar like Facilities that you can contact as scientists at least in the research center in in Yulich to to get some help If you have a particular software problem, and this is kind of a similar concept just not a single room where you can just go and meet but This is definitely a good a good thing to do and to be aware of