Открытые разработки сайт – О магазине

Содержание

Как получить опыт и зарабатывать на Open Source проектах

В этой статье собрано все, что необходимо знать для участия в Open Source проектах: типичные ошибки и приобретаемые навыки.

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

Молодые программисты ищут в Open Source проектах необходимый опыт, а искушенные разработчики реализуют свои «проекты выходного дня» и улучшают качество используемых ими программ. При этом многих профессиональных разработчиков останавливает незнание «кухни» Open Source движения и боязнь раздражать сообщество очевидными для его членов вопросами и другими ошибками.

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

Известно множество примеров, когда люди, даже далекие от профессиональной разработки, вносят вклад в открытое программное обеспечение, получая удовольствие от общения с близкими по духу людьми. Но для новичков, как показывает опрос, проведенный на сайте opensource.com, основным барьером для вхождения в мир открытой разработки программного обеспечения является банальное отсутствие знаний о том, с чего начать.

А начать довольно просто – с поиска проекта, который вам симпатичен.

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

Программы для поддержки студентов

Эти стипендиальные программы обычно работают со студентами старше 18 лет. Таких программ множество, ниже мы перечислим самые известные. Как правило, программа организовывает процедуру, состоящую в отборе организаций, подающих заявки по различным проектам, и отборе студентов, выбирающих проект из утвержденного организационным комитетом списка. При утверждении заявки студенту назначается ментор, курирующий работу. Обычно это член коллектива разработчиков.

В течение 3-4 месяцев вы удаленно занимаетесь написанием и тестированием кода, составлением отчета. В ходе программы вы получаете стипендию, разделенную обычно на несколько платежей. Большинство спонсируемых программ проходят в летние месяцы, чтобы студенты не отвлекались от основной учебной деятельности. Однако регистрация заявок начинается раньше, обычно весной. Редакция proglib.io специально подготовила эту статью именно сейчас, так как большинство конкурсов принимает заявки студентов во второй половине марта.

Google Summer of Code

Google Summer of Code – самая известная глобальная программа, сфокусированная на привлечении молодых программистов в Open Source разработку. В 2018 году студенты могут выбрать один из проектов и подать свои заявки на участие в программе с 12 по 27 марта.

К 23 апреля студентов и менторов связывают в пары для начала планирования проекта. С середины мая до начала августа студенты работают над своим проектом, а в конце августа подводятся результаты. Стипендия зависит от страны проживания и разбита на три платежа: 30%, 30% и 40%. Например, для России сумма сейчас составляет $3600.

С общим планом вы можете ознакомиться на странице расписания. Правила участия в программе приведены на соответствующей странице. Прочитать подробности от участника Google Summer of Code на русском языке можно в серии статей awRabbit.

Другие стипендиальные программы

Кроме Google Summer of Code существует ряд не менее достойных программ поддержки студентов:

  • European Space Agency: Summer of Code in Space (SOCIS) – разработка систем для космоса, анализ данных, обработка изображений, визуализация и т.д. После утверждения проекта студент получает стипендию 1000€, после успешного завершения – еще 3000€. На написание кода дается три летних месяца.
  • OpenDaylight Summer Internship Program – в дополнение к стипендии программа оплачивают перелет в Кремниевую долину на OpenDaylight Event по завершении программы для презентации отчета.
  • The X.Org Endless Vacation of Code (EVoC) – программа, у которой нет дедлайна: вы выбираете проект и описываете что именно готовы делать в течение 3-4 месяцев. Стипендия в $5000 разбита на начальный ($500) и два последующих платежа по $2250, начисляемых после успешного прохождения ключевых точек.
  • Tor Summer of Privacy – очередной виток программы был объявлен в блоге Tor 2 марта. Программа связана с различными идеями относительно развития Tor. У студентов преимущество, но могут участвовать и не студенты. Суммы стипендий аналогичны Google Summer of Code. Подача заявок проходит с 12 по 26 марта, объявление победителей 20 апреля.
  • OWASP Summer Code Sprint – программа, посвященная системам безопасности, более скромная по стипендии (суммарно $1500), но интересная самими проектами.
  • Outreachy Program – программа, нацеленная на привлечение в Open Source людей из социальных групп, слабо представленных в разработке: женщин, трансгендеров и национальных меньшинств без ограничения по возрасту. Размер стипендии $5500 плюс дополнительные $500 в качестве трэвел-гранта. Проекты включают не только программирование, но и User Experience, документирование, иллюстрацию, графический дизайн и Data Science. Дедлайн подачи заявок 22 марта. Для оповещения о датах конкурса подпишитесь на лист рассылки.
  • Rails Girls Summer of Code: еще одна программа, нацеленная на привлечение девушек в IT. Здесь также нет ограничений по возрасту и не обязательно быть студенткой. В этом году прием заявок уже закончился, но продолжается краудфандинговая компания.

Программы менторства проектов

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

  • Mozilla Winter Of Security – программа проводилась последний раз в 2016 году.
  • Season of KDE – в этот раз проходит с 10 декабря 2017 по 21 марта 2018, дедлайн подачи был 26 декабря 2017 года.
  • Free Software Foundation Interships – ближайший дедлайн для подачи заявки 27 апреля 2018. Программа проводится три раза в году: весной, летом и осенью и требует отдачи по 20 часов в неделю.

Обратите внимание, что в этих же сообществах вы можете найти проект и наставника вне обозначенных дедлайнов.

Программа для школьников Google Code-In

Из-за сложностей с перечислением денежных средств несовершеннолетним в стипендиальных программах обычно указывается возрастное ограничение: не младше 18 лет. Для подростков 13-17 лет проводится соревнование по открытому программному обеспечению Google Code-In. В результате конкурсов участники получают различные подарки, футболки и сертификаты. Отчеты русскоязычных школьников по этому конкурсу в 2012, 2013 и 2014 годах сподвигли и некоторых взрослых людей заняться Open Source 🙂

Другие варианты поиска ментора

Еще один из возможных способов найти ментора это ACM MentorNet – специальная сеть для создания пар наставник-ученик. Заметим, что для этого требуется наличие почты на edu-домене.

Более общий сервис – сайт инициативы развития открытого программного обеспечения Open Source Initiative, содержащий множество различной актуальной информации об Open Source движении.

Наконец, вы можете просто писать администратору/менеджерам интересного Open Source проекта, например, владельцам соответствующего репозитория на GitHub.

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

Множество проектов собраны на специальных сайтах сообществ. Например относительно Gnome работает программа GnomeLove, для новичков в Linux Kernel есть сообщество Linux Kernel Newbies, у Mozilla Foundation What Can I do For Mozilla и т.д.

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

Наконец, очень многие начинают с того, что изучают репозиторий интересного им проекта, используемого в основное рабочее время, и улучшают его, добавляя недостающий им функционал.

Проекты бывают очень большими, а начать можно с малого. Люди, участвующие в Open Source проектах это в первую очередь сообщество единомышленников. Присоединитесь к e-mail рассылке, IRC-каналу или групповому чату. Выясните как общаются между собой участники проекта. В крупных проектах обычно для каждой составляющей делается отдельная рассылка.

Бывает, что создаются специализированные planet-порталы, аккумулирующие новости из разных каналов. Читайте документацию и комментарии в самом коде. Читайте блоги и twitter, чтобы быть в курсе новостей сообщества. Следите за обновлениями репозитория и баг-трекера.

Рассмотрим на примере GitHub наиболее популярную модель совместной разработки fork & pull.

Представим, что какое-то сообщество создало нравящийся вам репозиторий. Вы клонируете (fork) его и вносите изменения в своей личной версии репозитория. Если вы думаете, что текущие изменения могут быть полезны для исходного проекта, вы отправляете pull request – запрос на включение изменений кода в репозитории. Контрибьюторы репозитория решают, будут ли предложенные изменения включены в оригинальный репозиторий или отклонены. Подробнее на русском языке вы можете прочитать об этом здесь.

На GitHub пулл-реквест в публичный репозиторий может осуществить любой зарегистрированный участник. Главное, чтобы этот запрос был хорошо оформлен и содержал исчерпывающее описание. Далее рассмотрим основные примеры содержаний пулл-реквестов.

1. Тестируйте промежуточные версии и релизы

В любых, даже коммерческих проектах, развитие функционала программ превалирует над его тестированием. По этой причине часто, перед тем как добавлять изменения в основную ветку репозитория, объявляется call for testing – привлечение людей, готовых протестировать предварительную версию.

Кроме того, любое сообщество более разнообразно относительно используемых устройств, чем разработчики обеспечения. То есть такие тесты в частности очень важны для проверки кроссплатформенной работы обеспечения – тестирование может заключаться в проверке того, что, например, в данной операционной системе вы собрали билд и продукт запускается, выполняя основные функции. Это позволит разработчикам сэкономить время и указать вашу систему в релизе среди тех, на которых была проверена разработка, что расширяет число потенциальных пользователей продукта.

2. Пишите, корректируйте и переводите документацию

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

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

Наконец, часто можно столкнуться с тем, что по мере разрастания проекта документация перестает соответствовать текущему состоянию проекта. Разбираясь в особенностях проекта, вы можете попутно актуализировать документацию.

