Building communities to support Research Software Engineering: blog series 2/3

02: What Works

In this blog series, we're sharing our experiences from our meeting at Heidelberg to discuss how to build communities to support Research Software Engineering. We provided the background to our meeting and introduced the participants in our first post. In this one we pull out the recurring threads in our experiences of what worked.

Knowing your community

This is fundamental to the community's ability to add value and should be one of the first community development steps. We need to know both where the community is at and where they want to go. Activities responsive to such community goals, needs and aspirations will generate a higher rate of engagement and voluntary participation.

And it all started with a survey: we all started with some form of surveying our communities. But on-going revisiting and reflecting on such fundamentals is important for community sustainability so.

Effective communication channels

Community == communication

Effective communication channels are vital for both the transfer and processing of information, particularly of tacit knowledge, but also for fostering social, collaborative relationships. Across the various initiatives, approaches tried include mailing lists, Slack and Glip channels, Google Groups and other discussion forums.

A stand out example of community communication is the mattermost based Bio-IT internal chat system, set up by community members. Fine control of the features and privacy of the system has made it highly adaptable to serving the community's needs. Coupled with an internally hosted GitLab based repository system, they've managed to build a thriving complementary online community actively engaged in sharing, co-developing, reviewing and discussing their software. The only drawbacks are that it can be difficult to open up discussion to the outside world.

