Неуспешно усилие да се плати за проект с отворен код

https://unsplash.com/photos/Tjbk79TARiE

При стартиране от 4 души нашият екип от инженери трябваше да изреже много ъгли, за да достави постоянно променящия се списък от функции, които сметнахме за необходими. Ние влагаме много коментари от TODO в нашия код с надеждата да организираме дългът на технологичния монтаж. Метаданните бяха замислено добавени към коментарите с надеждата да поддържаме нещата организирани, но бързо загубихме следа от повечето от тях. Имахме много код, не много хора и работният процес по изграждането и поддържането на нашата система бързо ставаше по-малко приятен.

В свободното си време изградих инструмент за себе си и екипа си: Toodles. Това е инструмент, който би сканирал кодова база за всички записи в TODO, организира ги и ви дава възможност да правите промени в метаданни, които да се прилагат директно към записите в TODO в кодовата база. Мислех, че е изящен инструмент! За мое удоволствие, когато сложих кода на GitHub, изглежда, че и другите мислят. Хората участваха със звезди, вилици, клонирани и изтеглени. Toodles започна да получава вноски от хора по целия свят и бях изумен като го наблюдавах как се развива.

Окуражен от ентусиазма на хората в интернет и моите колеги, аз продължавах да работя над Toodles в свободното си време. Подобно на повечето проекти, дейността на GitHub в крайна сметка се забави, но не замина. Получавам от време на време доклад за грешки, понякога от хора, които сякаш работят в много по-големи компании. Не исках софтуерът ми да изглежда или да е бъг, така че щях да го оправя веднага щом имам време, но мисълта ще се развихри:

Защо дадох доброволно време на голяма компания? Защо дори бях доброволно да работя в моята фирма, която работи?

След като се задуших за този въпрос за известно време, стигнах до извода, че мога да се опитам да накарам пари за Toodles. В крайна сметка бях вложил много работа върху инструмент, който се използва във фирма, честно е да се опитам да ми се плаща за това. Много повече въпроси веднага се надигнаха.

  • Къде клиент може да купи Toodles? Как да им го дам?
  • Някой всъщност използваше ли Toodles редовно? Тъй като се изтегля и работи на машината на потребителя, а аз не бях написал персонализиран код, за да регистрирам данни за използването, дори не можех да съм сигурен дали това начинание си струва времето.
  • Ако имаше редовни потребители, дали някой от тях всъщност ще плаща за това?
  • Ако те биха го направили, как да събера плащане от тях?
  • Как бих могъл да накажа на компаниите пари за Toodles и да ги държа безплатни за физически лица, без да правя много кодиращи работи само за тази цел?
  • Дори етично ли е да печелите пари от проект с отворен код, за който са допринесли други хора, а не да ги плащате също? Как мога да изпратя пари на всички участници или справедливо да реша колко да ги платя?