Несмотря на серьезность этой проблемы, многие новички необоснованно считают такую работу несущественным вкладом в проект. Хотя именно эти причины часто мешают влиться в команду новым разработчикам.

3. Ищите и исправляйте ошибки

Новичкам часто кажется, что программирование это написание кода, но иногда даже большее время тратится на тестирование, поиск и исправление ошибок. Это одна из наиболее простых точек входа для новичков — если вы нашли ошибку, ваши исправления постараются принять в проекте первее, чем добавление какого-то нового функционала.

Если вы обнаружили еще не оформленный баг, пишите issue. Если вы сами сумели его исправить, оформляйте pull request и указывайте, что он исправляет определенный issue. Или найдите чужой issue, в котором описывается баг и устраните его в коде. Некоторые проекты требуют, чтобы баг-фиксы сопровождались тестами.

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

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

Если вы работаете с компилируемым проектом и проект компилируется без ошибок, попробуйте разобраться в причинах прочих предупреждений (warnings) – указывают ли эти замечания компилятора на особенности, которые не позволят расширяться проекту далее.

4. Пишите тесты

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

5. Пишите примеры и демо-приложения

Покажите другим как пользоваться проектом. Пишите примеры использования и демо-приложения, показывающие применение разработанной библиотеки или фреймворка. Это также хорошая составляющая мануалов наподобие Getting started.

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

6. Пишите новый код

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

При любом участии, связанном с написанием нового кода, учитывайте стиль оформления, принятый в проекте, используйте соответствующие инструменты. Стремитесь к максимальной понятности вашего кода другими членам сообщества.

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

7. Делайте дизайн

Разработчики в основном думают о реализации какого-то технического замысла, но часто в Open Source проектах материализованной идее не достает красивой обертки. Броское качественное оформление привлечет к проекту и новых пользователей, и участников сообщества.

Найти дизайнера или предложить свои услуги можно при помощи сайта Open Source Design.

8. Ведите блог/YouTube-канал и помогайте другим пользователям

Делитесь опытом, полученным при работе в Open Source проектах. Рассказывайте о проблемах, с которыми вы столкнулись и как вы их решили. Так вы одновременно поддержите внимание к любимому проекту и создадите базу информации для тех, кто присоединится к нему впоследствии.

Разобравшись в проекте, вы можете помочь тем, кто только к этому приступает. Полезно это делать не только на площадке репозитория, но и в ответах на других популярных ресурсах, например, Stackoverflow. Столкнувшись с множеством однотипных вопросов, напишите публикацию в блог или запишите видео, которое поможет разобраться начинающим.

Все это зарекомендует вас как специалиста и поможет собрать благожелательную аудиторию.

Проблемы, с которыми сталкиваются новички в open source проектах, можно объединить в следующие категории:

  • Неуверенность в собственных силах. Код в Open Source проектах пишут в большинстве своем не гении разработки, а такие же программисты, как вы. И даже у них есть ошибки и просто опечатки. Нужно понимать, что крупным проектам требуются разработчики разного уровня подготовки, навыков и опыта. Открытость никак не гарантирует качества кода и часто даже неопытный новичок лучше, чем отсутствие специалиста.
  • Пугающая величина проекта. Да, проекты могут состоять из сотен и тысяч файлов, миллионов строк кода. Но никто не читает все эти файлы подряд. Чаще всего есть какая-то проблема, которая становится для вас точкой входа в проект – вы постепенно «разматываете» код от этого отправного пункта.
  • Боязнь задавать вопросы и раздражить сообщество своим непониманием. Если вы будете кого-то раздражать, вам скорее всего на это мягко намекнут, в этом нет ничего страшного. Такое происходит крайне редко, так что нужно постараться – многие проекты живут исключительно за счет энтузиазма создателей, и хорошие пулл-реквесты подстегивают их к продолжению работы.
  • Попытки решить множество проблем ондим пулл-реквестом. Обычное правило: один баг – один pull request, одна фича – один pull request. Так тем, кто получает ваши исправления гораздо проще их принимать или отклонять и аргументировать решение.
  • Вопросы сразу лично авторам проекта. Получить ответ гораздо быстрее из чата или мейлинг-листа, так как его одновременно читает множество людей.
  • Вы безоговорочно соглашаетесь с тем, что вам говорят ревьюеры. Ревьюер может быть тоже не прав. Старайтесь аргументировать свою позицию, если вы считаете ее правильной. Это очень полезный навык для того, чтобы работать в команде. Обратная сторона – умейте принять позицию, если вы действительно не првы.
  • Вы сдаетесь. Спокойствие, только спокойствие. Даже об этом вы можете написать в сообщество. Что где-то застряли и не знаете как дальше продвинуться. С этой ситуацией сталкивался любой, и кто-то обязательно даст совет по вашей проблеме.

Кроме удовольствия от участия в любимых Open Source проектах, начинающие программисты также учатся большинству вещей, характерных для работы в сильной команде:

  • Разбираться в чужом коде.
  • Пользоваться системами контроля версий.
  • Понимать весь процесс разработки продукта.
  • Проводить ревью кода (читать и понимать код вне IDE).
  • Проводить тестирование.
  • Пользоваться инструментами: IDE, сиcтемы сборки, утилиты проверки стиля и логики кода (checkstyle/PMD) и т.д.
  • Работать в очень большой и очень распределенной команде, обсуждая идеи и принимая решения.

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

Разработка открытого программного обеспечения повлияла на карьеру многих разработчиков. Мы объединили отзывы разработчиков о работе в Open Source проектах относительно основной работы в следующие пункты:

  • Весомая строчка в резюме и опыт. В хорошем крупном проекте есть все, что обычно требуется от разработчика на собеседовании: грамотное проектирование, хорошее кодирование, навыки работы с системой контроля версий и баг-трекером, peer review, работа в команде и т.д. За два-три года непрерывной работы в такой атмосфере можно вырасти до уровня, соответствующего позиции Senior Developer. Такой опыт может оказаться эквивалентен соответствующей строчке в трудовой книжке.
  • Портфолио и набор программных решений. Вашу компетенцию становится легко оценить по профилю на GitHub. Всегда есть что показать и легко пройти первый этап собеседования при приеме на работу. Кроме того, есть шанс, что работодатель найдет вас по коммитам или профилю на Github. Зарубежом это становится все более распространенной практикой.
  • Репутация и востребованность. Если компания использует развиваемый вами открытый продукт в своем технологическом стеке, вы становитесь идеальным кандидатом на место соответствующего разработки. Кроме того в Open Source проектах вы можете пересечься с другими специалистами, которые предложат вам место в своей компании.
  • Самостоятельность. Можно не ждать выхода новой версии библиотеки, а исправить баг самостоятельно.
  • Стажировки в мировых компаниях.

Вернемся к студенческому вопросу. Что дают занятия открытым программным обеспечением студенты?

  • Опять-таки опыт: так как это открытое программное обеспечение, вы видите как в реальности решаются те или иные задачи. Кроме того, списков рассылки вы понимаете как это решение появляется в команде. То есть это настоящее подспорье для обучение практическому программированию.
  • Во многих институтах работа в подобных проектах оценивается преподавателями как показатель зрелости специалиста, в силу чего вам могут «автоматом» перезасчитываться лабораторные и курсовые, а свою дипломную работу при везении можно посвятить вашему вкладу в одном или нескольких Open Source проектах.
  • Результаты вашей работы могут служить материалами для научных статей и конференций, дающих бонусы или необходимых для поступления в магистратуру/аспирантуру.
  • Наконец, в результате общения вы поднимаете свой уровень владения английским языком.

Если вы студент, это также позволит вам претендовать на различные стипендии.

  • Стипендия по постановлению Правительства РФ #945.
  • Стипендия Президента РФ.
  • Стипендия Правительства Москвы.
  • Стипендия фонда Владимира Потанина.
  • Стипендия Аниты Борг.
  • Другие конкурсы гранты.

Наконец, нужно понимать, что участие в Open Source проектах не ограничивается работой в составе команды – вы всегда можете создать свой собственный, авторский проект. Опыт, накопленный на других площадках, вам в этом только поможет.

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

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

Варианты развития