But it's important to note that it's often more efficient to signpost and develop links across communities than trying to reproduce parallel versions. For example, for R questions beginners might have, I would unhesitantly guide learners to the R for Data Science (#R4DS) slack community. The 1000+ strong slack team of mentors and learners is a constant hive of discussion, trouble shouting and sharing wins while working through R for Data Science. For slightly more technical questions, I might guide someone to the rOpenScislack community, the rOpenSci or Rstudio discussion boards (powered by discourse, another nice open source community building resource) or #rstats stackovelflow.

Overall to be successful, they'll need to be diverse enough to allow for varied communication styles, including the option for private communication, but to be most effective they're better when they are integrated.

Codifying and documenting community practice.

A foundational resource for establishing community culture and practice is the codification and dissemination of standards and guidelines. The German Aerospace Center (DLR) approach is a particular great example. They make use of wikis and check lists in a variety of formats (e.g., Markdown and Microsoft Office Word) to help guide software development. They have established a minimum requirement for all software and further recommendations follow a tiered level framework determined by a software's application class, in particular the software scope and size as well as the foreseen period of development. Individual recommendations are linked to reasoning and further advice which help researchers understand and get behind the recommended practices. Importantly, the group work with contacts at each institute of the DLR to regularly get feedback on evolving requirements for guidelines, new tools, and training.

Slide from Tobias Schlauch's talk at the Second RSE conference: 'Helping a friend out: Guidelines for better software'.

Materials are currently in German but as we eagerly await their translation into English, perhaps this is somewhere the RSE community can help, by establishing community translation initiatives (see this excellent post by Achintya Rao on how collaborative translation could be supported).

More broadly, starting from a few papers on Best and Good Enough Practice for Scientific Computing, a number of excellent Guidelines of Best Practice and documentation are emerging, e.g.

At this point, it feels like we should be building upon and refining such efforts rather than duplicating them and feel that focusing on developing reusable, customisable templates to help guide best practice would serve us well.

Having said all this, it is important to note that community documentation can take many forms, including blogs, wikis, READMEs, bug reports, discussion boards and sites like Stack Overflow. It still blows my mind that the substantial R-related content on Stack Overflow, without which I would have never completed a PhD, was seeded by a flashbombing the site with R questions and answers back in 2009, and arguably became a foundational online knowledge base for the R community. Such repositories of tacit knowledge provide platforms for the community to process information and incorporate into refinements of tools and best practice guidelines.

Actively fostering engagement and participation

Successful communities thrive on diverse contributions from a wide range of their members. Most of the attendees at this particular meeting were representing the efforts of a much broader selection of contributors to their respective communities. The role of a community coordinator is often to encourage and facilitate the voluntary efforts of the larger group, and it is this engagement across the whole community that, in turn, produces the most amazing results. To get some idea of the number of individual contributions that it can take to create a successful community, check out the Acknowledgments slide from Toby's talk at RSE17!

Welcoming supportive active community catalysts can have a huge impact in setting the tone and can be the deciding factor on whether newcomers choose to stay and participate. It's no surprise we routinely ended up back at Bio-IT t0, and Aidan Budd's initial vision, drive and ability to be the hub that drew other people together. Other great examples include Maëlle Salmon (@ma_salmon) as an rOpensci package review editor, Stefanie Butland (@StefanieButland) as rOpenscicommunity manager and Jesse Maegan@kierisi for establishing #R4DS and Abigail Cabunoc Mayes, (@abbycabs) Practice Lead of the Mozilla Working Open mentorship program.

Ultimately, though, it's about member participation, so the superpower of great community catalysts is to actively acknowledge and promote member contributions and help them share their stories, ideas and questions. And while this all may come more naturally to some, we can all aspire to be better community catalysts.

I'll leave you with another quote from open advice, this time by Jono Bacon:

I have talked about there being two types of community managers; those who go out and give presentations and wave their hands around talking about a product or service, and those who work with a community of volunteers to help them to have a fun, productive and enjoyable collaborative experience. I am more interested in the latter – I feel that is what a real community manager does.

Training

We all identified that providing training, developing materials and workshops are still fundamental to baseline computational skill development. Initiatives like the Carpentries or Elixir are making huge strides in establishing the foundations for scaling. We also all recognised the importance of flexibility and hearing from your community and being able to adaptively develop training according to identified domain needs.

But for both individuals and the community to reap the benefits of technical training, it's important to equip researchers with the digital citizenship skills required to be effective nodes. The ability to access and recycle material, share through and post to the web are incredibly empowering, but only up to a point. Being able to effectively propose an idea, share it, build it in the open, get feedback, onboard collaborators and incorporate contribution underpin the emergent community social capital and knowledge flow we see in open source communities today. So skills in collaboration, leadership, mentorship and even asking for and giving help are critical. Additionally, an ability to iterate in response to user feedback requires humility, openness and transparency. As community leaders, we set the precedent and the tone for any community so effective leadership must be driven from the position of a peer.

Events!

Communities are above all social so bringing people together through events is vital. To keep people engaged and maximise participation, good variety and rhythm are key.

Conferences are still a great place to get together and there is no doubt that the RSE conferences have been a huge spring board for the UK RSE community and beyond. The centrality of the conference in the maintenance of the NEUBIAS community also speaks volumes about the importance for technical disciplines of science to have that space for knowledge exchange and network building. Since members of the NEUBIAS community are spread all over Europe with small communities (if at all) at their local institutes, an annual conference offers great possibilities to get work done. This is especially important since many members are in scientific support positions with little time to get involved in community activities during working hours. Conferences attendance, however, implies blocked time on the calendar and offers the chance to collaborate "offline".

But there's a lot more fun we can have with events! For example my favourite thing to organise is hackathons! Academic "fun" hacks can be a sociable and effective way of getting people to learn/practice new things and tackle challenges in their field without pressure and with the support of others. They are great opportunities to practice more fundamental skills like using version control systems to collaborate online while hack themes can provide opportunity to delve into more specific topics. For example, the Reproducibility hackathons (#ReproHack) we organised as part of the OpenCon Berlin (2016) and London (2017) satellite events, gave participants the opportunity to explore other people's code and data and get exposure to different approaches to making research reproducible.

Other more focused learning sessions like coding clubs and training schools/learnathons are great ways to bring people together to work on more advanced topics and get feedback. Coding clubs work best when sessions are focused, like working through a book, training program or even blogposts. In the case of workshops, as materials have to be moderated/prepared by someone, the events have the side-effect of bringing together not only learners but also trainers over a period of time that facilitates fruitful discussions.

Note that local events can also now easily open up proceedings to remote participants. Streaming or recording events, allowing call ins or even just opening a gitter channel or posting links to live documents could help broaden engagement.

Final top tip: Food and drink == always a winner!

Buy in from upper management + funding

One of the key drivers of the longest standing and most developed communities is buy in and support from upper management or sponsorship early on. Bio-IT benefited by a need for the initiative being flagged early on and led to them now having nearly 8 years of well-resourced effort under their belt. Similarly, the DLR initiative was driven by first raising awareness at upper management level which subsequently lead to upper management support.

Related to buy in is financial support of activities. At the very least, funding for dedicated community building personnel can provide an important start. Since research is an inherently international and/or multi-organization endeavor, financial support from umbrella organisation can also be sought. The European Union, for instance, has established a programme (COST) for setting up international research networks which supported costs associated with NEUBIAS setup, events (conferences, training schools, short scientific exchanges) and networking activities. Additional information on funding schemes can be found here.