The missing hands at NodeSchool

Martin Heidegger
9 min readSep 9, 2016

--

… about my shortcomings as community organizer…

Many people have heard of NodeSchool. It is a very-well visited project. Even though it is entirely consisting of volunteers and there is almost (read below) no hierarchal structure, it works internationally. There have been more than 500 NodeSchool events on 6 continents. I have been heavily involved into all this. As organizer (online and offline) and as maintainer of the community and some tutorials/tools.

The Github organization of NodeSchool has, at the time of writing this, 399 members. This is important to note because NodeSchool has once had a completely flat hierarchy and got deleted (oops). Subsequently it needed to be rebuilt.

The member count has since grown again and we prevent a future deletion by using a homegrown bot (thanks mafintosh) and a minimal hierarchy. It is a slightly clumsy solution, as it is the case with bots sometimes, but it works.

To me, the NodeSchool is testing the borders of open government and of github. There is officially a core team (I am a listed in there) but for the biggest part the NodeSchool has been self-organizing. I know that some core members help out here and there but a surprising amount of the issues are dealt with by other volunteers. (Maybe thanks to the guide that I wrote some time ago?)

Oh, nodeschoolbot!

Recently I was curious about how the people at NodeSchool all around the world are doing and asked them about it. Turns out that most of the people that answered were generally happy. That being said: Not everything is shiny captain and I know it. I knew for longer that some things are not working out well so here is a little summary of the things I know we can do better:

Translating everything

The first thing I did at NodeSchool was following an shout-out to translate everything. So, I started with the homepage. Today the NodeSchool homepage is translated to 20 languages by volunteers. Also the tutorials needed to be translated. So, I invested quite some time to add translation to workshopper as well. learnyounode is today translated into 13 languages.

This sounds like a feat, and there has been a put-in a lot of effort by a lot of people. But… I have rarely seen updates of the translations. Even though code had to change: Improving once translated workshopper’s or the homepage has become nightmare to me. And even with this in mind: today the task of “translating everything” is still not far from done…

There is light at the end of the tunnel though. I got support from the Kyoto-based startup nota (maker of gyazo) to build/investigate for a translation tool that helps with exactly the issues we are having. It is not yet in a stage though where I can say when I can deliver on it. (This is what I am currently working on.)

We need a sustainable solution for translation. Who wants to help me build it?

(Sidenote: [organize translation@organizers/issues])

Upgrading the workshoppers

Over the years more than 40 tutorials made it on the NodeSchool website. Again: all made by volunteers. Not one of them was made by me. I had several ideas for one but never the time.

Most of the tutorials were based on either workshopper and adventure. They did very similar things but in practice they were incompatible (due to philosophical differences of the original writers) so instead of working on my own tutorial I started to work on a consolidation of the two packages: workshopper-adventure .

It offers now in a mostly compatible fashion the features of both worlds so we can finally upgrade the old workshoppers. Quite a few features have sneaked into the workshoppers since.

But… I haven’t found the time to write a guide on how to do the upgrade or how to write good workshoppers in the first place. But honestly speaking: it isn’t that difficult! Sure, it still contains a few non-trivialities but for the biggest part: writing a workshopper is easy.

How about upgrading some old workshopers? Writing a guide on how to do it would help too! Or how about to dig a little in workshopper-adventure? Your help counts!
[help-wanted@workshopper-adventure]

(There have been voices that this should be a more centralised, structurized effort. Even I thought things like Color coding or Quality Checklists are a good idea. Before we can go there though, I really think we need more people simply getting things done.)

Problems with Node

Since I effectively maintained workshopper + learnyounode (the most used tutorial), I also had to deal with the various bugs of the interactive-mode (aka. TTY) of Node.js.

Don’t get me wrong: I respect the Node.js team for their work, and I understand how difficult it is for this not to become a problem, but there have been 2 or 3 occasions in the past year where I spent a significant amount of my allocated-to-NodeSchool-time on bugs created in new, sometimes minor, versions of Node.

It is bad enough that there is a package now that tells you if tty is broken in a particular version of Node. (Note: Maybe someone should send a PR to workshopper-adventure we can make use of it? — with translations for the error messages.)

It would be nice to have champions both on the Node.js and the NodeSchool side that make sure, using CI and human testing, that learnyounode works on the different platforms BEFORE a release.

Newsletter

One might think that a newsletter is a corporate feature but to me it would be a crucial one for NodeSchool. Quite a long time ago we opened a newsletter system but volunteers to create nice articles have been hard to come by. This is really sad, because there are so many interesting things to write about!

  • How was the NodeSchool International Day?
  • Do you want to read an interview of the NodeSchool Johannesburg organizer?
  • How does NodeSchool Toronto have such a cool website?
  • Which new workshoppers can you learn?
  • Have we added new features to workshopper-adventure that are worth upgrading?
  • Is a homepage update in the works?
  • Who is this new member that so swiftly answers all the questions in discussions?
  • What are the most common recent issues in discussions?