В дополнение к спонсорству возможны следующие варианты заработка для дальнейшей работы в Open Source:

  • Собственный бизнес. Сделайте проект, на основе технологии которого можно построить бизнес. Например, вы создаете бинарники для конечных пользователей. К технологии будет испытываться большее доверие в силу свободности кода –можно проверить проект на отсутствие закладок. Кроме того, вы можете создать более крупный программный продукт, который может применяться многими, и на собственном примере вы можете показать другим как работает проект и привлечь контрибьюторов.
  • Платная поддержка. Одна из самых популярных моделей: вы разрабатываете открытый код, но предоставляете клиентам платную поддержку своего решения. Таким образом, например, поступает Linux Red Hat.
  • Разработка на заказ. Фактически аутсорсинг для других фирм и платные доработки под нужды заказчика. Пример: компания Chronicle Software кроме свободных проектов Crhonicle выполняет заказы по разработке систем с использованием этих проектов.
  • Обучение клиентов. Проводите обучающие платные тренинги, на которых вы учите клиентов как использовать ваш продукт. Таким образом, вы одновременно продвигаете проект и зарабатываете деньги.
  • Двойное лицензирование. Лицензируйте свой проект двумя лицензиями. Например, бесплатной лицензией для одиночных пользователей и образовательных учреждений и платной лицензией для коммерческого применения. Примером является система виртуальной роботехники V-REP.
  • Платные вспомогательные сервисы. Стратегия, близкая к предыдущей, но более гибкая: зарабатывайте не на самом проекте, а на предоставлении платных вспомогательных сервисов, таких как хостинг, сервис резервного копирования или мониторинга.
  • Сбор пожертвований. Не самый популярный подход в Open Source проектах, примером может служить Linux Mint и ReactOS.
  • Краудфандинговые компании. Последний подход, совмещающий первый и предпоследний пункты данного списка заключается в целенаправленном сборе средств на создание продукта в ограниченные сроки. Такие компании регулярно объявляются на Kickstarter и c переменным успехом набирают необходимую сумму. Один из успешных примеров – клиент для MySQL mycli.

О чем нужно помнить

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

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

Для того, чтобы представить свой проект общественности, нужно начать с довольно простых вещей:

  • Критически важен хороший README файл. Сделайте его предельно понятным. Приведите примеры использования.
  • Если проект представляет собой библиотеку, поработайте над документацией.
  • Если проект связан с графикой, приложениями и играми, сделайте заметными скриншоты.
  • Явно пропишите лицензию.
  • Сошлитесь на свой блог с описанием ключевых особенностей проекта, углублений в кейсы.

Когда вы посчитаете, что проект уже выглядит достойно, проведите рекламную кампанию: добавьте ссылки на проект в Reddit (в ветку reddit.com/r/{язык вашего проекта}), Hacker News, в профильных группах и форумах. Если ожидается, что проект станет достаточно крупным, заведите для него свой твиттер-аккаунт, в который будете выкладывать новости по работе над проектом и попробуйте его разрекламировать, попросив кого-то из близких по духу известных разработчиков.

Чем большему числу людей будет полезен ваш проект, тем больше пользователей вы сможете заинтересовать и привлечь к совместной работе в собственных Open Source проектах.

proglib.io

6 open-source проектов для практики новичка

Практика в open-source проектах поможет при составлении портфолио для трудоустройства. В статье приведены рекомендации по изучению этой тематики.

Прежде чем вы начнете…

…стоит прослушать эту лекцию. На ней вы узнаете все необходимое, если совсем ничего не знали об этой области IT-сферы. Также есть хорошая серия книг «Архитектура опенсорных приложений», которая расскажет читателю о том, как устроена архитектура огромных приложений, написанных очень опытными разработчиками, и позволит не совершать распространенных ошибок. Более того, в этой книге описаны основные компоненты этих приложений и как они взаимодействуют между собой.


OpenStack – бесплатная open-source платформа для облачных вычислений, в основном развернутая по модели обслуживания Инфраструктура-как-услуга (IaaS). Начало проекту было положено NASA и RackSpace еще в 2010, однако с тех пор к проекту присоединилось более 500 компаний, включая гиганты Кремниевой долины. Чтобы сделать свой вклад в проект, вам достаточно ознакомиться с этой страницей. К каждому из проектов есть подробная документация. Для принятия участия могут потребоваться знания C++, Python и веб-фреймворка Django.

Ava – JavaScript-библиотека для тестирования, работающая быстрее многих своих конкурентов. Её преимущество в том, что она запускает тесты параллельно, что делает её использование особенно выгодным для нагрузочных тестов на поток ввода/вывода. Помимо этого, файлы с тестами запускаются параллельно в отдельных процессах, таким образом, тестирование происходит намного быстрее, чем, к примеру, с использованием библиотеки Mocha. В issues репозитории можно обнаружить задания для начинающих по правки библиотеки.

Если кто не знал, DuckDuckGo – поисковая система, не собирающая информацию о пользователях. Мгновенные ответы — фича, которая позволяет получать ответы без необходимости открывать сайт. Сотни людей успели принять участие в разработке этой фичи, много идей для разработки лежит на этой странице. Также DuckDuckGo предоставляет хорошую документацию и рекомендует новым пользователям создавать шпаргалки для сервиса. Чтобы посмотреть, как выглядят такие шпаргалки, достаточно вбить в поисковик фразу «wordpress cheat sheet». Если у вас возникли трудности, есть канал в Slack и вики-страница в Github-репозитории.

Habitica – приложение для формирования привычек, позволяющее пользователям в игровой форме принимать те или иные жизненные решения, получая «награды» и «наказания». Если вы хотите помочь команде в его разработке, то самое время зайти на их репозиторий в Github и присмотреться к задачам с пометкой «для новичков».

Вне сомнений, Mozilla – одна из лидирующих организаций по количеству open-source проектов. Делать свой вклад в развитие проектов Mozilla может показаться не очень простым на первый взгляд, поскольку сложно найти задачи, помеченные как «для новичков», из-за того, что в целом задач много. К счастью, был создан отдельный сайт, где можно фильтровать задачи в зависимости от своих интересов. Новичку стоит обратить внимание на фильтр simple bugs внизу в секции фильтров!

Pinax – это открытая опенсорсная платформа, сделанная с использованием веб-фреймворка Django. Это экосистема для повторно используемых приложений на Django, тем, шаблонов для нового проекта. В их репозитории на Github в разделе Issues есть задачи для новичков, помеченные first-timers-only. Они аккуратно задокументированы, таким образом, чтобы вы знали, что вам следует делать.

Я хочу еще проектов, что делать?

  • Ищите по меткам в интересующих вас репозиториях. Наверняка там будет какая-нибудь задача в issues, которая помечена как легко решаемая.
  • Зайдите на следующие ресурсы:
    • @yourfirstpr: аккаунт в Твиттере, в котором постоянно добавляются ссылки на задачи из issues для начинающих;
    • OpenHatch: ресурс для связи с разработчиками, нуждающимися в том, чтобы пользователи сделали вклад в развитие их проектов;
    • Up For Grabs: список проектов, в котором указываются задачи, созданные специально для новых контрибьюторов.
    • CodeTriage: выбирайте свои любимые репозитории и будете ежедневно получать е-майл с задачами в issues.
    • Awesome for beginners: репозитории для новичков

 

 

proglib.io

Открытая разработка — это… Что такое Открытая разработка?


Открытая разработка

6. Открытая разработка

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

Словарь-справочник терминов нормативно-технической документации. academic.ru. 2015.

  • Открытая прорость
  • открытая распределенная обработка

