Public Lab Research note

Sign up with

By signing up, you agree to the Code of Conduct, which applies to all online and in-person spaces managed by the Public Lab community and non-profit. You also agree to our Privacy Policy.

As an open source community, we believe in open licensing of content so that other members of the community can leverage your work legally -- with attribution, of course. By joining the Public Lab site, you agree to release the content you post here under a Creative Commons Attribution Sharealike license, and the hardware designs you post under the CERN Open Hardware License 1.1 (full text). This has the added benefit that others must share their improvements in turn with you.

Draft of a Public Lab Software Roadmap: Comments welcome!

Hi, all - we've been working on this idea for a "Roadmap for Public Lab code projects", as part of our goal to improve transparency, discussion, and the sharing of decision-making in the Public Lab code community. We on the Public Lab staff, and people who've been very involved in PL, use a few different venues to discuss/plan/chart our work, including:

A roadmap can provide an overall trajectory -- not to replace the above processes, but to link them together into a coherent direction that helps community members stay synchronized and play a larger role in planning out new features, implementing them, and ensuring that activity across the code community matches our community-wide priorities and the mission of our organization.

In this roadmap, I've tried to highlight one specific major change in direction, which is the shift towards a more stable core codebase at PublicLab.org, while providing a framework and support for "satellite projects" which are more ambitious and exploratory to happen in a modular way -- much as the Editor project, Leaflet Environmental Layers, Image Sequencer, and others have done. Our hope is that this can provide a more consistent and stable experience for site users, while leaving plenty of opportunities for interesting and innovative projects for our coding community.

Here's the draft:

Roadmap

The Public Lab Software Roadmap will help us build shared goals around software development, especially for the plots2 codebase, but also for how we plan/start/build/maintain and even gracefully abandon coding projects at Public Lab.

Goals:

A more stable PublicLab.org experience whose core functions are consistent and error-free

An easier to maintain site that has fewer and fewer bugs

New features when appropriate

Interesting new projects for people to work on & space to prototype really great ideas that will make the site better

Useful tools of all kinds for people across the PL network

Problems:

People making new features could use more help understanding how they fit into the big picture and what purpose they serve in the broader Public Lab community

New features can sometimes disrupt basic site functions - by generating new code

Continuous change can be good (site improvements) but also an issue if people constantly have to re-learn core systems

Ideas:

This Roadmap, to help us coordinate

More and better tests to stabilize our code

Deprecating old code and aiming for a simpler, less complex core codebase

Encourage ppl to choose a segment of the code to specialize in (add your name to a group?) to build longer-term institutional memory and capacity to maintain the codebase (not sure about this one? Would love input!)

Overall project goals

A clear and specific definition of what we want our website to do (especially what no other platform provides) helps everyone distinguish between "core" functions and "satellite functions," freeing us up to prototype, explore, and innovate in satellite functions, while prioritizing stability in core functions.

The people who create our platform make very different design and technology decisions from other projects, and this stems from our deep belief that, to see a change in the world, we must build and maintain systems that reflect our values and principles.

From design to system architecture to basic vocabulary and communication patterns, our systems have grown organically since 2010 to support a powerful, diverse, and cooperative network of people capable of taking on environmental problems that affect communities around the world. The platform we have built together speaks to this shared history in many ways, big and small. It reflects input from people facing serious health issues, on-the-ground organizers, policy specialists, hardware hackers, educators, and civil servants.

This broad community, and the Public Lab team have facilitated a space where we can discuss, break down, construct, prototype, and critique real-world projects. Together we have shaped a platform that incorporates familiar pieces, but ultimately looks and feels quite different from anywhere else on the internet. Our platform continues to grow and be refined, but it also reflects a commitment to listening to one another, to mutual respect and support, to an awareness of the barriers and challenges presented by gaps in expertise and knowledge, and a sensitivity to the inequalities and power imbalances perpetuated by many mainstream modes of knowledge production and technological and scientific development.

Our mutual aims of democratizing inexpensive and accessible do-it-yourself techniques has allowed us to create a collaborative network of practitioners who actively re-imagine the human relationship with the environment. Our goals are supported and facilitated by a system which questions and even challenges how collaborative work can happen.

We could refine or adjust this! Here's a further brainstorm, and we'd love to hear more:

an easy to use platform for ____ (collaboration, organizing, regional organizing, collaborative project development, building a collective knowledge base?)

That's what we've got so far! We'd love to hear more, as we hope this document evolves into something that we can all look to as we build out projects and community here. Thank you, leave comments below!

Allow rewrites of site functions (like in React, which was a popular idea this year)... only? ...if they come with good (system?) tests

Wow! Excited to see this 😃.

Identify and rally contributors towards "big projects" we're trying to complete and recruit help on (rather than starting new projects?) to start to complete them and reduce our "technical debt" (is this a good frame? https://en.wikipedia.org/wiki/Technical_debt)

👍 +1 🙌

Encourage ppl to choose a segment of the code to specialize in (add your name to a group?) to build longer-term institutional memory and capacity to maintain the codebase (not sure about this one? Would love input!)

Agree on this. I think it's essential to specialize in any one of the repo as only then one can experience the different roles and can constantly keep on taking bigger challenges.

Newcomer --> Contributor --> Reviewer --> Maintainer --> Maintainer + Time to explore new repo and specialize in that 😃

Also, one can contribute to/review/maintain multiple repos at a time . It depends on person to person, how much time one has, the motivation behind contribution, etc.

yes, how to get involved section can be expanded. We can actually summarize it in steps like:
- If you are new to Public Lab then try first-timers-only issue from https://code.publiclab.org
- We only allow a newcomer to solve one issue but if you're still confused about GitHub flow and how things are working, then we can make an exception. If you got things clear, then proceed to the next step.
- Undertake fto-candidate issue or help-wanted issue, they maybe a bit complex but you can definitely expect help from us.
- You can undertake more issues at this stage of your Open Source journey with Public Lab. Also, you can consider creating an FTO issue for a newcomer and help someone start their OSS journey 🎉.
- Moving ahead, you can take on challenging tasks, review PRs of other contributors and much more. You can also volunteer to be part of the Reviewers' team by commenting on an issue like this - https://github.com/publiclab/mapknitter/issues/634.
- Keep on contributing, be an impact and get yourself maintainer authorization (needs more clarity!)

It may also be possible to show how the different GSOC/Outreachy programs contribute to the roadmap. I put together a comparison chart to
show the different efforts but a relationship graphic may have been a better approach. Copy and paste the link below to see GSOC comparison excel chart: