--- tags: unconference title: Nordic RSE 2021 unconference, Day 1 --- ## Intro Always ask questions and give comments at the bottom, unless we are actively discussing another section. We add section headers as necessary. - Is this how I ask a question? +1 - Yes! - Thank you! - Speakers often watch it, too - comment: others will also help relaying questions/comments to speakers - comment +1 - out-of-order commenting +1+1+1+1+1 - more questions +1 Poll: have you used HackMD before? yes: oooooooooooo no: oooooo Do you have HackMD open?: yes: ooooooooooooooo no: o How did you vote without having HackMD open? - I seed all options with one vote. --- ### Proposed for day 1 Anyone may add a session ideas here. If possible, please indicate the duration (up to 70 min = full Session). Please describe it in a sentence or two like this: - **Getting funding for software projects** (~ 30 min - hopefully) (Thomas): Two fields of discussion: a) Where and how to get funding? and b) How can we get more funding for scientific software? We hope that we can in the end generate some document that 1) Lists potential sources of funding (from small scale 2-3 month student projects) to larger scale funding. and 2) Offers arguments for public funding software projects and discusses counter-arguments which can be used as a starting point to help people argue for more funding with their respective local funding agencies. - [HackMD](https://hackmd.io/@tpfau/Funding) - Votes: oooooo - **How to be a good "git-evangelist"** (up to 40 minutes) (yes, I'm ready today Sunniva): As an RSE in a team of scientists, I feel that I quickly fall into the "git-evangelist" role. I think it would be super interesting, and useful, to have a discussion about different techniques and experiences for how to take this role in a positive sense. In a broader context, this question is related to how to successfully recommend "good enough" software engineering practices to colleagues with less technical competence than yourself?" - [HackMD](https://hackmd.io/IYmEkTNKT02nz3ZVwHUaEw?both#Discussion-Git-evangelist) - [Slides](https://github.com/sunnivin/git-evangelist/blob/main/290621_git-evangelist.pdf) for discussion start - Votes: ooooooo - Request missing a chair: **In "RSE", what is "research"? what is "software"? what is an "engineer"?**: "RSE" was an invented term, and I have seen many different ways to interpret it, and most have been very inclusive. What do we mean by "Research": is it just academic? no. What do we mean by "software"? It's more than just software, I always say that data and computing specialists should be included, and I think it would also extend to many of the infrastructure admins. Finally, what does "engineer" mean. Is it only engineer? Probably not only. I would be happy to have a discussion on this, but I would prefer someone other than me to host it. - Votes: ooooo - [HackMD](https://hackmd.io/jDxqhg13T8ebeWOnGohbeg) - Volunteer to chair: Jarno can chair after/instead Aalto talk --- ## Invited talks You can ask questions here (and also comment) and we can then discuss some of them together. ## Talk: "Keep your code alive - lessons from the QuTiP project" (moved one question to the bottom of document, to make it easier to see new questions coming in) - Some of your favorite open source projects? - NumPy, BLAS, ... (add more) - Julia+1 - Svelte - Unix environment in general? (though not one project) * history of Unix branching into open source BSD and GNU/Linux sure is interesting - LaTeX! +2 - pip, PyPI +1 - Lean (theorem prover) - Git +2 - JupyterLab - xarray - Some funding agencies that you know that fund open science - National Science Foundation (NSF) - Dept. of Energy (DoE) - Unitary Fund - NumFocus - Chan Zuckerberg Initiative - Google Summer of Code - [Deutsche Forschungsgemeinschaft](https://www.dfg.de/en/index.jsp) (DFG, German Research Foundation): [2016 call for sustainable research software development](https://www.dfg.de/foerderung/info_wissenschaft/2016/info_wissenschaft_16_71/), [2019 call for quality management in research software](https://www.dfg.de/foerderung/info_wissenschaft/2019/info_wissenschaft_19_44/index.html) - ... (add more) - Do you know places that support a research engineer? - Riken, Xanadu AI - [NFDI4Ing: Engineering Research Software (Stuttgart)](https://www.iws.uni-stuttgart.de/lh2/forschung/projekte/nfdi4ing/) - [PIK (Berlin)](https://www.pik-potsdam.de/en/institute/departments/transformation-pathways/research/research-software-engineering/research-software-engineering) - [Software Engineering (Heidelberg)](https://se.ifi.uni-heidelberg.de/home/profile.html) - [SSC (Heidelberg)](https://ssc.iwr.uni-heidelberg.de/) - **Add your questions/comments here** - we add section headings to bottom as needed - Good point that institutional partners are key - Does anyone have stories of company hiring developers of a project going wrong? (Yes, but I feel that is a risk that the group takes in any hiring process be it for coders or post-docs) - Scientific case interview? - :ballot_box_with_check: What is Shahnawaz' personal background? Are you doing a PhD or hired to do code development? - Open minded supervisors are an important source for coding projects.+1!+1+1+1 - Any stories of how people bring this up with supervisors? - Do it and tell later -- at least the initial part ;) +100, better be "sorry" of having gained results and visibility than ask for permission - Show them the citations that a project gets when it is open-sourced. (Citations == academic currency?) - :ballot_box_with_check: Can the choice of software license make this (whether a project survives) easier or more difficult? - Suggestion: Nordic-RSE could lobby universities to clarify open-sourcing policies. Even though "open science" is a big thing I see many people not release things because "I don't know if I am allowed." - :ballot_box_with_check: How do you get the visibility for code/tools so that it is used by industry, or will this only ever happen in the long run? +1 - :ballot_box_with_check: How many people are working full time on the QuTip-development? - Who decides the "rules" for contributions? Like design choices +1+1+1+1 . - We recently adopted a governance model: https://github.com/qutip/governance/blob/main/governance.md. The admin team meets and decides the major changes. Anyone on the dev-team can review and approve pull requests. - :ballot_box_with_check: Does your university use QuTiP as an example of great work that is happening? Is it invisible to the higher-up people? - It is visible but not necessarily enough to get its own funding everytime. There is always a fight or bundling of QuTiP funding with other grants etc. - For example, have you ever been featured on the university website, or things like that? - :ballot_box_with_check: What would be your first suggestion(s) for someone who has recently developed software that can break new ground or push the frontiers of their research field, but does not have a community or user base outside their own group yet? - You need to get noticed, for example write a paper. Suggestion: make a small package with explanation of the paper, with code how to reproduce the paper. - Lots of documentation which makes it easy to use/re-use/reproduce. - An organic environment speeds the process up. - :ballot_box_with_check: Do you publish those packages as "standalone" papers or are they commonly part of a bigger publication? - Usually they are supplementary to a paper, eg: https://matsubara.readthedocs.io/en/latest/ (Paper: https://www.nature.com/articles/s41467-019-11656-1) and https://piqs.readthedocs.io/en/latest/ (Paper: https://journals.aps.org/pra/abstract/10.1103/PhysRevA.98.063815) -so essentially, you are publishing as "methodology" of a "normal" scientific paper? Yes Do not hesitate to add more questions and comments, we will have later time to discuss more. ## Talk: "Julia for research software engineers" **Slides:** https://bit.ly/3iQ3Mfn 1. How do you write dictionaries with that unusual arrow glyph apparently included in the definition syntax? - Kristoffer: It is actually not a unicode symbol, it is my font (I use the JuliaMono font) that uses "ligatures" to compact `=>` into that arrow, but Julia does support Unicode, for example: ```jl julia> 1 ∈ [2,1,3] # entered as \in<TAB> true ``` 2. What is your favorite feature/thing in the Julia language or toolbox? +1 - Very easy package development workflow, automatically load `Revise.jl` whenever you start the REPL, do `dev MyPkg` from the package mode and it will use a local repo of the package, then you can switch between branches, change source code and test real time without need of reloading, all without having to leave the julia repl, as you can use git commands from repl in shell mode. - Kristoffer: Easy benchmarking + profiling + optimization loop. Makes you able to get fast code quickly. 3. What is Julia missing which you wish it had or will have at some point? +1 - Kristoffer: Better support for "static compilation" to bundle Julia application with other software 4. Does it make sense to rewrite old (i.e. fortran) code to have a Julia version? - Kristoffer: If you want to support more generic data types like big integers, rational numbers or other custom number types, yes. Since Julia has a JIT that is easier in Julia. 5. Is the C function "exclamation mark syntax" just a naming convention or necessary syntax for this kind of function? - Kristoffer: It is a naming convention for functions that mutate their input arguments. - Ahhh :+1: 6. How is the qutip class (Qobj) handled in Julia? Is the data converted to Julia's form? - It is represented by some object on which you can call methods and access fields from (with the same syntax as you would use in Python) 7. When using a wrapper for other languages, how is the efficiency? - in terms of calling/wrapping overhead? - yes, and also in terms of lowest common denominator when multiple languages are used. - Kristoffer: Calling into C is equivalently efficient to calling C from C (it just becomes a call syscall). Calling into Python, Julia can share array data with numpy arrays for 0 copy transfer. For other types there might be some copying and converting needed. :+1: 8. The Revise.jl module is like IPython magic "autoreload" - Kristoffer: Yes, it is similar. But Revise also allows you to reload Julia source code which I am not sure autoreload does. 9. How does the language integration work with non interactive scripts? And how do you inform Julia of how to call other languages (pathes etc) - Kristoffer: When you install PyCall you say what Python interpreter you want to interact with, you can modify that later. 10. can one use Julia `@code_llvm` with code from other languages - Kristoffer: Not really, you would just see a call into that other language but not the details of what happens there. 11. Is there a way to specify the maximal allowed error for "optimised" code? - Kristoffer: You specify what transformation you want to allow but not what the maximum error is. Some transformation can give arbitrary error for mean data. 12. Is there a dispatch system in Julia that runs functions on CPU/GPU like the [Numpy dispatch](https://numpy.org/neps/nep-0018-array-function-protocol.html) - Kristoffer: I think the dispatch system in Julia allows you to do this quite easily, 13. What's the status of plotting on Julia? - Kristoffer: In my view it is pretty good. Plots.jl is the most popular package but there are many others. PGFPlotsX.jl is what I use for e.g. papers (and I wrote it :P) 14. for the units, does this dynamically adjust the syntax which can be parsed? - Kristoffer: no, it uses standard Julia syntax. `1m` is parsed as` 1 * m` in Julia and the `m` is defined by Unitful.jl to be the metre "object". - Kristoffer: There is also "string macros": https://docs.julialang.org/en/v1/manual/metaprogramming/#Non-Standard-String-Literals which it also uses which kind of extends the syntax. 15. Does Unitful incur any notable performance reductions? - Kristoffer: In general no, if Julia can infer the result of all the types then there is no performance reduction. - So if I have an array of, say, millions of metre-valued entries, doing computations on this array is just as quick as if they were regular floats? :question: - Kristoffer: Yes, see: ```julia julia> a = rand(10^7); # Floats julia> a_m = rand(10^7) * 1m; # Meters julia> using BenchmarkTools julia> @btime a+a; 13.275 ms (2 allocations: 76.29 MiB) julia> @btime a_m+a_m; 13.452 ms (2 allocations: 76.29 MiB) ``` 16. Are people interested in hearing more about Julia? We at Nordic-RSE are thinking about hosting a day of Julia during the upcoming seminar series, where we could have talks/demos/workshops. :+1: - Very! It has been on my radar for years, but I have not yet invested in learning it. I guess I am too comfortable with Python :smile: +1 I teach scientific computing / data science stuff and might be interested in supplementing my Python-based courses with Julia-based courses if I can see adaantages to doing so and think I can attract participants for it. - I cannot really justify to learn Julia during my work hours, since nobody in my Department is using it or has even plans to use it, but I would be very interested from a personal side - I would also love to take Julia up :camera_with_flash: - This was a really great talk, I finally learned *what* advantages Julia has over Python! +1 +1 +1 - Yes, this was a great motivation to finally start picking it up and testing it! 17. What is **very bad** in Julia? :+1: - there's a talk from Juliacon 2019 called "what's bad about julia", but the language has developed since then :) - Kristoffer: One based indexing ;) - you can have arrays with arbitrary indexing start though:) - 1-based indexing :scream: Oh man, I was so happy to escape from that when going from MATLAB to Python :disappointed: 18. If you wanted to convince people to switch to Julia, what would be your best argument (assume that they do not understand much about programming, only speed-up, money saving, time saving, things like that, and that they have already large/old codes that they run as "black-boxes")? - Kristoffer: It would have to be tailored to what their specific needs are. I think the combination of performance and productivity is a quite strong argument. 19. Is there a Roadmap / existing solution for running Julia on the browser through WebAssembly? - Kristoffer: There is some very WIP at https://github.com/Keno/julia-wasm. --- ## Talk: "Introduction to Nordic-RSE" Questions/comments? - "I don't have time to read papers, too busy making code work" is painfully accurate especially when it's somebody else's code with barely any documentation.+1+1+1 - RSE is so new as a concept that I feel several universities don't have/invest in them for the simple fact that they are not aware of their existence, hopefully events like this will increase visibility and awareness --- ## Talk: "Myths and misconceptions about research software development in academia" - I'd argue everyone is learning to script and not to code. - Though also many people can "code" but not "script" (automate and connect pieces) - Admittedly I would still call that "scripting" if you just connect existing code (only when this becomes complex, it becomes coding -imo) - Where are the "senior" software developers in Academia? Why do not professors code? - comment: some professors do code (because they enjoy it, in their little time) but may have learned tools and best practices in 80ies and 90ies (and did not have time to keep up-to-date later on the coding part, being busy with the domain expertise part) so this can also be a problem.+1 - True, but to be fair, I also know a couple of professors who learnt to code in the 80s and have managed to keep themselves up-to-date despite very busy... Needless to say, they are an endless source of inspiration and great suggestions :)+1 - yes absolutely. good point. my point was more that the evolution of the tooling and coding practices is sometimes not driven by the professors inside research groups. - I've realized professers are managers/administrators first, researchers as they have time. And good mentoring for others takes *time* which is one thing they don't have. - Unfortunately, the most successful managers will get the highest rewards (grants etc), while the best researchers will have more difficulties getting the funding (if not supported by adminstrative stuff). - I think many professors don't, because scientific software development is not a metric they are typically evaluated by. One of the most common evaluation metrics is publishing papers, so that's wath they will do. - Which countries do have established RSE groups? - RSE groups or RSE organizations? - Both - Some info: https://society-rse.org/international-rse-organisations/ these are only the ones "officialy listed". But for instance, Nordic-RSE is listed but has very few groups. - Who is the "ideal" scientific developer? Do you need a computational PhD to start on this track? - Is a "scientific developper", or more generally a "software developper" really an RSE? - Is it sufficient to write software to be an RSE? - I know a lot of people in academia who use Microsoft Excel for just about anything, from plots to small simulations (and sometimes very complex things, which would have "deserved" a proper programming language): are they RSEs? - Does the "RSE movement" cover highly skilled staff who do things other than direct software stuff (data engineering?) If not, does someone? should they connect? - I have similar questions, and I guess that this is where having a clear definition of what this "RSE movement" covers is needed, and maybe "Research Software Engineer" is not the most appropriate name to represent the profession and therefore based on who "qualifies" we ought to find a better name... - Is infrastructure software development part of an RSE task? I do not speak about scientific libraries but tools and solutions to allow scientific software to run. Among examples I know: Jupyter Notebooks, NorduGRID ARC, CVMFS, scientific portals (e.g. Galaxy). I personally think so. - Jupyter ecosystem has lots of software development opportunities with many open source one contribute. So I would say yes, they clear contribute to the advancement of science. - I am a scientist. I want to make this bridge to RSE and software development. But I code/script all the time as a side job. I really want to become better and I am fed up with being critised not being enough of a software developer. What would be your advise, please? No, my education at university did not prepare me for coding. I am trying to edcuate myself all the time next to my other tasks. Should I go back to university and do a computing science course? (And then I see people who are able to code, but have zero understanding of the science behind it and their software is as well not good.) - When I was TA in a numerical analysis class I said that in this field you'll need both maths and software development skills. If you only have maths, you have a brilliant algorithms which works only on paper. If you only have the coding skills, you have a code which does nothing useful, but it does it in a very efficient and well-documented manner :D - True. Unfortunately, if a scientist hires somebody for software development, they always choose the software developer (without scientific background). - I think the failure to distinguish between different levels/types of RSE, by calling everything an RSE, leads to a breakdown of a possible career path and a flattening of the hierarchy. A career path is crucial to be competitive enough with industry, to keep skills and experts within academia. A hierarchy and career path seems important to make academia realize that there is more to research software engineering than writing a couple of for loops, that there is a development of relevant skills and a huge depth. :+1: :+1: - Aalto's RSE levels: https://scicomp.aalto.fi/rse/procedures/job-descriptions/ - Personal questions to Anne: - How would you recommend someone develop to a good RSE? - What are your experience as a senior RSE? - How should RSE positions at universities be organized? Under the IT-department? A centralized section serving all institues? - Should be their own unit, similar to IT or other "support" groups, like core facilities. - At Aalto we are organized under the "scientific computing team", which is run under academic leadership of a school, but consisting of researchers-first, tech second. I wouldn't wan to be under our IT services. - It is clear to me that those in charge of the "basic" IT at university (like managing the laptops, installing Windows software, sorting out printer issues, rebooting servers, etc.) are absolutely indispensable but not true RSEs, and I have nothing in common with them although I am managed by the same chief who does not understand anything at what I do every day. - How to convince our leaders to do this? - At Aalborg University, we are [our own unit](https://www.claaudia.aau.dk/) (I work in this; Thomas Arildsen), but this unit is also organisationally positioned within IT services. We offer several services; not just RSE: data management, data science, running infrastructure. - WRT the conclusions: Would you argue to restrict RSEs to professional software developers? - I wouldn't, a professional software developer who has only industry experience may have a too "business oriented" model, which may not be optimal for research. But of course they can probably pick the "research mentality" pretty quickly, my point simply being that academia is not industry and they have different philosophies and goals. - why professional software developers would be necessarily coming from industry? - I'd call a computer science graduate a professional software developer, they might not have a lot of expertise, but they should have the required skills. - How can we as RSEs change things in academia? We are not many, not recognized, not funded, not united, not supported, isolated, I can see that will be very difficult - The Nordic RSE group exists to do something about this. - As an example, we plan to propose incresing the ranking of the Journal of Open Source Software in the Finnish ranking system (JUFO). This is just one small thing, but if you can think of other things we can lobby, let us know. - I do not have time to write articles for journals, and I seriously doubt my boss will leave me time to do this: for my hierarchy I have to be productive at work, not develop my own career (this is reserved to researchers) - Could Nordic RSE perhaps team up with engineers' professional organisations in one or more Nordic countries (e.g. IDA in Denmark) for greater visibility and "credibility"? - With CodeRefinery and Carpentries we do the work that universities should have done and failed to do (since it is needed), and they are happy with that. Why would it change? They would rather give a little money to CodeRefinery and Carpentries to continue and will never recognize RSEs more or reward them more. I think we should stop doing their job so that they see what happens without RSEs - I believe we are too weak, most RSEs will just do what they are told and continue to be exploited - - Do we need more mentors, more coding teams to have good RSE? (But of course, this requires money, resources, time.) - It seems like there is an enormous demand for RSE skills in academia, and many who would be lining up to fill this demand (rather than pursuing tenure or go to industry). From a business perspective, this seems like a lost "business opportunity". What can we do to highlight this, and make this more visible? - In terms of business, there are intermediate companies that facilitate between science / industry. Some of them develop already nice code, ML code to perform data analysis. I don't see academia paying for this because academia is cheap and the business model in academia is not sustainable currently. +1 - Yes, who would ever pay a consultant "instead" of a PhD? Maybe we should see it more as to "complement" and "support" the PhD instead. - As long as there is funding for PhD projects (just to get things done, not really with big science background), nobody pays a consultant.+1 - And along those lines: As long as PhD students are cheap enough why pay for their work to be more efficient. - Where, how can I join such a company, and how can we make PIs realize that these businesses are useful? - One way to get people to understand the value of RSEs could be to actually put questionaires to current collaborators on what they do, how much time they spent on it and in particular how much time they have spent on what the RSE does now in the past. And ni what ways they benefited from RSEs - Personally, I worked in the industry before joining an RSE group. During the transition, I was rejected by one group and accepted by another RSE group. While going through the experience, I couldn't figure out what was missing. So can the planned guidance also include a section to help people transitioning from Industry to Academia, to encourage those people who want to make the transition but don't know what to do? - I worked in both academia and private companies and I never felt such a disregard for my work in the private: this is specific to academia, to glorify professors and researchers and disdain technical staff ## Discussion: What is "R". What is "S". What is "E" "RSE" was an invented term, and I have seen many different ways to interpret it, and most have been very inclusive. What do we mean by "Research": is it just academic? no. What do we mean by "software"? It's more than just software, I always say that data and computing specialists should be included, and I think it would also extend to many of the infrastructure admins. Finally, what does "engineer" mean. Is it only engineer? Probably not only. I would be happy to have a discussion on this, but I would prefer someone other than me to host it. (What if each of us adds our own opinions to each of these topics?) **R**esearch: - Is this the most clear one (in part because it is so broad and vague): anything related to research? - What complexities are there? - If you write a simulation code, are you doing research? (In my field, yes. In many fields, no.) - Research: scientific research or research for tools used by scientific research? - Contributing new knowledge and innovation. - [name=rkdarst] When would a group hire a "Software engineer" vs when would they hire a "Research software engineer"? I think that will help to figure this out. - [name=rkdarst] when you precisely know what you want in advance and can specify it, I would suggest a SE rather than a RSE - [name=ti] :+1: (see my note at the bottom) - [name=rkdarst] To me the essence here is that the work is more exploratory and you know the end state even less than most professional software projects: you have to have some of the research mindset in order to work with your customers and understand the flexibility that may be needed in the future. (reproducibility, openness, turnover of research groups) - [name=jarno] Exploration that require more creativity than anything else. - [name=ti] explorative - expanding human knowledge - not (actually) knowing where we're going until we've gotten there **S**oftware: - How many lines of code do you need to write before that becomes a "software"? - If you make a process for big data handling? - RD: At another meeting I heard people say "should HPC infra people be included in RSE?" that's what made me realize this term has gotten away from the original definition - is software just scientific software libraries, or also infrastructure software that is used to run scientific software? - [name=jarno] A collection of code written for a purpose, including documentation, tests and so on. - [name=rkdarst] This is the least important term for me: roughly, anything related to computation. The term "research engineer" thus fits more for me. - [name=ti] anything that runs - even if it's just a handful of lines of code - you can do it well (understandable, tested, documented) or badly **E**ngineer: - Not sure about that one: must an RSE have an engineering diploma? Can someone who has followed a PhD path become RSE? - I got the idea that in some countries, "Engineer" is a protected/licensed profession - To be a researcher, you need to do research. So usually have a PhD. To be an engineer, there is little requirement. - In some fields you need to be registered and have a proper degree to be an engineer. - You mean "chartered" as in the UK, where they have different levels of chartered people in various areas? - Maybe existing RSEs should "adopt" new RSE applicants who would have to demonstrate what they do to be part of the NRSE community? - To me this is a broad term for those who find structured solutions to problems. I do not think titles are important. - It is important because all those who claim that they are RSE are not doing the same type of work at all, and I do not recognize myself in all the definitions given - If anybody can become part of the RSEs then what differentiates us from other organizations? - [name=rkdarst] - [name=jarno] Someone who does practical work to enable an outcome further down the line. +1 - [name=ti] this aspect to me is about the "structural integrity" of it - making something reproducible, trustworthy, lasting (also considering future-proofness, including extendability) - as opposed to "throw-away" or "write-once, read-never" code that is very common for researchers (who focus on doing it once, as quickly as possible, for one paper) at the moment - What is a Software Engineer (compared to Software Developer, coder...): - Someone who maintains the overall structure of a software project - Renponsible for the "structural integrity" of software Notes: - [name=rkdarst]: Could the a movement be "Research Engineering" and one subfield be "Research Software Engineering?" - this is because when I first learned of RSE, the emphasis was valuing non-paper contributions to science. there are a lot more non-paper contributions to science than only software. - [name=Ti]: "What is RSE *not*?" - Just software engineering isn't what we need (for a lot of scientific software development purposes). I worked in a machine learning company for a while, where we had "classical" software engineers, ware engineers, "ML engineers" and "actual" researchers - but the kind of software that the software engineers wrote was actually (nearly-)useless for the purposes of researchers. Too focussed on getting everything as stable and "perfect" upfront, whereas a huge part of research is exploring the unknown, not knowing up front what may be needed later. ## Discussion: Git evangelist ### Starting point of the dicussion [Slides](https://github.com/sunnivin/git-evangelist/blob/main/290621_git-evangelist.pdf). What is good scientific software? * works * standardizzed * understandable * reproducible * maintainable Tools to help with that * version control (most important?) * documentation * modern editor * containerization Important is to have the right tool for the job **Starting questions:** 1. Is version control the most imprtant tool for a scientific developer? - Not sure _most_ is useful. It is _one_ of _many_ important tools - It is not *the* most important, but very important. - Sort of conclusion: it depends a bit on what the scientific developer want's to do. The room agrees that version control is uesful and applicable in different contexts. It can be used for keeping track of changes in a document (TeX), logging your daily work or colaborating with your colleagues. - - Other tools that are as/more important: - Proper debugger - Containers - Documentation framework - An efficient programming language - Basic understanding of software design (engeneering aspect) 2. How can we motivate scientists to learn use version control? - e.g. master students think it is too much a hassle. Supervisors may not use it. 'Struggeling' against the flow if one is the only one using verison control - github hides a lot of the complexity and good start for beginners - Most people "understand" the idea of version control, they just do it with "version_2_final_modified_PI_comments.docx" et al. Demonstrating that there _are_ better ways can be enough - Video (satire) showing the nightmare of not using version control: https://www.youtube.com/watch?v=CvbLVVRzJF8 - Real life examples where and how version control can save your a** - Not having a folder with all versions of a paper - The experiment anallogy, you would not set up an experiment without calibrating right? i.e. use the correct tools for the job - Minimal choice: if asked for help, provide the solution via github (/gitlab/bitbucket/etc), plus assistance getting to grips with how to use that. - Group culture / figure in authority: if the PI can be convinced to _require_ researchers to work a particular way, that can be very effective - It can be very hard to be a young RSE trying to convince her colleagues to understand why they should invest in learning version control. - Younger individuals in academia (young post-docs, PhD and master students) are easier to convince then the older generation (permanent staff like researchers and professors) * among same or similar level researchers and RSE it is easier to make suggestions like starting to use git * matter of persuasion that it is an important tool but how to best do it? * using the experiment analogy - passive agressive introdoction of git to colleagues: - just start doing it by using a git repository - people will just have to accept working with it - maybe add short guide and offer to help if needed - share workshops like [Coderefinery](coderefinery.org) and software carpentries with students and colleagues - convincing people is big opart of the job to visit workshops, like above and start using git etc - hard to convince why bother with all weird commands, feels like something like dropbox would get accepted more - for mainly document storage maybe git may also not be the right tool - starting code git becomes the tool - requirement from groupleader(speaker): use git, no branching etc but using it simply as storage * still some use version 1.4 etc * given up on telling how to use it properly * some eventually see the use * some don't * when hiring new people: postdocs should have some experience, from phd students it is not required * so it is used to choose who to hire as postdoc * word is a challenge, latex better * 'good culture' is one way to enforce the use of version control from higher levels * some fields , researchers do not develop the code but only use it * These code "users" can still take out some userfulness of version control * Like keeping track of the different *experiments* they conduct. Changing one parameter, changing to another parameter, etc. * version control does also applies to data * excel is yet another challenge 3. Do all code projects need version control? - In which cases are version control a little "overkill" - Never :sunglasses: - They are never overkill but still can be a pain (_merge conflicts_) - Merge conflicts are the *nice* way of handling what some programs instead handle by dropping one party's changes... 4. When should a scientific developer learn to use version control? - When writing their first hello world. :+1: :+1: - But it's not *useless* to learn at any later point. - Maybe introduce it for things that aren't even code - such as specifications, notes etc. - When they write their first collaborative piece - depends on how complex software is if it is necessary to use version control 5. How and who should teach version control's best practices? - A university course, the programmer his/herself, our professors, etc? Colleagues? - University courses that have coding exercises could have students clone git repos and then submit answers that way. This would get people used to using version control without them even noticing. - We use several approaches in my (research support) team at Aalborg University: (two different) ph.d. courses + short narrow "competence development" courses for all university staff. - phd courses are offered at AAU with git as part of curriculum, phd students need to take some credits and therefore hear about git at some point. Git as a smaller part of a Python course + Git as a part of a " scientific software development practice" course. * how to get the course started? * long winding road * speaker went from professor to consultant * suggestion to keep maintaining the course started as professor * board of doctoral school saw the value (course is popular) and took it up ### Git-evangelist idea for blog post for Nordic-RSE I (Sunniva) will leave on :sunny: vacation next week (not a lot of stuff happening in Norway in July), and pick up this idea again in August. If anyone wants to write something before this I would :heart: to collaborate! #### Content Take out the essence discussed on the unconference and turn it into a text in the markdown format. Figures from the slides could be maybe be used. #### Other points that could be relevant to mention There already exists a lot of fun pieces about why you should use version control: * Nick Hodges in [BetterProgramming](https://betterprogramming.pub/9-reasons-even-solo-developers-should-use-source-control-c4f5939e2a36) * StackOverflow [discussion](https://stackoverflow.com/questions/1408450/why-should-i-use-version-control) ## Summary of the day ### Funding for research software [HackMD link](https://hackmd.io/hjzY9RH8TwWsHJ5UUBO4Dg) * easier to get funding for new projects than old * change attitude so that funding als goes towards maintaining and creating software * feedback and maybe create a paper * download badges from pip and conda to get an idea on how many people are using it * encourage people that have done something cool with your software to share a user story ### How to be a good Git evangelist * biased towards git evangelists that were present in the room * problem how to communicate how important git is * lots of levels where version control can be useful * example case AAU: PhD course on these topics that give ECTS ### In "RSE", what is "research"? what is "software"? what is an "engineer"? - Software Engineer: - More general term - No practical research value - Research Engineer: - More general term - Not necessarily computational work (maintaining a lab is not RSE, but still necessary) - Research Software Person: - Lacks structural view of the whole project. ## Feedback * one thing that went well * Converging on session topics went reasonably smooth (I haven't tried an unconference before) * * * one thing that could be improved in the future (tomorrow) * *