...

четверг, 25 сентября 2014 г.

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

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

Многие команды разработчиков участвую в конкурсах и акселераторах. Выигрывают призы или получают финансирование.

Что делать, если вы не успели сесть в проходящий поезд?


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



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


Вот полный список проектов:

http://ift.tt/1evJjQl


Вот дополнительный:

http://ift.tt/1v2o9G6


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


Смотрим на детали процесса генерации кода, прямо на сервере интеграции:

http://ift.tt/1v2oaK8


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

http://ift.tt/1v2oaKa


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

Иногда это 1$ за 1 исправленную строку кода.


http://ift.tt/1v2o9Wk


Чтож ознакомимся с содержанием требований к коду, который претендует стать частью проекта:

http://ift.tt/1v2o9Wm


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


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


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


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


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


В целом можно даже организовать рабочую группу программистов. Взять бесплатно вирутальный сервер: cloud.lab.fi-ware.org

Это Европейский проект от компании Telefonica. Мне спокойно давали IP адреса бесплатно в этом облаке.

На первое время это достаточно хорошее решение. В последствии можно переехать на что то более независимое.


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

В википедии есть целые статьи по подобным инструментам.


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


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


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

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




git clone git@github.com:username/Spoon-Knife.git

cd Spoon-Knife

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 http://gitgithub.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




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


Ряд проектов, которые меня заинтересовали

Вот пример перечисления средств за найденные статическим анализатором кода ошибки:

http://ift.tt/1qxfOUy


Большое спасибо всем за внимание.

Ссылка на код гитхаб: http://ift.tt/1qxfR2x


This entry passed through the Full-Text RSS service - if this is your content and you're reading it on someone else's site, please read the FAQ at http://ift.tt/jcXqJW.


Комментариев нет:

Отправить комментарий