etc. …

I know in my heart that this is worth caring about. For my part, I don’t know how to fit it on my plate. Could it fit on yours?

(Come to think of it: This very article might fit in the newsletter)

Organization

Some of the responses stated that they feel they are not connected and there is no central organization. While this is by design, I can understand how this can be hard to wrap your head around.

The difference between other contributors and the “core”-team is that the core team has more permissions to add/remove people. They should only be necessary to get things done in rare cases. Other than that the core members do the same thing that all contributors do: only what they are interested in. Often it is just focussing on their local NodeSchool rather than pushing more general agendas. We are all just humans.

~ At this point, a quick intermission: This is my NodeSchool Term Sheet~

Chapter … A NodeSchool chapter refers to a place where at least one (but preferably more) NodeSchool events happen. Chapters are based on their geolocation (!not on any other structure!) and are usually setup for an area that is easy to reach with public transport within approx. 40min. Usually that means one Chapter per city.

Chapter organizer … A github organization member that can be talked to when there is a question about a Chapter. Other than that: there is no difference to a Chapter member!

Chapter member … A github organization member that helps organizing NodeSchool events. A member has access to the chapter’s homepage and can close issues. We expect members to accept other, willing volunteers with open arms into their chapter and ask for help if they need something.

NodeSchool event … A usually free (or with little cost), open community event. Anybody can attend to study Node.js in one fashion or another. NodeSchool events can happen outside of a chapter! If there is a free, open event where you can study Node.js you can put it on the list. NodeSchool events have freedom of choice in how to study Node.js together: studying workshoppers, creating workshoppers, using online tutorials, reading Node.js books, having presentations,…

NodeSchool … A loosely organized, international github organization with only one goal: Make it easy to learn node.js together in a friendly environment. (by whatever means)

NodeSchool Core member … A person that contributed a significant amount to the NodeSchool and/or we feel works in the best interest of NodeSchool. You can ask to become a core member if you feel you want to be one! It comes with more permissions on the project in exchange for more volunteer work.

Workshopper … A tutorial that can be installed using NPM. Either a CLI tool or electron app or web server. (Just look at the WebGL workshop).

~ … end of the intermission, let’s go back to the organization! ~

The current situation is a little problematic. There is no one really responsible for answering the important questions. For example: there often passes some time between a chapter request and the creation of the chapter. There have also been some discussion about to improve the organization that haven’t been processed properly like trying to turn NodeSchool into a foundation or to start a NodeSchool Online.

This is now an open thought experiment but I think we could improve the NodeSchool a lot by introducing two things:

  1. New Member type: Assigned elder: A person of the NodeSchool core team that is responsible for things to be answered/initiated within 10 hours in the organizers repo, for a one week period at a time. The assigned elder will be publicly listed and can be revoked of core status if he doesn’t keep up to the bargain. It is my thinking that all core members take turn.
  2. Stronger binding of events & chapters: It is possible that events happen outside of a chapter but I think that it shouldn’t be the norm. There should be incentives to make informations about events open to other members using github and hosting them. Good tooling in this direction is crucial. I started working on https://github.com/nodeschool/admin but at some point I simply ran out of juice.
ASCII art for the cli-tool

… I don’t think we need anything else really.

I don’t have the energy to push any of the mentioned agenda’s much further but if you feel like something is a good idea: your effort to make it reality would be very appreciated.

(at the very least by me)

Please help me. Please help NodeSchool.

I am a father and freelance developer. There are surprisingly few businesses around were I live betting on Node.js (maybe there are more somewhere else). With all the tasks that I try to work on I have (finally?) realised that I am way in over my head. Recently, I tried to argue for financial support as a way to be able to spend more time on it. But it didn’t resonate enough to become reality.

I have reduced my time spent on NodeSchool significantly, because I have a family that wants a piece of me and that I should feed. The work on the translation tool could prove to be very important. However: I am sure that with the current momentum, and my general lack of time, many other things will stay unfixed for quite some while.

There has been tremendous interest into the NodeSchool. Many people voicing their interest and contributing great things. I feel like my lack of organizational skills — trying to fix things myself — has not done NodeSchool any good in the recent past.

For the good of Node.js and NodeSchool: If you are better at motivating people & organizing stuff: Please help out, we need you!

If you feel you can tackle one of the problems I outlined above: roll up your sleeves and git r done.

NodeSchool has been a joy for me to work at and offers a lot of positive, great feedback. Once you come by the fact that there this is all open I think you might love it too.

hugs & kisses
Martin, the Austrian guy from Osaka

--

--

Martin Heidegger

Freelance Node.js developer interested in distributed systems. Osaka, Japan.