Смотреть что такое «Открытая разработка» в других словарях:

  • открытая разработка — Способ добычи полезных ископаемых, при котором процессы выемки вскрышных пород и полезного ископаемого осуществляются в открытых пространствах на земной поверхности. [ГОСТ 17.5.1.01 83] Тематики рекультивация земель …   Справочник технического переводчика

  • ОТКРЫТАЯ РАЗРАБОТКА — месторождений способ добычи твёрдых полезных ископаемых из недр, при к ром процессы выемки осуществляются в открытых горных выработках, проводимых на земной поверхности. Достоинства О. р. по сравнению с подземной: возможность широкой механизации… …   Большой энциклопедический политехнический словарь

  • Открытая разработка месторождений —         полезных ископаемыx (a. surface mining, opencast mining, open pit mining, quarry mining; н. Tagebau; ф. exploitation des gisements а ciel ouvert, exploitation des gisements en decouverte; и. explotacion de yacimientos a cielo abierto,… …   Геологическая энциклопедия

  • ОТКРЫТАЯ РАЗРАБОТКА МЕСТОРОЖДЕНИЙ — ОТКРЫТАЯ РАЗРАБОТКА МЕСТОРОЖДЕНИЙ, способ добычи полезных ископаемых, при котором процессы выемки осуществляются в открытых горных выработках, производимых на земной поверхности. Таким образом добывается уголь, руды и различные ценные минералы.… …   Научно-технический энциклопедический словарь

  • ОТКРЫТАЯ РАЗРАБОТКА МЕСТОРОЖДЕНИЙ — полезных ископаемых способ добычи полезных ископаемых, при котором процессы выемки осуществляются в открытых горных выработках, проводимых на земной поверхности …   Большой Энциклопедический словарь

  • Открытая разработка месторождений —         полезных ископаемых, открытые горные работы, добыча полезных ископаемых с земной поверхности (см. Карьер).          Наиболее древние открытые разработки камня относятся к 6 му тыс. до н. э. Полиметаллические руды для выплавки бронзы… …   Большая советская энциклопедия

  • открытая разработка месторождений — полезных ископаемых, способ добычи полезных ископаемых, при котором процессы выемки осуществляются в открытых горных выработках, проводимых на земной поверхности. * * * ОТКРЫТАЯ РАЗРАБОТКА МЕСТОРОЖДЕНИЙ ОТКРЫТАЯ РАЗРАБОТКА МЕСТОРОЖДЕНИЙ полезных… …   Энциклопедический словарь

  • валовая открытая разработка — валовая разработка Открытая разработка без разделения совместно залегающих различных вскрышных пород, а также почв. [ГОСТ 17.5.1.01 83] Тематики рекультивация земель Синонимы валовая разработка …   Справочник технического переводчика

  • Валовая открытая разработка — 7. Валовая открытая разработка Валовая разработка Открытая разработка без разделения совместно залегающих различных вскрышных пород, а также почв Источник: ГОСТ 17.5.1.01 83: Охрана природы. Рекультивация земель. Термины и определения …   Словарь-справочник терминов нормативно-технической документации

  • селективная открытая разработка — Открытая разработка с разделением совместно залегающих различных вскрышных пород, а также гумусированной части почв. [ГОСТ 17.5.1.01 83] Тематики рекультивация земель …   Справочник технического переводчика

Книги

  • Открытая организация. Страсть, приносящая плоды, Уайтхерст Джим. Джим Уайтхёрст — президент и генеральный директор Red Hat, крупнейшей в мире корпорации, выпускающей программное обеспечение с открытым исходным кодом, — делится секретами управления… Подробнее  Купить за 1341 руб
  • Открытая разработка месторождений строительных материалов. Учебное пособие, Аргимбаев Каербек Рафкатович, Лигоцкий Дмитрий Николаевич. Рассмотрены современные технологии открытой разработки строительных материалов, системы разработки, а также приведен пример вскрытия и способы разрушения горныхпород. Учебное пособие… Подробнее  Купить за 816 руб
  • Открытая организация. Страсть, приносящая плоды, Уайтхерст Джим. Джим Уайтхёрст — президент и генеральный директор Red Hat, крупнейшей в мире корпорации, выпускающей программное обеспечение с открытым исходным кодом, —делится секретами управления… Подробнее  Купить за 787 руб
Другие книги по запросу «Открытая разработка» >>

normative_reference_dictionary.academic.ru

Как запустить сайт на локальном компьютере

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

Экспериментировать с сайтом лучше на локальном сервере

Что такое локальный сервер и когда он нужен

Речь идет о программе или наборе программ, которые имитируют работу реальных серверов хостинг-провайдеров. Локальный сервер обеспечивает доступ к ресурсу через браузеры. Набор программ и скриптов преобразует информацию баз данных типа MySQL и языков программирования типа Perl и PHP в HTML- и CSS-код, который «понимают» веб-обозреватели.

С помощью локального сервера вы можете готовить сайт к публичному доступу. На этапе разработки ресурс видите только вы и ваши коллеги. Это избавляет живых посетителей и поисковых роботов от взаимодействия с незаполненным и недоработанным сайтом. А вы можете проверить работоспособность ресурса, освоить административную консоль и выполнить другие необходимые действия в безопасных условиях.

С помощью локального сервера можно проверять изменения на существующих сайтах. Для этого необходимо скопировать ресурс и запустить его на своем компьютере. Если сайт работает на WordPress, задачу можно решить с помощью плагина Duplicator.

В число наиболее популярных программных решений входят Open Server, Denwer, XAMPP, Desktop Server и другие. Ниже вы найдете руководства по работе с самыми востребованными локальными серверами. Но сначала уделите внимание подготовке ПК.

Как подготовить компьютер к работе с локальным сервером

Чтобы запустить локальный сервер на ПК, придется изменить настройки некоторых программ или операционной системы. Для работы серверов нужно освободить порт 80, который на большинстве машин занят тем или иным процессом.

В первую очередь попробуйте изменить настройки Skype. Откройте меню Skype «Инструменты – Настройки – Дополнительно – Соединение». Уберите флаг напротив опции «Использовать порты 80 и 443 для дополнительных входящих соединений». Сохраните изменения и перезапустите программу».

Меняем настройки подключения Skype, чтобы освободить порт 80

Если изменение настроек Skype не помогает, скорее всего необходимо менять настройки операционной системы. Порт 80 часто занимает служба Internet Information Services (IIS). Чтобы убедиться в этом, введите в командную строку команду netstat -aon | findstr 0.0:80. Если порт 80 действительно занимает системный процесс, в диалоговом окне в последнем столбце вы увидите значение «4».

Чтобы отключить IIS, в панели управления выберите меню «Программы и компоненты – Включение и отключение компонентов Windows». Снимите флаг напротив опции «Службы IIS» и сохраните изменения. Может потребоваться перезагрузка системы.

Отключаем службы IIS, чтобы освободить порт 80

Если изменение настроек системы не помогло, отключите брандмауэр. Некоторые сетевые экраны блокируют порт 80. Если этот шаг также не помог, скачайте и запустите надстройку для Windows TCP View. Программа не требует установки. С ее помощью вы увидите список активных процессов и используемых портов. Найдите процесс, который занимает порт 80, и отключите связанную с ним программу на время работы с локальным сервером.

Ищем локальный порт 80 и отключаем процесс, который его занимает

Когда порт 80 освобожден, приступайте к установке локального сервера.

Desktop Server: простой способ запустить сайт на WordPress локально

Если вы создаете сайт на WordPress, воспользуйтесь Desktop Server. Скачайте дистрибутив с официального сайта проекта. Распакуйте архив и запустите инсталлятор.

Активируйте Desktop Server и воспользуйтесь меню Create New development site. По умолчанию установочный пакет содержит устаревшую версию CMS WordPress. Вы можете скачать и загрузить в папку Xampplite – Blueprints на диске C дистрибутив актуальной версии WordPress.

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

Создаем экспериментальный сайт

Перейдите по ссылке, предложенной программой, для завершения установки WordPress.

Переходим по ссылке для завершения установки движка на сервер

Выберите предпочтительный язык. Укажите название сайта, имя пользователя, Email и пароль.

Указываем информацию о сайте и завершаем установку

Браузер отобразит страницу приветствия. Чтобы войти в административную консоль, введите созданный на предыдущем шаге пароль.

Административная панель созданного на локальном сервере сайта

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

С сайтом на локальном сервере можно работать так же, как с сайтом на обычном хостинге

Как запустить сайт на Open Server

Особенность Open Server — возможность работать без установки ПО на компьютер. Вы можете запускать сервер с USB-накопителя.

Скачайте дистрибутив с официального сайта проекта. Open Server можно использовать бесплатно. Разработчики предлагают сделать пожертвование на развитие проекта. Без платежа скорость загрузки дистрибутива сильно ограничена. Скачивать полный пакет придется несколько часов.

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

Выбираем путь установки Open Server

Запустите исполняемый файл в папке Open Server и выберите язык.

Запускаем исполняемый файл

Если все сделано верно, в трее появится красный флажок. Нажмите на него, чтобы начать работу с сервером.

Включаем сервер

Введите в адресную строку браузера адрес http://localhost/. Вы увидите страницу приветствия.

Сервер работает

Теперь установите на локальный сервер выбранную CMS. Для этого создайте новую папку в разделе Domains. Распакуйте в нее архив с дистрибутивом движка.

Создаем папку домена

Перезапустите Open Server с помощью меню в трее.

Перезапускаем сервер

Введите в адресной строке браузера URL экспериментального сайта. Вы попадете в меню установки CMS.

Устанавливаем сайт на сервер

Для продолжения установки необходимо создать базу данных. Через меню управления Open Server войдите в панель управления phpMyAdmin. Для доступа к серверу введите имя пользователя root, а поле «Пароль» оставьте пустым.

Входим в phpMyAdmin

В панели управления phpMyAdmin выберите вкладку «Базы данных» и создайте БД экспериментального сайта.

Создаем базу данных

В меню установки WordPress укажите название БД и имя пользователя. Завершите установку: укажите название сайта, имя пользователя, пароль, электронный адрес администратора.

Указываем название БД

Теперь вы можете работать с сайтом на локальном сервере.

Сайт установлен на локальный сервер

После окончания разработки перенесите его на сервер хостинг-провайдера.

Мы делаем сайты, которые оптимизированы под поисковики и приносят продажи. Обращайтесь! Подробнее

Как работать с локальным сервером Denwer

Denwer остается очень популярным среди веб-мастеров и профессиональных разработчиков, хотя многие специалисты называют это ПО устаревшим. Тем не менее его возможностей достаточно для запуска и настройки сайтов на популярных CMS.

Скачайте дистрибутив с сайта проекта. Закройте браузеры и запустите установщик. Используйте подсказки в диалоговом окне инсталлятора. После завершения установки браузер откроет окно приветствия. Запустить программу можно с помощью ярлыка на рабочем столе Start Denwer.

В адресную строку браузера введите URL http://localhost/denwer/. Вы попадете на стартовую страницу локального сервера Denwer.

Локальный сервер работает

Чтобы установить CMS на локальный сервер «Денвер», создайте раздел с названием сайта в папке WebServers – Home. В разделе создайте еще одну папку с именем www. Распакуйте в нее архив с дистрибутивом движка.

Распаковываем дистрибутив WordPress в папку www

Создайте базу данных экспериментального сайта в разделе управления phpMyAdmin. Для этого введите в адресную строку браузера адрес http://localhost/tools/phpMyAdmin/.

Создаем базу данных

Перезапустите локальный сервер с помощью ярлыка Restart Denwer на рабочем столе. Установите WordPress. Для этого в адресной строке браузера наберите адрес экспериментального сайта.

Сайт на локальном сервере

После окончания разработки перенесите сайт с локального сервера на сервер хостинг-провайдера.

Обратите внимание на особенности удаления локального сервера с ПК. Чтобы удалить «Денвер», выполните следующие действия:

  • Остановите сервер с помощью ярлыка Stop Denwer на рабочем столе.
  • В командную строку введите команду subst z: /d. Это необходимо для удаления виртуального диска Z, который создается при установке ПО «Денвер». Если вы вместо значения по умолчанию Z использовали другое название виртуального диска, укажите это в команде.
  • Удалите папку WebServers с диска C.
  • Удалите ярлыки управления локальным сервером с рабочего стола.

Вы полностью удалили «Денвер» с ПК.

Как создать сайт на локальном сервере Xampp

Xampp — популярный программный комплекс для создания локального сервера Apache. Чтобы установить ПО, скачайте дистрибутив и запустите инсталлятор. Во время установки оставьте настройки по умолчанию. При необходимости поменяйте путь установки.

В папке Xampp активируйте контрольную панель: запустите приложение xampp-control. На панели запустите сервер Apache и базу данных.

Включаем сервер и базу данных

Введите в адресную строку браузера URL http://localhost. Если Xampp работает корректно, вы попадете на страницу приветствия.

Страница приветствия Xampp

Создайте базу данных экспериментального сайта. Для этого введите в адресную строку браузера URL http://localhost/phpmyadmin/. На вкладке «Базы данных» укажите название БД и нажмите кнопку «Создать».

Создаем БД

Установите на локальный сервер WordPress. Скачайте дистрибутив с официального сайта и разархивируйте его в папку xampp – htdocs. Укажите URL тестового сайта в качестве названия папки с файлами движка.

Распаковываем архив с CMS

Чтобы завершить установку CMS, введите в адресную строку браузера URL http://localhost/folder-name. Вместо значения folder-name укажите название папки с файлами CMS.

Запускаем инсталлятор WordPress

Завершите установку и проверьте работоспособность сайта.

Сайт на локальном сервере Xampp работает

Как пользоваться локальным сервером Winginx

Winginx — локальный сервер, с помощью которого можно быстро создать сайт на своем компьютере. Скачайте дистрибутив и запустите программу-установщик. После установки ПО нажмите на иконку Winginx в трее и включите компоненты программы.

Включаем сервер

Перейдите по ссылке «Рабочая среда Winginx», чтобы вызвать панель управления программой. Создайте новый проект и укажите адрес экспериментального сайта.

Создаем проект и указываем URL экспериментального сайта

Перейдите в панель управления phpMyAdmin с помощью меню «Менеджеры баз данных – phpMyAdmin». Создайте базу данных экспериментального сайта.

Переходим в панель управления phpMyAdmin и создаем базу данных

Откройте папку сайта с помощью соответствующего меню в панели управления Winginx.

Открываем папку сайта

Разархивируйте дистрибутив выбранной CMS в каталог public_html.

Распаковываем архив движка в папку сайта

Введите в адресную строку браузера адрес wp-admin/install.php и установите движок на сервер.

Обратите внимание на удобный планировщик задач в панели управления Winginx. С его помощью можно планировать работу над сайтом, контролировать выполнение задач и учитывать рабочее время.

В Winginx есть удобный планировщик задач

Как перенести действующий сайт на локальный сервер

Если вы хотите изменить существующий сайт без риска потерять данные или нарушить его работоспособность, перенесите ресурс на локальный сервер. Если вы используете WordPress, действуйте так:

  • Запустите локальный сервер и установите на него WordPress.
  • Установите на локальном сайте дизайн-шаблон, который вы используете на реальном ресурсе.
  • Установите на действующий сайт и активируйте плагин Duplicator.
  • В административной консоли выберите меню «Duplicator – Пакеты». Нажмите кнопку «Создать новый».
Запускаем копирование сайта
  • Скачайте созданные пакеты на жесткий диск компьютера. Перенесите их в корневой каталог ресурса на локальном сервере.
Скачиваем созданную копию
  • Введите в адресную строку браузера путь к файлу installer.php на тестовом ресурсе. Вы попадете на страницу установки базы данных.
Восстанавливаем ресурс на локальном сервере
  • Удалите из корневой директории тестового ресурса файлы install.php и wp-config.php.
  • Укажите имя пользователя и название базы данных экспериментального сайта. Отметьте, что вы прочитали техническое предупреждение и запустите установку копии ресурса на локальный сервер. Запустите установку.
Указываем базу данных и запускаем установку

После завершения установки проверьте работоспособность сайта на локальном сервере. Вы увидите точную копию действующего ресурса со всеми публикациями и настройками.

Точная копия действующего сайта установлена на локальный сервер

Вы можете перенести сайт с сервера хостинг-провайдера на экспериментальный ресурс на локальном сервере без помощи плагинов. Для этого можно воспользоваться функцией «Экспорт» в административной консоли.

Экспортируем данные с работающего сайта

С помощью функции «Импорт» можно загрузить полученный файл на локальный сервер.

Импортируем данные на локальный сайт

Что делать, если вы не пользуетесь WordPress? Вот универсальный способ переноса ресурсов. В панели управления phpMyAdmin выберите базу данных экспериментального сайта. Укажите обычный способ экспорта, при котором отображаются все настройки. Выберите метод сжатия gzip. Не меняйте другие настройки. Запустите экспорт БД.

Экспортируем БД

Браузер загрузит на жесткий диск ПК файл с расширением sql.gz. Его необходимо импортировать на сервер хостинг-провайдера. Для этого в панели управления сервером выберите меню «Базы данных – phpMyAdmin».

Входим в раздел управления phpMyAdmin

На вкладке «Импорт» загрузите файл с базой данных.

Импортируем базу данных

Описанными способами сайты можно переносить с локального сервера на сервер хостера и в обратном направлении. Также для создания копии ресурса и последующего переноса вы можете воспользоваться инструментами резервного копирования базы данных, например, плагином для WordPress WP Database Backup или аналогами для других движков. Если вы пользуетесь WordPress и локальным сервером Desktop Server, перенести локальный сайт можно с помощью плагина Desktop Server for WordPress.

Какой локальный сервер выбрать

Для рядового пользователя подойдет любой из описанных вариантов. Работа с предложенным ПО позволяет установить сайт на локальную машину, настроить, протестировать и перенести ресурс на сервер хостинг-провайдера.

Если вы пользуетесь CMS WordPress, обратите внимание на Desktop Server. Установка и настройка этой программы занимают меньше времени по сравнению с другими продуктами. Благодаря плагину для WordPress вы также ускорите перенос готового сайта на сервер хостера. Если вы работаете с другими CMS, используйте любой из предложенных локальных серверов. Например, с Winginx вы сможете запустить сайт и контролировать разработку с помощью удобного планировщика в панели управления программой.

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

kak-zapustit-sayt-na-lokalnom-kompyutere

texterra.ru

90+ бесплатных ресурсов для самостоятельного обучения онлайн / Habr

Хочу поделиться списком полезных образовательных ресурсов, среди которых каждый найдет для себя что-то интересное и новое. Главное рассмотрим в начале — IT и иностранные языки. А следом будет подборка сервисов и ютуб-каналов, связанных с наукой, образованием в целом, бизнесом и творчеством.




Информационные технологии и программирование

На русском:
  • Academy.yandex.ru — Яндекс — найдется все! Помимо возможности записаться в одну из школ Академия Яндекса, на сайте доступен архив записей некоторых докладов.

  • Cybermarketing.ru — Профессиональное обучение интернет-маркетингу.

  • Code.org — Каждый должен иметь возможность изучать компьютерную науку наравне с общепринятыми дисциплинами.

  • Geekbrains.ru — Хочешь научиться программированию? Десятки бесплатных материалов доступны на Geekbrains.

  • Hexlet.io — Как стать программистом? Для начала перейти на данный ресурс.

  • Htmlacademy.ru — Интерактивные курсы и интенсивы для будущих гуру в IT.

  • Lendwings.com — Неплохая подборка курсов, в том числе бесплатных.

  • Loftblog.ru — Портал видеоуроков по веб-разработке.

  • Mail.ru — “Погребок” аккуратно собранных и замаринованных видео-лекций от профессионалов Mail.ru и ведущих IT-разработчиков, которые вы можете “достать и открыть” в удобное для вас время и попробовать на вкус.

  • Microsoft.com — Подборка курсов от виртуальной академии Майкрософт.

  • Techdays.ru — Видеопортал по разработке и современным технологиям.

На английском:
  • Codecademy.com — Учитесь программировать в интерактивном режиме.

  • Codeplace.com — Обучение веб-разработке от А до Я для новичков и продвинутых разработчиков.

  • Codeschool.com — Учись, практикуйся, добивайся своего!

  • Datacamp.com — Онлайн-уроки и курсы программирования.

  • Dataquest.io — Больше данных богу данных. Научитесь писать код, работать с данными и строить свои проекты.

  • Datamonkey.pro — Изучайте SQL и Excel, станьте мастером по анализу данных.

  • Generalassemb.ly — Великолепные сайты (HTML, CSS, Javascript) своими руками.

  • Onemonth.com — Стань на “ты” с кодом за 1 месяц. Заманчиво не правда ли?

  • Platzi.com — Маркетинг, программирование и дизайн от лидеров отрасли.

  • Sitepoint.com — Ruby, PHP, SEO, дизайн и многое другое.

  • Teamtreehouse.com — Учитесь HTML, CSS, мобильной разработке и многому другому.

  • Udacity.com — Тот самый “Университет Силиконовой долины”.

Иностранные языки

С русским интерфейсом или поддержкой:
  • 16polyglot.ru — Англисйкий (и другие) язык за 16 часов! Конечно, это не совсем правда, но для поездки или начала изучения самое то.

  • Abaenglish.com — Бесплатные видео-уроки английской грамматики, фильмы и многое другое.

  • Busuu.com — Сайт и приложение. Обучайся вместе с 60 миллионами пользователей со всего мира. Отправляй упражнения на проверку реальным людям и сам помогай другим.

  • Duolingo.com — Сайт и приложение: учите языки в игровой форме.

  • Lang-8.com — Социальная сеть для изучения другого языка. Пиши тексты, отправляй их на проверку другим ученикам. Проверяй работы на своем родном языке.

  • Lingualeo.com — Персонализированный онлайн-сервис, помогающий учить английский язык эффективно. Сайт и приложение.

  • Lingvist.io — Азы английского или французского языков обещают донести за 200 часов, проверим?

  • Lingust.ru — Еще один сайт с подборками материалов для изучения языка.

  • List-english.ru — Подборка бесплатных материалов по английскому языку для начинающих.

  • Ororo.tv — Смотрите фильмы и сериалы с субтитрами, в любой момент наводите мышь на неизвестное слово — фильм остановится, а вам покажут перевод и прочую полезную информацию.

  • Real-english.ru — Английский без дураков — “Курс молодого бойца”.
На английском:
  • 40 Essential British Expressions — Youtube-канал. Простые и познавательные анимационные уроки помогут вам лучше понимать язык Байрона и Шекспира.

  • Anglo-linklink — Youtube-канал. Учим постепенно, переходя от менее сложных уроков к более сложным.

  • Babbel.com — Если с английским уже все в порядке, здесь вы можете взяться за другие языки. Основной принцип площадки — во главе всего реальные повседневные беседы и темы.

  • BBC Learning English — Youtube-канал. Изучайте язык вместе с британской новостной службой BBC.

  • Britishcouncil.org — Большая база графических, аудио и видео материалов от British Council.

  • English in a minute — Youtube-канал. Американский английский по несколько минут в день. Такой подход точно понравится людям с хронической нехваткой времени.

  • Learn English with Jennifer — Youtube-канал. Полмиллиона подписчиков и десятки видеоуроков говорят сами за себя. Заходим на канал опытного педагога, смотрим и работаем над собой.

  • Planblabs.net — Уделяйте этому приложению по 5 минут в день.

  • Memrise.com — Карточки, карточки, слова, слова.

  • Rachel’s English — Youtube-канал. Как работать с американцами? В первую очередь – говорить с ними на одном языке.

  • Quill.org — Различные топики для изучения английского.

Наука и образование

На русском:
  • 4brain.ru — Развивайте память, считайте в уме, осваивайте ораторское мастерство. arzamas.academy/courses Некоммерческий просветительский проект, посвященный гуманитарному знанию.

  • Coursera.org — Знания тысяч экспертов из ведущих университетов мира собраны специально для вас на одной площадке.

  • Coursmos.com — Курсы по различным темам всегда с вами. В любом месте, с любого устройства.

  • Ifmo.ru — Курсы от ИТМО. IT’sMOre than a UNIVERSITY.

  • Gaidaruniversity.ru — Открытый университет Егора Гайдара. Лекции по экономическим и социальным дисциплинам.

  • Khanacademy.org — Академия Хана (Khan Academy) продвигает идеи бесплатного и качественного образования для всех.

  • Lektorium.tv — Просветительский проект Лекториум. Вас ждут специально подготовленные ведущими вузами страны онлайн курсы. Темы найдутся для всех: старшеклассников, студентов и специалистов.

  • Lectoriy.mipt.ru — Лекторий. Видеолекции и открытые образовательные материалы Физтеха.

  • Nkj.ru — Видеоподборка журнала “Наука и жизнь”.

  • Openedu.ru — Открытое образование. Платформа позволяет изучать базовые дисциплины бакалавриата российских университетов через онлайн-курсы. Среди партнеров-организаторов МГУ, СПбГУ, СПбПУ, НИУ «ВШЭ», МФТИ, ИТМО.

  • Postnauka.ru — Короткие видеолекции, монологи ученых по теме их исследований. Научные теории, понятия, идеи и факты.

  • Pushkininstitute.ru — Образование на русском. Проект Государственного института русского языка им А.С.Пушкина.

  • Theoryandpractice.ru — Теории и практики- место в сети для обмена знаниями.

  • Totaldict.ru — Онлайн подготовка к “Тотальному диктанту”.

  • Academia — Проект Academia телеканала Культура. ТВ-проект, каждая серия которого — это самостоятельная лекция по одной из фундаментальных наук.

  • Tvkultura.ru — Телеканал Культура, подборка видеоматериалов образовательной тематики.

  • Universarium.org — Универсариум — открытая система электронного образования. Бесплатные образовательные программы от лучших университетов России.

  • Univertv.ru — Открытый образовательный видеопортал УниверТВ. Коллекция видеофильмов, записей лекций ведущих российских и зарубежных ВУЗов.

  • Uchinovoe.ru — Учи новое! Не школьные предметы для школьников.

  • Universiality.com — Технологии, личностный рост, творчество, дизайн, музыка.

  • Upstudy.pro — Молодой агрегатор различных курсов, в основном офлайн, но начали появляться и онлайн. Иногда можно поймать интересные бесплатные онлайн мероприятия от экспертов различных сфер.

  • Vnimanietv.ru — Коллекция материалов по итогам первой в России национальной премии «Внимание» в области образовательное видео.
На английском:
  • Academicearth.org — Курсы для абитуриентов, учащихся колледжей, техникумов и их выпускников, а также бакалавров, магистров, докторов наук.

  • Curious.com — Учитесь чему-то новому каждый день, уделяя всего по 5, 15 или 30 минут.

  • Edx.org — Качественное образование мирового уровня для всех и везде.

  • Gohighbrow.com — Получайте каждое утро 5-минутный урок на свою электронную почту.

  • Mruniversity.com — Экономика во всех ее проявлениях.

  • Skillshare.com — Дизайн, бизнес, технологии, фотография, кулинария.

  • Open2study.com — Видео-курсы различных направлений от детского раннего развития до астрономии.

  • Udemy.com — Более 30 тысяч курсов и образовательных программ, ныряйте с головой.

Бизнес и карьера

На русском:
  • Businesslearning.ru — Бесплатное повышение квалификации в сфере предпринимательской деятельности.

  • Dasreda.ru — Электронные знания школы бизнеса Деловая среда (Сбербанк).

  • Eduson.tv — Продажи, менеджмент, личная эффективность. Все здесь!

  • Hse.ru — Видеоматериалы бизнес-инкубатора НИУ ВШЭ

  • Intuit.ru — Знания — ваш ключ к новой работе и более высокому посту в компании.

  • Uniweb.ru — Повышайте свои компетенции без отрыва от работы.

  • Skolkovo school — Ютуб канал Московской школы менеджмента Сколково.

Творчество, разное

На русском:
  • Dancehelp.ru — Видеокаталог хореографу в помощь.

  • Smak — Эфиры телепроекта Смак.

  • Strelka — Vimeo канал института социальных изменений Strelka.

  • Talerka.tv — Традиционные рецепты мира.

  • Ted.com — «Technology, Entertainment, Design» или по-русски «Наука, Искусство, Культура». Образовательные видеоролики, отснятые специалистами различных компаний мира. Основной язык английский, у многих есть русские субтитры.

  • Забавы кисточкой — Ютуб канал “Забавы кисточкой”. Небольшая подборка нетривиальных уроков акварели.
На английском:
  • Chesscademy.com — Все, чтобы научиться играть в шахматы. Онлайн.

  • Guides.co — Ежедневно авторы, педагоги, маркетологи и блоггеры пополняют огромную коллекцию руководств (гайдов) по различным тематикам.

  • Pianu.com — Каждый может научиться игре на фортепиано.

  • Yousician.com — Клавишам предпочитаете струны? Тогда этот ресурс для вас.

  • DrawWithJazza — Ютуб канал с видеоуроками по созданию мультипликационных персонажей.

  • LighterNoteProd — Ютуб канал с практическими советами начинающему художнику.

Пользуйтесь, изучайте, открывайте новое каждый день!

Жду в комментариях ссылки на ресурсы, которыми пользуетесь вы сами. Что они дают, как работают и почему именно эти сервисы, а не один из 10 других подобных.

habr.com

Как открыть свой сайт в интернете бесплатно

Как открыть свой сайт в интернете бесплатно, если ни вы, ни ваши друзья не имеете опыта в постановке задач на разработку web-проектов и не хотите тратить время и деньги на заказ сайта в агентстве?

К счастью, сегодня существуют сервисы, облегчающие ряд задач, связанных с организацией и продвижением онлайн-бизнеса. Так, сервис готовых сайтов 1C-UMI позволяет человеку, ничего не понимающему в web-разработке, не только открыть бесплатный сайт, но и  с помощью встроенных возможностей настроить его продвижение и рекламу.

Итак, как открыть свой сайт бесплатно в интернете и что для этого нужно? Во-первых определиться, какой тип сайта в полной мере удовлетворит задачи вашего типа бизнеса. Так, если вы фрилансер, частный предприниматель или представитель небольшого предприятия сферы услуг — вам подойдет сайт специалиста. С помощью этого решения вы сможете создать современный и привлекательный ресурс, который замечательно решит задачи, связанные с презентацией вас и ваших предложений.

Если вы полагаете, что ваше  эффективное присутствие в интернете не может обойтись без детализированного представления ваших товаров или услуг, выберите сайт компании. Используя возможности сервиса 1C-UMI, вы сможете создать многоуровневый  каталог и разместить в нем неограниченное количество товаров, удобно структурировав их по категориям. У ваших потенциальных клиентов будет возможность знакомиться с вашими предложениями, оставлять отзывы и комментарии в карточках товаров через свои аккаунты социальных сетей, подписываться  на новости в формате RSS и, в случае желания приобрести товар, связываться  с вами через форму обратной связи, по e-mail или по телефону.

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

После того, как вы выбрали модель вашего присутствия в сети, самое время перейти к созданию сайта на 1C-UMI. Для этого выберите шаблон в рамках типа вашего сайта: шаблон сайта специалиста, шаблон сайта компании или шаблон интернет-магазина. Сервис предлагает более 500 готовых решений для бизнесов множества направлений, и вы без труда найдете тот, который идеально подойдет именно вам. Кроме того, здесь вы найдете адаптивные шаблоны — решения для тех, кому важно, чтобы сайт корректно отображался на всех типах устройств: мониторах, ноутбуках, планшетах и смартфонах.

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

Итак, уже через 5 минут вы станете владельцем полностью готового сайта с профессиональным дизайном, простой структурой и готовыми текстами. Адаптируйте предложенный контент под специфику своего бизнеса, заполните каталог  и начните привлекать клиентов с помощью встроенных сервисов автоматической поисковой оптимизации и контекстной рекламы.

umi.ru

Как стать участником опенсорс-проекта, даже если не умеешь писать код? — «Хакер»

Содержание статьи

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

Анестезиолог Кон Коливас разработал собственную версию планировщика задач для ядра Linux, потому что существующая реализация была адаптирована под серверные задачи и плохо справлялась с пользовательскими.

Алексей Кузнецов, который по воле случая превратился в Linux-хакера, сменил свою профессию с физика-теоретика на системного программиста.

ИТ-журналист Петр Семилетов параллельно с основной работой уже десять лет разрабатывает свой текстовый редактор Tea с открытым исходным кодом.

Леся Новасельская, получившая специальность патологоанатома, участвует в тестировании проекта c открытым исходным кодом.

Подобных примеров множество. Всех этих людей объединяет одно — они нашли способ реализовать свои интересы в опенсорсных проектах и участвуют в них и для удовольствия, и для получения опыта. Сложился некий миф, что открытый проект — это только для программистов, причем тех, у кого уже есть большой опыт в разработке. Но это не так. Открытый проект — не только написание исходного кода, но и тестирование, техническая поддержка, написание документации, маркетинг и так далее. А еще это отличный шанс приобрести опыт, построить карьеру и получить удовольствие от общения с единомышленниками.

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

 

Пиши новый код

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

Для каждого проекта характерны свои технические процессы, поэтому узнай о них побольше, прежде чем предлагать свой вариант. Например, в проекте PostgreSQL жестко регламентированы все процессы: изменения в коде отправляются в виде патча в рассылке основным разработчикам, которые тщательно изучают все изменения. С другой стороны, есть и иные типы проектов, как, например, Parrot, где программисты могут коммитить в основной репозиторий. Если в проекте используется GitHub, возможно, процессы поставлены через pull request, то есть через запросы на включение сделанных изменений. В общем, нет двух одинаковых проектов.

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

 

Приоритизируй баги

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

Например, у проекта OpenVZ есть полностью открытая система работы с дефектами — bugs.openvz.org, где собраны все известные (исправленные и неисправленные) проблемы за все время существования проекта (без малого десять лет). Баг-трекер — один из механизмов коммуникации между разработчиками и пользователями. Постоянная работа с текущими запросами дает отличную возможность внести свой вклад в проект. Для работы с системой могут понадобиться специальные права доступа, которые тебе предоставит менеджер проекта, следуя принципам меритократии.

 

Тестируй промежуточные версии

Опрос в Интернациональном клубе тестировщиков ПО показал, что интерес к тестированию ПО с открытым исходным кодом у профессиональных тестировщиков есть. Многие хотели бы поучаствовать в таких проектах, но не знают, с чего начать. В свою очередь, в любом проекте, даже коммерческом, всегда не хватает тестировщиков. Обнаружение и сортировка багов может значительно сэкономить разработчикам время на поиск проблемы. Если пользователь пишет: «Программа не работает, когда я делаю такие-то шаги», не поленись разобраться в том, чем вызвана эта проблема. Проблема повторяется? Ты можешь воспроизвести ее, сделав ряд конкретных шагов? Сузить круг подозреваемых до конкретного браузера или дистрибутива? Даже если ты не знаешь истинную причину проблемы, информация об уже проделанной тобой работе поможет разработчикам справиться с ней. Независимо от того, что тебе удалось выяснить, добавь свои комментарии к багу, чтобы все могли с ними ознакомиться.

По своему опыту могу сказать, что у открытых проектов вечно не хватает ресурсов, чтобы хорошо протестировать новую функциональность. Поэтому перед тем, как добавлять серьезные изменения в основную ветку репозитория исходного кода, проект старается привлечь как можно больше людей для тестирования. Такая практика так и называется — призыв к тестированию (call for testing). У владельцев проекта никогда не будет столько аппаратных и программных конфигураций, сколько у сообщества. Например, разработчики проекта OpenBSD анонсируют появление новой функциональности в новостях, чтобы привлечь к ней внимание тестировщиков и пользователей. То же самое делает и проект OpenVZ.

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

 

Пиши тесты

В большинстве проектов используются программные комплексы, предназначенные для тестирования кода, и любой из них предусматривает возможность добавления в него новых тестов. Используй такие тестовые инструменты, как gcov для C, чтобы установить те области исходного кода, которые нельзя протестировать имеющимися тестами. Затем добавь соответствующий тест, чтобы иметь возможность протестировать необходимую функциональность.

 

Исправляй баги и добавляй новые функции

Патч с исправлением проблемы или добавляющий необходимые тебе функции — это своего рода классический способ вовлечения в открытый проект (с этого началось вообще все движение за свободное ПО). Этот способ рекомендует и известный мейнтейнер сообщества Linux Джеймс Боттомли (он же — технический директор отдела серверной виртуализации компании Odin) тем, кто хочет принять участие в Linux-проекте, но не знает как. Обычно он приводит в пример случай, когда ему понадобилось изменить функциональность SIP-клиента в Android. Обнаружив, что такая возможность отсутствует, он сделал патч и отправил в проект SIPdroid.

При разработке новых функций неплохо также добавить тест для тестирования той части кода, которую ты исправил; некоторые проекты требуют, чтобы все исправления дефектов сопровождались соответствующими тестами. Веди записи по мере того, как осваиваешь незнакомый код. Даже если ты не можешь справиться с багом, опиши в тикете то, что тебе удалось о нем выяснить. Это поможет тем участникам команды, которые будут работать с багами после тебя.

 

Помогай поддерживать инфраструктуру проекта

Тебе интересна область DevOps? Это направление сейчас очень популярно. Хороших инженеров DevOps в России очень трудно найти, мы это знаем на собственном опыте. Получить опыт можно в проектах, в которых ведется открытая разработка инфраструктуры. Это такие проекты, как Wikipedia и Fedora Linux. OpenVZ только делает в этом направлении первые шаги.

Настройка процесса непрерывной интеграции для компонентов проекта, пакетирование компонентов для Linux-дистрибутивов, автоматическая настройка окружения разработчика — все это входит в задачи DevOps.

 

Пиши и переводи документацию

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

Если при чтении документации по проекту тебя когда-нибудь посещала мысль: «Такое ощущение, что ее написали так, как будто я уже знаю, как пользоваться программой», то ты понимаешь, о чем речь. Очень часто взгляд со стороны позволяет выявить недостатки в текущей документации, которые могут не заметить непосредственные участники проекта. К тому же в динамично развивающихся проектах документация быстро устаревает, и ее требуется поддерживать в актуальном состоянии.

Если ты по какой-то причине думаешь, что заниматься этим «несерьезно», то ты ошибаешься. Нет «серьезного» или «несерьезного» вклада в открытый проект. К примеру, разработчик OpenBSD (в то же время и сотрудник CERN) Инго Шварц (Ingo Schwarze) написал утилиту mandoc, которая теперь используется для форматирования страниц документации не только в OpenBSD, но и во FreeBSD, NetBSD, DragonFly BSD. Попутно он привел в порядок форматирование существующих страниц документации в проекте. Так что все зависит от того, что интересно тебе. Если интересно — берись и делай!

 

Помогай другим пользователям

Лучший способ сплотить команду — это помогать другим. Для дальнейшего успеха проекта особенно важно отвечать на вопросы, в частности на вопросы новичков. Это время не будет потрачено зря, даже если кто-то задает вопрос, на который можно найти ответ, перечитав необходимую документацию. Кроме того, ты получишь нового благодарного и активного участника своей команды. Все с чего-то начинают, а любому проекту необходим постоянный приток кадров, чтобы он продолжал развиваться.

 

Рекламируй любимый проект

Если у тебя есть блог, делись своим опытом, который ты получил в проекте. Расскажи о проблемах, с которыми ты столкнулся при использовании ПО, и как тебе удалось их решить. Так ты сможешь убить двух зайцев сразу: поддержать внимание своих коллег к проекту и создать полезную базу информации для тех, кто присоединится к нему в будущем и будет искать в Сети ответы на уже описанные тобой вопросы. Блог, рассказывающий о твоих технических достижениях и изысканиях, — это еще и отличный способ поделиться реальным опытом разработки и решения технических проблем, который может пригодиться при поиске новой работы. Во многих проектах есть агрегаторы записей из блогов участников проекта, традиционно их называют «планетами»: планеты Linux kernel, Perl, OpenVZ, freedesktop, GNOME, Debian и другие.

 

Делай дизайн

Дизайн — это бич большинства открытых проектов. Скучные сайты и невзрачные логотипы сопровождают проекты просто потому, что технические люди в основном зациклены на реализации, а не на внешнем виде. Поэтому участие дизайнеров крайне приветствуется. Пользователи сайта StackExchange попробовали ответить на вопросы «как графический дизайнер может внести вклад в открытый проект», «что мотивирует дизайнера участвовать в открытом проекте», но мнения их разошлись. Дизайнеры из компании Red Hat тоже осознали необходимость более активного участия дизайнеров в открытых проектах и попробовали создать сайт, который поможет открытым проектам и дизайнерам найти друг друга, но о случаях успешного применения проекта пока не известно.

Ищи задачи, которые интересны тебе и полезны проекту, и пытайся их решить. Способы участия могут быть разными, иногда они описаны на специальных страницах: OpenStack, OpenVZ, FreeBSD. Само наличие у проекта такой страницы говорит о том, что он открыт для участия других людей.

Чтобы подкрепить все наши слова фактами, мы собрали отзывы трех людей, которые получили профессиональный опыт в открытых проектах.

 

Александр Юрченко, разработчик в компании «Яндекс»

На свою первую серьезную работу за деньги (разработчик встраиваемых систем) я пришел, уже больше года считаясь официальным разработчиком ядра бесплатной операционной системы OpenBSD. Официальным — в смысле у меня был доступ на запись в репозиторий. А до этого еще с год я был «зрителем», присылающим патчи разработчикам.

Должен сказать, что участие в подобном проекте дает колоссальный опыт. В хорошем крупном open source проекте есть все, что обычно требуют от разработчика на собеседовании: и грамотное проектирование, и хорошее кодирование, и навык работы с системой контроля версий и баг-трекером, а также peer review, работа в команде и т. д. и т. п. Таким образом, «поварившись» год-другой в такой атмосфере, можно запросто вырасти до уровня, который соответствует позиции Senior developer.

Собственно, со мной так и было. Я не имел никакого формального опыта работы (по трудовой), но меня сразу взяли старшим разработчиком. А после первой недели испытательный срок был уменьшен с трех месяцев до нуля.

 

Кирилл Горкунов, разработчик проектов OpenVZ и CRIU

Попал в OpenVZ достаточно случайно. По работе занимался в основном прикладным программированием, практически не имеющим точек пересечения с системным. В какой-то момент приобрел свой первый 64-битный ноутбук (Acer с AMD Turion 64), ну и поскольку Windows 64-битной под руками не было, поставил Gentoo. С Linux до того момента знакомства практически не имел, так, поиграться ставил какой-то древний Red Hat, но он меня особо не впечатлил, да и для решения текущих рабочих задач эта операционка не подходила. Под Gentoo ноут более-менее работал, но некоторых драйверов не было в стандартной поставке ядра, так что пришлось собирать свое ядро из исходников.

Тут я и словил первый баг, правда, не в самом ядре, а в программе формирования конфигурации ядра. Порыскал по Сети — решения проблемы нет, ну и рискнул сам попробовать исправить. Оказалось, пришлось разбираться со множеством смежных задач (как собирается ядро, какие инструменты используются и прочее). Сделал патч, выслал в рассылку. К моему удивлению, мейнтейнеры ядра отнеслись очень благосклонно даже к такому «кривому» патчу (забегая вперед, скажу, что его пришлось переделать, так как патч был отвратительный, просто не стали сразу давать «от ворот поворот»), не было ни одного смешка в сторону новичка: объяснили, что и как, и показали, как делать правильно.

Дальше заинтересовало само ядро — как работает, какие алгоритмы используются. В этом отношении открытость проекта оказывает неоценимую услугу: можно посмотреть, как решаются те или иные задачи (не какие-то теоретические, а реальные). Нередко возникал вопрос «а почему так, а не эдак», и вот тут крайне полезно иметь обратную связь с автором кода. Открытые списки рассылки не только позволяют спросить у разработчиков, что и как, но, что более важно, служат чем-то вроде базы знаний — всегда можно поискать в архивах обсуждения проблем и методы их решений. Для начинающего программиста без опыта работы такое окружение — просто благодатная почва, чтобы попробовать свои силы, понять, «а надо ли это все мне».

Примерно так было и со мной: несколько лет правил что-то в коде, высылал патчи, получал по рукам за кривой код, ну и одобрения, если патч был правильным и красивым. Такой опыт фактически бесценен. И можно быть уверенным: если у тебя начинает что-то получаться, то тут же появятся предложения о работе. Я так и пересекся с разработчиками ядра Linux из OpenVZ. Ну а дальше решили работать вместе над ядром OpenVZ и смежными программами, не забывая, конечно, и о ванильном ядре.

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

 

Александр Поляков, разработчик

Я думаю, в моей истории ничего оригинального нет. Как это происходит обычно — начинаешь использовать какой-то софт, и внезапно оказывается, что хотелось бы, чтобы что-то в нем работало не совсем так, или чего-то не хватает, или есть противные косяки. В случае опенсорса есть возможность исправить это самому. Так было с оконным менеджером dwm, в котором меня раздражала конфигурация через config.h c перекомпиляцией: сначала я добавил конфиг через xrdb, потом click to focus и так далее. Такие изменения не соответствовали минималистичным гайдлайнам проекта, поэтому пришлось делать форк.

C DragonFly BSD примерно то же самое: завлекательные тексты на сайте звучали интересно, FreeBSD надоела, но внезапно оказалось, что там плохая поддержка языков, отличных от английского, и управления энергопотреблением (ACPI). Пришлось заняться портированием необходимых участков кода из более свежей версии FreeBSD. Сильно помогли другие разработчики c IRC-канала, объясняли, что к чему, и помогали разбираться с проблемами. Там я получил кое-какой опыт разработки ядра и системных библиотек. Еще удалось на этом заработать немного денег — нашелся человек из Москвы, который использовал DragonFly BSD в продакшене и тоже что-то там хотел подкрутить в ACPI. Нашел меня через git log, связался по почте.

В OpenBSD я только по мелочи какие-то патчи кидал — в cwm что-то допиливал для удобства (в wm’ах-то я уже был спец), в ksh поправил пару косяков и улучшил vi mode. В этом проекте отношение к новым контрибьюторам не самое лучшее — предполагается, что ты самостоятельно во всем разберешься и только после этого будешь писать в рассылку. Порог вхождения высокий, выживают только самые стойкие, зато код получается хороший.

Еще я участвовал в 9front: доработал драйвер для Wi-Fi и уже знакомый мне ACPI. У них, наверное, самая маленькая работающая реализация интерпретатора AML. Да и само ядро довольно компактное (в сравнении с «нормальными» ОС), поэтому разбираться проще. Хвастался этим на собеседовании, насколько помогло (или наоборот) — не знаю.

Вот так вот можно получить опыт в открытых проектах. Главное — не бояться присылать кривой код (бывает у всех), сохранять спокойствие (когда его обругают) и выбирать проекты, которые тебе действительно интересны. И опыт получишь, и удовольствие. Еще есть шанс, что работодатель сам тебя найдет по коммитам или профилю в Гитхабе (привет, Гугл!).

xakep.ru

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *