I was chatting on Slack, having a conversation I've had many times before: how can we better guide potential new contributors to find the right place where they can start working?  ComDev theoretically is for mentoring and outreach, but the main way our few regular volunteers do this is manually replying to emails, effectively asking people do do  some research themselves over here, there, or there.  That method doesn't scale, and isn't as helpful to less-self-starting volunteers who might need more help even finding a project that they might be interested in.

So why don't we automate the basic question & answer portion of helping a newcomer?  What languages do you program in - or only docs?  What kinds of technologies are you interested in?  What other open source or project development experience do you have?  And so on.... These questions all take time to consider and reply to if the newcomer asks for more help, but our volunteer energy isn't scalable or consistent.

What if we came up with questions and some pathways to gather as much of this information as we can up front, and then use the output to give the person some much more specific guidance about which Apache projects might interest them?  If we can make the questions inviting and interesting, they might also spur a newcomer to explore more areas, or they might click additional info links we include in those pathways.

This is the ASF, so this is a participatory document and process!  Yes, that means you!

Note the Apache Training Podling is also experimenting with different ways to present slide decks or simple interactive content.

Draft Concept: a templated CYOA questionnare engine

There are plenty of "Choose Your Own Adventure" (CYOA) engines out there which do almost exactly this: ask a series of questions down multiple paths, and then produce a result based on various answers.  Adopting an existing tool can get us started quickly, and once installed someplace on community.a.o or whimsy.a.o can then be low maintenance.  We'd then need to design and write out using the CYOA's engine the script of questions, branches, and final states; that is, where we should direct a user who's gone down all the paths.

A real-life example is "What can I do for Fedora?" based on AskNot-ng. However it feels like the questions and the available pathways there are too simplistic for our needs.

For example, Alice wants to contribute at the ASF, so she finds her way to community.a.o/FindYourPath, which starts the questionnaire for her, and starts leading her down the path below.

Brainstorming Path Groups

  • How experienced are you with open source contributions?
    • (several levels from newcomer, to existing committer on another project)
  • What languages do you want to contribute in?
    • First slide is high level: compiled languages (C, C++, etc.); scripting languages (python, ruby, etc.); databases; web frameworks (javascript, css, tailwind, etc.); website or documentation or QA, including test design.
    • Based on the answers to the first slide, ask for more details about each set of languages or areas the person mentioned.  There might be multiple follow-ups.
  • What technologies are you interested in?
    • The categories here need to be listed from the newcomer's perspective.  Maybe Front end frameworks; Back end frameworks; Databases; Messaging; Scientific; or the like.  (This needs some thought, both to be useful for a newcomer, but also to then know which projects to guide them to.)
  • Break slide: we could include a few "Did you know?" slides with selected useful links to some FAQs in the middle if desired.  Provide short FAQ type headers that let someone link out to some useful resource elsewhere along the way.
  • How do you want to contribute?
    • GitHub only; GitHub or someplace else; Subversion or wherever the project lives.  This is critical to classify people who only see GitHub PRs as a way to contribute.
  • What other questions might we want to ask a newcomer?  Either to help them find specific projects that really meet their interests, or to help them think about why and how they really want to contribute?

Once the data is all saved, use the intersection of various sets to show them a specific subset of projects.a.o PMCs that might meet their desires.  This obviously will take some work to code, and also relies on project.a.o data, but that's something we could improve separately if this tool gains traction.  In particular, if we get people excited about this new contributor funnel (and can show its usage logs or the like), that would be incentive for projects to update their projects.a.o data.

CYOA Tool Requirements

  • Permissively licensed
  • Low maintenance server/engine/whatever tool, that ComDev or Whimsy can install without having to worry about maintenance
  • Fully templated questions & paths, so that it's easy to configure the pathways later, or so that we could build new pathways (perhaps for designers, docs, etc.) without needing to know programming
  • Runs on any browser, with no server storage. Bonus points if a user can come back to finish completing a questionnaire (cookies, local storage, whatever).
  • Basic skinnable features so it can roughly match existing ComDev website
  • Stretch: translatable engine text (on buttons, etc.) and in scripting

Likely Major To-Dos

  • Find and evaluate a CYOA engine, or similar software
    • Run a prototype, perhaps on Whimsy, for testing
    • Find a permanent low/zero maintenance home for it to run
  • Draft potential questions / paths / people we want to attract
    • Feedback, testing, evaluating both what a newcomer sees, understands, and wants to accomplish; plus also which projects/other areas we could point them to
  • Evaluate usefulness of projects.a.o site now as a target for newcomers down a relevant path
    • Evaluate how we'd do searching/matching for relevant projects, plus scoring (list more active projects first?)
    • Evaluate how complete/accurate the data is
    • Look for volunteers to help update DOAP files
  • Mock how we'd present the tool: welcome screen, explanations, help system, whatever
  • Plan testing, beta, comms, rollouts