Реших първо да се спра на въпроса за статистиката на използването. Toodles е програма, която ще бъде инсталирана на машините на своите потребители, така че за да събира каквито и да е данни, ще трябва да се извърши отдалечен регистрация до крайна точка, която трябва да поддържам. Някои разработчици са по-скоро враждебно настроени към тази идея (например: https://github.com/lihaoyi/Ammonite/isissue/607). Не бих могъл да използвам традиционните услуги, базирани в облака, тъй като това би изисквало демон за събиране на дневник на машините на потребителите. Настройването на моя собствен бекенд само за събиране на статистически данни за използването на локално управлявано приложение също изглеждаше като излишно. Ако съществува правилно решение на този проблем, все още не съм го намерил.

Въпреки липсата на данни и общата несигурност, реших да продължа напред и да направя платен ред от Toodles, насочени към компаниите. За да се отделят индивидите от компаниите, имаше ограничение на броя TODO записи, които Toodles ще сканира, като прагът е достатъчно висок, за да се задейства само от много големи кодови бази. Тъй като Toodles сам по себе си е сървър, който потребител работи на тяхната машина, автентифицирането на платен потребител беше сложно. Имах две възможности:

  1. Създайте или купете резервна система, която ще проследява потребителски акаунти, покупки и т.н., и да накара клиентът Toodles да говори с него.
  2. Разпространете лицензни файлове, които Toodles биха могли да валидират, за да имат достъп до платените функции.

Вариантът за изграждане (1) беше непосилно голям обем на работа, така че исках да избегна това. Платена услуга за опция (1) изглежда (и не) не съществува. Без друг избор трябваше да отида с опция (2). Нямах идея как да създам и валидирам лицензен файл, но в крайна сметка го разбрах след неудовлетворителен период от време. Надявах се усилията ми да си струват.

На следващо място, трябваше да закрепя онлайн магазин, за да могат хората да си купят файл с лиценз. Трудно беше да намеря услуга в онлайн магазина, която би могла да ми позволи да генерирам лицензно файл, когато клиент направи покупка. В крайна сметка открих тази функция в сайта за електронна търговия fastspring.com. Трудно беше да се създаде. Тъй като моята заешка дупка на начинание се задълбочаваше, възвръщаемостта на инвестициите изглеждаше все по-малко и по-малко вероятно да бъде положителна.

След като ударих главата си в стената достатъчно дълго, за да може FastSpring да генерира лицензионни файлове, онлайн магазина ми работеше. Изглеждаше като онлайн магазин от началото на 2000-те, но поне работеше. Създадох обикновена целева страница, която би пренасочила към магазина за окончателна покупка.

С пълния онлайн магазин бях готов да започна продажбата на Toodles Pro! Трябваше да платя FastSpring голяма 5% такса за всякакви продажби, които направих, но поне можех да правя пари сега. Магазинът не изглеждаше страхотно, защото FastSpring не изглеждаше да се фокусира върху дизайна много, но беше по-добре от нищо. Той беше функционален, но поради всички усилия, които влязоха във всички настройки, остави много да се желае.

Със всичко на мястото си чаках да видя дали някой от съществуващите потребители ще премине към платения слой на Toodles. След известно време ...

Абсолютно нищо не се случи. Досега нулевите хора са закупили Toodles Pro. Разбрах, че ще трябва да отделя много повече време всъщност за продажбата на този проект, ако искам изобщо да имам приходи. Но не се опитвах да създавам пълноценна компания с Toodles; Просто исках да уловя част от стойността, която моята работа носеше на търговски обекти. Стана ясно, че правенето на каквито и да било пари ще отнеме голямо количество предварителни усилия, допирни до истинските ми цели на проекта.

Затова се отказах. Имаше твърде много проблеми, които отнеха или биха отнели твърде много време, за да осигуря приходи от моя проект с отворен код:

  • Трудно беше да се създаде начин за получаване на плащания за софтуер. Даже да разбера коя платформа да се използва на първо място беше трудно.
  • Тъй като решението за плащане не е част от разпространението на проекта, просто обработката на плащанията не беше достатъчна. Сега, кодът на приложението беше тясно свързан, но въпреки това успях да внедря генериране на лицензи с FastSpring. Удостоверяването на лиценза и обработката на потребителските нива трябваше да бъдат изписани директно в кода, за да работят. Тясното свързване на проблеми като това жертва поддържане и гъвкавост на кода. Става трудно да промените едното, без да се налага да преработвате другото.
  • На всичкото отгоре, преценката дали дори трябва да реша тези проблеми, за да осигуря приходи от проекта си, не беше ясно, тъй като нямах данни дали / кога / как хората използват моя инструмент на първо място! Нямах лесен начин да разбера, тъй като софтуерът е инсталиран на машините на потребителите.

Нещастната реалност беше, че всеки път, изразходван за осигуряване на приходи от Toodles, беше време, в което не прекарвах да направя Toodles по-добър за своите потребители. За да разрешим този проблем за нас разработчици с отворен код, ще ни е необходим начин за разпространение на нашия софтуер с вградени отчети за плащания и използване, така че разработчиците да могат да се съсредоточат само върху изграждането и управлението на проекта с отворен код, който потребителите обичат.

Ще освобождавам повече мисли за този проблем, докато продължавам да го разглеждам. Следвайте за още.