Здравствуй!
Многие команды разработчиков участвую в конкурсах и акселераторах. Выигрывают призы или получают финансирование.
Что делать, если вы не успели сесть в проходящий поезд?
Есть несколько вариантов. Один из них это начать свой проект и ждать когда он взлетит, при этом тратить время на создание кода и рекламу проекта в конкурсах, акселераторах, переговорах с инвесторами. В случае успеха надо находить специалистов поднимать инфраструктуру. Ряд виртуальных или реальных серверов для сайта, программистов, базы данных, клиентов. В итоге, многие проекты так и не взлетев попадают на 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, не раз и не два были описаны на хабр:
Копирование репозитария
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
После этого на репозитории автоматически запускается тест (сейчас это компиляция с установкой зависимостей и проверка стиля кода, а хотелось бы добавить статический и динамический анализ и автоматическое дополнение комментариев описанием аргументов и возвращаемых значений).
github.com/libre-mesh
www.libre-mesh.org/
MinecraftForge
github.com/MinecraftForge/MinecraftForge
github.com/overviewer/Minecraft-Overviewer
github.com/RoyalDev/RoyalCommands
ufoai.org/wiki/News
Miner
github.com/luke-jr/bfgminer
github.com/CoiniumServ/CoiniumServ
github.com/selaux/miner-dashboard
github.com/forrestv/p2pool
github.com/darkwallet/darkwallet
prime4commit.com/projects/21
Android wallet
github.com/mycelium-com/wallet
Tox
github.com/Astonex/Antox
github.com/irungentoo/toxcore
OT
github.com/Open-Transactions/opentxs
Твистер под Android
github.com/miguelfreitas/twister-webview-app
github.com/miguelfreitas/twister-core
github.com/miguelfreitas/twister-html
raspberrypi
github.com/xbmc/xbmc
Navigation
github.com/osmandapp/Osmand
Вот пример перечисления средств за найденные статическим анализатором кода ошибки:
tip4commit.com/projects/728/tips
Большое спасибо всем за внимание.
Ссылка на код гитхаб: github.com/OpenBazaar/OpenBazaar
Автор: ignat99