# pcb-rnd devlog

## Offer vs. pull (virtual users vs. active users)

Pcb-rnd has an pulled-by-users policy on deciding what features to implement. Below I try to explain how we ended up using this policy.

### Past: offer, virtual users

When I started pcb-rnd, although I published it, I didn't think anyone else would use it. It was just about having mainline with different default settings.

Later on I added a few features, and pcb-rnd slowly became much more than just different defaults. I felt other users may find the new features useful, so I had put it on offer: advertised the repository. I thought users would download and try the software. Judging from the feedback, they didn't. I didn't mind, because I was working on features I needed, to get pcb-rnd do what I wanted: I was my own target audience and anyone else trying pcb-rnd could only be a side effect. Until when I ran out of features because it already had everything I needed.

The next step was to implement features for other users. Between summer of 2015 and summer of 2016, I tried to be a bit more proactive: made public polls to map what users needed and tried to focus implementing those features. This did not bring too many users either.

This was when I realized what was really happening: I was offering features for virtual users, addressing my communication to the wide audience. Noone really felt it was for him. Even if he was complaining about a missing feature in pcb and a few days later I announced the fix in pcb-rnd, it was not specifically for him, but for the Greater Good.

Virtual users nearly never became real users. My conclusion was that there was no point in implementing features for virtual users as noone ever would use those features.

### Present: pull, active users

Mid summer 2016, I switched strategy. Instead of polling the crowd, I picked a few users with known feature requests and asked them if they were willing to test pcb-rnd if I implemented their feature. More than half of them said yes and many of them got hooked up. They all became productive, active members of the pcb-rnd community.

Learning from this experience, the new strategy of pcb-rnd is as follows:

- pull instead of offer: do not hope a new feature would attract users, rather arrange active users who then pull the project with their feature requests;
- do not invest too much time in anything that is not currently pulled by actual, existing, active users; rather invest that time in fulfilling the needs of already existing users
- reaching 100 users with an average of 0.1% activity will result in 0 active users whereas reaching only 10 users with 30% activity will result in 3 active users; thus a small active community around pcb-rnd is more efficient than the much larger geda community;
- users really appreciate fast response on bugreports and feature requests. Instead of trying to impress virtual users, rather keep already interested users happy.