- PVSM.RU - https://www.pvsm.ru -

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

Здравствуй!

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

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

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

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

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

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

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

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

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

tip4commit.com/github/OpenBazaar/OpenBazaar [5]

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

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

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

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

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

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

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

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

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

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

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

Примерно такие команды взаимодействия с 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 [38]

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

Автор: ignat99

Источник [40]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/python/70323

Ссылки в тексте:

[1] tip4commit.com/projects: https://tip4commit.com/projects

[2] prime4commit.com/projects/: http://prime4commit.com/projects/

[3] travis-ci.org/OpenBazaar/OpenBazaar/builds/36072087: https://travis-ci.org/OpenBazaar/OpenBazaar/builds/36072087

[4] coveralls.io/builds/1249548: https://coveralls.io/builds/1249548

[5] tip4commit.com/github/OpenBazaar/OpenBazaar: https://tip4commit.com/github/OpenBazaar/OpenBazaar

[6] github.com/OpenBazaar/OpenBazaar/blob/master/CONTRIBUTING.md: https://github.com/OpenBazaar/OpenBazaar/blob/master/CONTRIBUTING.md

[7] раз: https://bitbucket.org/logilab/pylint/src/1314a9bf883d4c08407e92327dcedea61e483626/examples/custom.py

[8] два: https://bitbucket.org/logilab/pylint/src/1314a9bf883d4c08407e92327dcedea61e483626/checkers/logging.py

[9] три: https://bitbucket.org/logilab/pylint/src/1314a9bf883d4c08407e92327dcedea61e483626/test/unittest_checker_logging.py

[10] cloud.lab.fi-ware.org: http://cloud.lab.fi-ware.org

[11] статьи: http://en.wikipedia.org/wiki/Dynamic_program_analysis

[12] инструментам: http://en.wikipedia.org/wiki/List_of_tools_for_static_code_analysis

[13] раз: http://habrahabr.ru/post/125999/

[14] два: http://habrahabr.ru/post/233719/

[15] github.com/libre-mesh: https://github.com/libre-mesh

[16] www.libre-mesh.org/: http://www.libre-mesh.org/

[17] github.com/MinecraftForge/MinecraftForge: https://github.com/MinecraftForge/MinecraftForge

[18] github.com/overviewer/Minecraft-Overviewer: https://github.com/overviewer/Minecraft-Overviewer

[19] github.com/RoyalDev/RoyalCommands: https://github.com/RoyalDev/RoyalCommands

[20] ufoai.org/wiki/News: http://ufoai.org/wiki/News

[21] github.com/luke-jr/bfgminer: https://github.com/luke-jr/bfgminer

[22] github.com/CoiniumServ/CoiniumServ: https://github.com/CoiniumServ/CoiniumServ

[23] github.com/selaux/miner-dashboard: https://github.com/selaux/miner-dashboard

[24] github.com/forrestv/p2pool: https://github.com/forrestv/p2pool

[25] github.com/darkwallet/darkwallet: https://github.com/darkwallet/darkwallet

[26] prime4commit.com/projects/21: http://prime4commit.com/projects/21

[27] github.com/mycelium-com/wallet: https://github.com/mycelium-com/wallet

[28] github.com/Astonex/Antox: https://github.com/Astonex/Antox

[29] github.com/irungentoo/toxcore: https://github.com/irungentoo/toxcore

[30] github.com/Open-Transactions/opentxs: https://github.com/Open-Transactions/opentxs

[31] github.com/miguelfreitas/twister-webview-app: https://github.com/miguelfreitas/twister-webview-app

[32] github.com/miguelfreitas/twister-core: https://github.com/miguelfreitas/twister-core

[33] github.com/miguelfreitas/twister-html: https://github.com/miguelfreitas/twister-html

[34] github.com/xbmc/xbmc: https://github.com/xbmc/xbmc

[35] github.com/osmandapp/Osmand: https://github.com/osmandapp/Osmand

[36] github.com/numpy/numpy: https://github.com/numpy/numpy

[37] github.com/scipy/scipy: https://github.com/scipy/scipy

[38] tip4commit.com/projects/728/tips: https://tip4commit.com/projects/728/tips

[39] github.com/OpenBazaar/OpenBazaar: https://github.com/OpenBazaar/OpenBazaar

[40] Источник: http://habrahabr.ru/post/237977/