python

Как участвовать в проекте с открытым исходным кодом и получать деньги?

  • пятница, 26 сентября 2014 г. в 03:10:36
http://habrahabr.ru/post/237977/

Здравствуй Хабрахабр!

Многие команды разработчиков участвую в конкурсах и акселераторах. Выигрывают призы или получают финансирование.
Что делать, если вы не успели сесть в проходящий поезд?

Есть несколько вариантов. Один из них это начать свой проект и ждать когда он взлетит, при этом тратить время на создание кода и рекламу проекта в конкурсах, акселераторах, переговорах с инвесторами. В случае успеха надо находить специалистов поднимать инфраструктуру. Ряд виртуальных или реальных серверов для сайта, программистов, базы данных, клиентов. В итоге, многие проекты так и не взлетев попадают на GitHub и другие подобные ресурсы.

Можно просмотреть список удачных проектов, за которые уже сегодня платят деньги, выбрать тот который более интересен лично вам и начать получать за свою работу, пусть и не большую но компенсацию.

Вот полный список проектов:
tip4commit.com/projects

Вот дополнительный:
prime4commit.com/projects

Например, выберем проект OpenBazaar. Он может пригодиться в каждом магазине. За него неплохо платят. Серверная часть там на python. Проект находится на ранней стадии, группа программистов ещё формируется и только выходит из альфы.

Смотрим на детали процесса генерации кода, прямо на сервере интеграции:
travis-ci.org/OpenBazaar/OpenBazaar/builds/36072087

Замечаем что проект использует тесты на стиль кода и покрытие. Можем сразу же посмотреть статистику:
coveralls.io/builds/1249548

Видим, что простой работы по созданию строк коментариев, правок стилей до сих пор достаточно. И цена такой работы не маленькая.
Иногда это 1$ за 1 исправленную строку кода.

tip4commit.com/github/OpenBazaar/OpenBazaar

Чтож ознакомимся с содержанием требований к коду, который претендует стать частью проекта:
github.com/OpenBazaar/OpenBazaar/blob/master/CONTRIBUTING.md

Всё довольно реально. Но бизнеса для большой компании в этом нет. Так как цена за один патч всё таки довольно маленькая, если сравнивать с зарплатой программиста в крупной и средней компании. На патч требуется немного времени, но до его принятия может пройти несколько часов, а порой и дней.

Возникает желание оптимизировать работу


Для Python можно использовать инструмент статистического анализа Pylint. Использовать его легко. Надо просто набрать:

pylint <имя вашего модуля>.py

И мы сразу видим строчки на которые стоит обратить внимание для исправления ошибок, правки стиля и т.д.

Так же можно использовать примеры из этого пакета для автоматического парсинга кода и дополнения. Таким способом, можно написать скрипт, который будет самостоятельно добавлять параметры в комментарии для тестов покрытия, и другие серийные правки. Вот примеры таких скриптов раз, два, три.

В целом можно даже организовать рабочую группу программистов. Взять бесплатно вирутальный сервер: cloud.lab.fi-ware.org
Это Европейский проект от компании Telefonica. Мне спокойно давали IP адреса бесплатно в этом облаке.
На первое время это достаточно хорошее решение. В последствии можно переехать на что то более независимое.

Начать можно с бесплатных инструментов для анализа кода: pmccabe, тесты памяти (DUMA/DML/VALGRIND). Для python это pylint.
В википедии есть целые статьи по подобным инструментам.

Если со временем накопятся инструменты для работы — тесты, компиляторы, скрипты, инструменты статического и динамического анализа кода, лицензии на платные сервисы Coverity, Klocwork, можно посмотреть и в сторону PVS-Studio. Всё это можно хранить на таком облачном сервере.

Детали работы с GitHub и практически используемых команд git, не раз и не два были описаны на хабр:

Примерно такие команды взаимодействия с GitHub

Копирование репозитария


git clone git://github.com:username/OpenBazaar.git
cd OpenBazaar
git remote add upstream git://github.com/OpenBazaar/OpenBazaar.git
git fetch upstream
git checkout -b feature #Создаёт новую ветвь, названную «feature» и делает её активной

Вот, теперь творите добро (и пусть оно будет выражаться в коммитах).

git push origin feature #Загружает изменения в текущей ветви в origin в ветвь feature

Сжать несколько патчей в один (соответственно заплатят только за один PR, но иногда приходиться это делать по требованию автора проекта или владельца)


git clone git://github.com:username/OpenBazaar.git
cd OpenBazaar
git remote add upstream git://github.com/OpenBazaar/OpenBazaar.git
git fetch upstream
git checkout feature
git rebase -i master

= squash = — В этом месте откроется окно с текстовым файлом. Если заменить первое слово в строке на squash, то после записи файла патч этой строки объединится с предыдущим (если там нет squash). Таким образом несколько патчей можно соединить в один.

git push -f origin feature

Автоматическая синхронизация с основным репозитарием


git checkout master
git remote add upstream git://github.com/OpenBazaar/OpenBazaar.git
git pull --rebase upstream master
git checkout feature
git rebase master

= fix any conflicts = — Открыть файлы о которых говорит git в текстовом редакторе. Найти строку '<<<' и объединить части из 2 файлов в один.

git push -f origin feature



После этого на репозитории автоматически запускается тест (сейчас это компиляция с установкой зависимостей и проверка стиля кода, а хотелось бы добавить статический и динамический анализ и автоматическое дополнение комментариев описанием аргументов и возвращаемых значений).



Вот пример перечисления средств за найденные статическим анализатором кода ошибки:
tip4commit.com/projects/728/tips

Большое спасибо всем за внимание.
Ссылка на код гитхаб: github.com/OpenBazaar/OpenBazaar