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


Оглавление (нажмите, чтобы открыть):

OpenSource проекты на С#

15.04.2013, 21:00

OpenSource
Привет, гуру шарпа! Ищу код на котором можно было бы поучиться. Может кто-нибудь скинуть ссылку.

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

CMS и OpenSource
Набросал свою первую cms. Думаю, приберечь для себя или выложить в опенсорс, чтобы каждый мог.

OpenSource игры
Доброго времени суток. Какие OpenSource игры вы знаете? Меня интересуют игры любых жанров, и не.

Страница поста от канала С# Start 1.0

Обращаем внимание, что мы не несем ответственности за содержимое(content) того или иного канала размещенный на нашем сайте так как не мы являемся авторами этой информации и на сайте она размещается в автоматическом режиме

Пожаловаться

Обращаем внимание, что мы не несем ответственности за содержимое(content) того или иного канала размещенный на нашем сайте так как не мы являемся авторами этой информации и на сайте она размещается в автоматическом режиме

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

Если вы интересуетесь жизнью Open Source сообщества и хотите к нему присоединиться, то эта серия подборок придётся вам как нельзя кстати, ведь в ней собраны лучшие проекты с открытым исходным кодом на C#.

Nancy — это легковесный фреймворк для создания HTTP-сервисов на .NET Framework/Core и Mono. Целью фреймворка является как можно более «незаметное» обеспечение взаимодействий в приложений.

Nancy способна обрабатывать запросы DELETE , GET , HEAD , OPTIONS , POST , PUT и PATCH и снабжена простым и элегантным языком Domain Specific Language (DSL). Вот пример приложения:

Репозиторий corefx содержит реализацию .NET Core. Она включает в себя System.Collections, System.IO, System.Xml и другие компоненты. Больше информации можно найти в документации. Сопутствующий репозиторий .NET Core Runtime содержит реализацию среды выполнения CoreCLR для .NET Core.

Roslyn предоставляет C#- и Visual Basic-компиляторы с API для анализа кода, аналогичными инструментам Visual Studio.

DotNetty — это порт Netty, фреймворка для работы с асинхронными сетевыми приложениями и высокопроизводительными протоколами серверов и клиентов.

Cake (C# Make) — это система автоматизации сборки с C# DSL, предназначенная для компиляции кода, копирования файлов и папок, запуска юнит-тестов, сжатия файлов и сборки NuGet-пакетов.

OpenTK — это быстрая низкоуровневая C#-связка OpenGL, OpenGL ES и OpenAL. Она работает на всех основных платформах.

NUnit — это фреймворк для юнит-тестирования для всех языков .NET. Изначально он являлся портом JUnit, но текущая версия была переписана с нуля.

XUnit — это фреймворк, аналогичный предыдущему. Работает с ReSharper, CodeRush, TestDriven.NET и Xamarin.

Json.NET — это персональный проект, целью которого было создание лучшего JSON-сериализатора для .NET.

Topshelf — это фреймворк для хостинга сервисов, написанных на .NET. Создание сервисов упрощено, что позволякет разработчикам создавать простых консольных приложения, которые можно установить в виде сервиса, используя Topshelf. Разумеется, консольные приложения отлаживать куда проще.

MassTransit — это фреймворк для разработки распределённых приложений.

SimpleInjector — библиотека для внедрения зависимостей.

Dapper — это простой маппер объектов в виде NuGet-пакета, которые расширяет интерфейс IDbConnection.

Opensource проекты для получения опыта [закрыт]

Просматривая вакансии на Java программиста в интернете, можно заметить, что даже для джуниура почти везде нужно 1-2 года опыта работы.

Много раз читал, что для получения реального опыта программирования на Java можно принять участие в разработке какого-нибудь опенсорс проекта(забесплатно :D). Скажите пожалуйста, как найти такие проекты и предложить себя в качестве кандидатуры 🙂

В теории я уже достаточно хорошо разобрался : в Java SE и основах Java EE(Servlets, JSP, JSF), знаю основы SQL, HTML, CSS, JavaScript.

Закрыт по причине того, что необходимо переформулировать вопрос так, чтобы можно было дать объективно верный ответ участником Nicolas Chabanovsky ♦ 29 мар ’16 в 6:26 .

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

1 ответ 1

даже для джуниура почти везде нужно 1-2 года опыта работы.

Это еще что. Мне попадались вакансии Senior Ruby Developer с 6+ годами опыта, хайлоадом и всем таким, не старше 23 лет. )

По сабжу. Если немного покурите Spring MVC, Hibernate и JQuery, то можете попробоваться на один из проектов JTalks. Ребята разрабатывают набор компонент для развертывания форумов/блогов/ всего такого с тесной взаимной интеграцией. Первый релиз уже состоялся и можно посмотреть что получилось, но работы еще много. Опыт командной разработки для новичка (да и не только) будет отличный.

Как участвовать в open source проектах

Я написал это руководство, чтобы помочь любому присоединяться или выкладывать свои (contributing) open source проекты на GitHub. Одна из причин крутости open source — в желании людей помогать друг другу.

Не важно — программируете ли вы много лет или только начали, есть несколько моментов, которые вам нужно знать, чтобы продуктивно использовать GitHub. Гайдов «как» сделать что-то с технической точки зрения на GitHub множество: на какую кнопку нажать, какие команды запустить и подобное.

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

Читая этот гайд, помните, что нормально (и даже ожидаемо!) делать ошибки. Не нужно запоминать каждую мелочь. Делайте всё возможное и учитесь в процессе.

Гайд предполагает, что вы работаете с JavaScript-модулем, установленным через npm или bower , который размещён на GitHub. Кроме команд, предназначенных для npm или bower , большая часть этого гайда применима к другим платформам и языкам.

Как задавать вопрос

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

Если проект маленький, обычно принято задавать вопросы через отправку issue (см. ниже). Если большой — у них скорее всего есть рассылка или IRC-канал, через которые лучше всего обращаться с вопросами. StackOverflow — также очень хороший ресурс. Когда есть возможность, задавайте вопросы на публичном форуме. Таким образом ответить на вопрос сможет кто угодно, а ответ будет доступен любому человеку с таким же вопросом. Если ничего не работает, можно написать в твиттер или на почту поддержки проекта.

Отправка уведомления о баге (issue)

На GitHub уведомления о багах или улучшениях называются «issues».

Об этом спрашивали раньше?

Перед тем как отправить уведомление, нужно поискать существующие issues. Не забывайте проверять и открытые issues и закрытые. Если вы найдёте issue, который подобен вашему, прочтите всё о нём.

Если issue такой же как у вас, вы можете прокомментировать с дополнениями, чтобы помочь ответственным за проект разработчикам (maintainers) сделать отладку. Добавление комментария автоматически подпишет вас на уведомления по почте, что может быть полезным, когда будут появляться обновления, касающиеся этого issue. Если вам нечего добавить, но вы хотите получать уведомления об обновлениях на почту, вы можете нажать кнопку «watch», которая находится под комментариями.

Нет, никто не спрашивал

Если вы не можете ничего найти в существующих issues, не стесняйтесь отправить свой.

Нужно проверить, что указана версия проекта, так же как и версии связанных с ним приложений. Например, удостоверьтесь, что включили номера версий, выводимые командами node —version и npm list . Если вы заметите, что у вас установлена не последняя версия, используйте npm update и подтвердите, что issue всё ещё присутствует.

Разработчики проекта очень приветствуют тщательные разъяснения. Обычно это помогает им быстрее справиться с проблемой и всем это на руку.

Улучшаем код

Лучший способ — сделать «Fork» (копию) репозитория на GitHub. Это создаст экземпляр-клон репозитория в вашем GitHub аккаунте.

Перед тем как улучшать код, стоит сфокусироваться на том, что вы хотите конкретно сделать.

Каждый коммит должен выполнять что-то одно, а на каждый PR (см. ниже) должно быть одно специфическое улучшение.

Forking

  1. Нажмите на Fork в репозитории
  2. Перейдите в ваш форк внутри вашего аккаунта
  3. Сделайте git clone

Исправление и тестирование

Ок, теперь вы готовы к исправлению кода? Не совсем! Перед тем, как начать редактировать, вам нужно создать ветку (branch). Branch — как альтернативная временная линия. Можете почитать о git ветках тут.

Делаем ветку: git checkout -b something

Если вы пытаетесь починить баг, возможно вам стоит назвать ветку «fix-short-description». Если вы добавляете функциональность, «feat-short-description» — хорошее название. Когда вы меняете что-то в коде, возможно, вам захочется испытать его внутри какого-нибудь приложения или более крупного проекта.

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

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

Коммиты и пуш

Использование собственных изменений

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

Отправка ваших изменений обратно в проект

Вы сделали изменения, протестировали их с git commit и хотите отправить обратно в проект, чтобы они были включены в следующие версии.

На GitHub это делается с помощью отправки «pull request» (PR).

Отправка pull request

Золотое правило отправки pull request — всё выполнять так, как задумали владельцы проекта. Вы не можете читать мысли ответственных за проект, но можете посмотреть, что они делали в прошлом. Оценка этих действий заранее может повысить вероятность принятия ваших изменений.

Проще выражаясь: попытайтесь сымитировать стиль существующего кода. Обращайте внимание на отступы и стиль фигурных скобок в коде. Содержит стиль ранние инструкции return или там их избегают?

Код — не единственное, на что стоит обращать внимание. Заметьте какое время и формат имеют коммиты сообщений. Некоторые проекты используют настоящее время: «fixes the bug». А некоторые прошедшее: «fixed the bug».

Хороший способ проверить это — использовать git log и прочитать последние коммиты.

Что ещё стоит помнить:

Не меняйте номер версии софта (в package.json или bower.json ). Владельцы проекта сами позаботятся об этом, когда будут выпускать новую версию.

Если проект поддерживается корпорацией, возможно у них есть Contributor License Agreement (CLA) для избежания проблем с законом.

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

Если они не отвечают в течение 2 недель, вы можете прокомментировать это, чтобы вынести тему наверх. Чего-нибудь, вроде, «ping @ProjectMaintainer» обычно достаточно. Если даже после этого от них ничего не слышно, электронная почта — хороший способ выйти на контакт.

Команда может ответить тремя возможными способами:

  1. Всё сливается (merge). Ура!
  2. Ответственный за проект просит вас исправить что-то в PR перед тем, как принять вас. Мы обсудим это ниже.
  3. PR закрывается, а ваши изменения не добавлены. Обычно ответственные за проект дают небольшое разъяснение. Если от вас была новая фича, возможно, уже существует способ заставить код делать то, что вы хотите, вы просто этого не заметили. Если исправление бага, возможно, они хотят решить проблему иначе. Не позволяйте трудностям отбить у вас желание продолжать.
Исправление issues в pull request

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

Во-первых, внесите изменения в соответствующие файлы. Добавьте файл с помощью git add , как вы уже делали:

git add some-file

Затем можете изменить свой предыдущий коммит вот так:

git commit —amend

Эта команда помещает ваши поэтапные изменения в предыдущий коммит.

Чтобы обновить коммит в вашем PR, вам нужно выполнить force push:

Команда —force сообщает git , что вы хотите перезаписать предыдущий коммит.

Другая распространенная ошибка — создание нескольких коммитов, вместо внесения изменений в один.

Мой PR был закрыт, но я хочу использовать свои изменения!

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

А ещё вы можете использовать свои изменения и одновременно видеть изменения исходного кода репозитория. Обычно это называется «maintaining a fork» (поддержка копии) проекта. Для этого потребуется добавить ещё один remote.

Создание своего проекта

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

Поиск по существующим проектам

Иногда вы находите старый проект, который больше не поддерживается, но он решает ваши проблемы. Как делать форк смотрите выше.

Бонус: Составляйте список заметок по ходу работы. Если найдете понравившийся модуль, можете использовать заметки, чтобы улучшить секцию «See Also» в тех модулях, которые вам встретились, пока вы вели поиск, отправив им PR. Если не найдёте нужный модуль и не создадите свой собственный, можете превратить эти заметки в секцию «See Also» для своего модуля!

Начало проекта

Начало нового open source проекта должно быть крайней мерой. Почему?

Практический опыт: Не публикуйте ничего в npm пока у проекта не будет обоснованной минимальной функциональности.

Помните: вы всегда можете использовать npm link или npm install user/repo

Название проекта

Если ваш модуль — это плагин, обычно лучший способ — сделать для него префикс, в зависимости от того для чего этот плагин. В некоторых проектах есть гайды или соглашения как это делать. Например компоненты AngularJS обычно называются «angular-something», плагины Gulp —»gulp-something», а плагины Karma — «karma-something».

Пишем Readme

Хороший readme должен состоять из следующих частей:

  • Объяснение, которое умещается в одно предложение.
  • Установка (Install)
  • Смотрите так же (See Also)

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

Пишем тесты

Есть много способов писать тесты. Их важность в том, что если они провалятся, процесс будет существовать с кодом ошибки. Вы можете использовать для этого assert или if (condition) < process.exit(1) >.

Бонус: вы используете инструмент CI вроде TravisCI.

Публикация в npm

  1. Вы написали README.md , который объясняет что делает модуль. Он должен включать секцию See Also , которая ведёт на другие подобные пакеты.
  2. Вы написали тесты. Тесты должны запускаться с помощью npm test , и они должны проходить.

Бонус: Найдите кого-нибудь, кто будет содействовать в поддержке проекта. Отлично, если кто-то может помочь делать ревью issues и мёрджить PR. Невозможно угадать, как много свободного времени у вас будет в будущем. Обидно иметь непочиненные баги или несмёрженные PR в полезном проекте.

Этикет

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

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

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

Предполагать, что все делают всё возможное

эта задача должна быть очевидной для решения! почему её никто не решил?

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

Одна из мощных сторон open source как раз в том, что вы всегда можете сделать копию и отладить ошибки сами.

вы очевидно не понимаете, о чём я говорю!

Такой тип комментария особенно отталкивает новичков. Совершать ошибки должно быть абсолютно приемлемым.

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

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

Заключение

Спасибо за то, что прочитали. Надеюсь этот гайд поможет вам получить то, чего вы хотели от open source. А применить полученные знания помогут open source проекты «Хекслета»:

  • Hexlet Резюме. Сервис для соискателей и эйчаров, работает на Ruby on Rails.
  • Hexlet Interview. Проект на Node.js для специалистов, которые хотят пройти публичное собеседование или попрактиковаться в проведении собеседований.
  • Hexlet СИКП. Проект на Laravel. Это трекер прохождения курсов СИКП.
  • Hexlet Correction. Проект на Java. Сервис для отправки сообщений об ошибках и опечатках владельцам сайтов.
  • Codebattle. Площадка для поединков между программистами. Используются Clojure и Elixir, а также JS (React, Redux) на фронтенде.
  • Code Basics. Основы программирования для начинающих. Можно создавать обучающие курсы для новичков.

Фронтендерам на заметку: для вас найдутся задачи в каждом из проектов.

Идеи проектов для прокачки навыков программирования, часть 2

Перевод статьи «More project ideas to improve your coding skills».

Немногим ранее я написал статью, в которой привел 15 идей проектов, которые можно построить для развития навыков в программировании. Судя по отзывам, статья пошла на ура. В этом посте я рассмотрю несколько новых проектов, добавленных в репозиторий app-ideas.

Короткое напоминание: все проекты делятся на три группы, по уровню сложности. Здесь будут рассмотрены 2 проекта для начинающих, 4 – среднего уровня и 3 – для более опытных программистов.

1. Калькулятор

Уровень: для начинающих

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

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

Ограничения

Для осуществления вычислений нельзя использовать функцию eval().

User Stories

  • Пользователь может видеть дисплей, где будет отображаться текущее введенное число или результат последней операции.
  • Пользователь может видеть панель с кнопками для цифр 0-9, операций – «+», «-», «*», «/» и «=», кнопкой «С» (clear – «очистить») и кнопкой «AC» (clear all – «очистить все»).
  • Пользователь может вводить числа в виде последовательности цифр до 8 знаков, кликая на кнопки панели. Цифры, вводимые после 8-й, должны игнорироваться.
  • Пользователь может кликнуть на кнопку «С», чтобы удалить последнее введенное число или результат последней операции. Если пользователь удалил результат операции, дисплей должен обновиться и отобразить предыдущее число.
  • Пользователь может кликнуть на кнопку «АС», чтобы удалить все внутренние рабочие зоны и установить дисплей на «0».
  • Пользователь должен увидеть «ERR», если в результате какой-либо операции будет превышен максимум в 8 цифр.

Дополнительный функционал

  • Пользователь может кликнуть на кнопку «+/-» для смены знака числа, отображаемого в данный момент на дисплее.
  • На панели должна быть кнопка «.», чтобы пользователь мог вводить десятичные числа (до трех цифр после запятой) и осуществлять операции с ними. При этом соблюдается общее ограничение относительно максимума в 8 цифр.

Полезные ссылки и ресурсы

Примеры проекта

See the Pen React Calculator by Michael Jackson (@mjijackson) on CodePen.

2. Приложение для кулинарных рецептов

Уровень: для начинающих

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

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

Ограничения

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

User Stories

  • Пользователь может видеть список названий рецептов.

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

Дополнительный функционал

  • Пользователь может видеть фото готового блюда.
  • Пользователь может искать рецепт не в списке названий рецептов, а введя название блюда в поле поиска и нажав кнопку «Поиск». В качестве источника рецептов можно использовать любой рецептный open source API (см. MealDB ниже).
  • Пользователь может видеть список рецептов, совпадающих с искомым словом.
  • Пользователь может кликнуть на название рецепта, чтобы отобразить карточку этого рецепта.
  • Если не найдено совпадений с искомым словом, пользователь должен увидеть соответствующее сообщение.
  • Пользователь может кликнуть на кнопку «Сохранить» на карточке рецепта, выведенного через API, чтобы сохранить копию в файл или базу данных этого приложения.

Полезные ссылки и ресурсы

Примеры проекта

See the Pen React Recipe Box by Katie Inkblotty (@inkblotty) on CodePen.

3. Приложение для рисования

Уровень: средний

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

User Stories

  • Пользователь может рисовать на «холсте», используя мышь.
  • Пользователь может менять цвет, которым рисует.
  • Пользователь может менять размер инструмента.
  • Пользователь может нажать на кнопку, чтобы очистить «холст».

Дополнительный функционал

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

Полезные ссылки и ресурсы

Примеры проектов

4. Переводчик эмодзи

Уровень: средний

Эмодзи стали lingua franca современного общества. Это забавный и быстрый способ коммуникации, а также очень выразительный механизм передачи эмоций и реакций.

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

User Stories

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

Дополнительный функционал

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

Полезные ссылки и ресурсы

Примеры проектов

5. Генератор мемов

Уровень: средний

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

User Stories

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

Дополнительный функционал

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

Полезные ссылки и ресурсы

Работа с холстом становится гораздо проще при применении библиотеки p5js.

Пример проекта

See the Pen Meme Generator by Niels Vadot (@ninivert) on CodePen.

6. Отработка навыков набора текста

Уровень: средний

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

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

Хотелось бы верить, что практика поможет вам улучшить как скорость, так и точность набора текста.

User Stories

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

Дополнительный функционал

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

Полезные ссылки и ресурсы

Пример проекта

7. Лифт

Уровень: продвинутый

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

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

Ограничения

  • Вы должны реализовать один обработчик событий для кнопок «вверх» и «вниз» на каждом этаже. Например, при 4-х этажах нужно реализовать не 8 обработчиков (поскольку на каждом этаже по две кнопки), а единый обработчик событий.
  • Аналогично, для всех кнопок панели управления внутри лифта нужно реализовать единый обработчик событий, а не отдельный для каждой кнопки.

User Stories

  • Пользователь видит план здания с четырьмя этажами, шахтой лифта, лифтом. На первом этаже есть кнопка «вверх», на втором и третьем – кнопки «вверх» и «вниз», на четвертом – кнопка «вниз».
  • Сбоку от плана здания пользователь видит панель управления лифтом с кнопками для каждого этажа.
  • Для вызова лифта пользователь может кликать на кнопки «вверх» и «вниз» на любом этаже.
  • Пользователь ожидает, что его нажатия кнопок для вызова лифта будут обработаны в той последовательности, в которой они нажимались.
  • Пользователь может видеть, как лифт перемещается вверх и вниз по шахте к этажу, на который он был вызван.
  • Пользователь может кликать по панели управления лифтом, чтобы выбрать этаж, на который он хочет поехать.
  • Пользователь ожидает, что лифт подождет 5 секунд, пока он не кликнет на нужную кнопку с номером этажа. Если на кнопку не кликнули за это время, лифт начнет обрабатывать следующий запрос на вызов лифта.
  • Пользователь ожидает, что когда запросы на вызов лифта закончатся, лифт вернется на первый этаж.

Дополнительный функционал

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

Полезные ссылки и ресурсы

Пример проекта

See the Pen Elevator by Arthur Annibal (@nibalAn) on CodePen.

8. Симулятор закусочной

Уровень: продвинутый

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

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

Следует различать роли, указанные в User Stories:

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

Это приложение имеет достаточно много User Stories. Однако не стоит пугаться. Уделите время и сделайте набросок не только пользовательского интерфейса, но и того, каким образом актеры взаимодействуют между собой. Создавайте приложение постепенно, следуя принципам Agile.

Ограничения

  • Бланки заказов могут представлять два различных вида Promises: в первом случае Официант ждет, пока Повар приготовит заказанное, а во втором Посетитель ждет, находясь в очереди на обслуживание.
  • Используйте нативный эквивалент JS Promises в том языке, который вы выбрали для разработки. JS-разработчики должны использовать нативные Promises, а не async/await.
  • Создайте это приложение с помощью нативных функций языка. Нельзя использовать пакеты или библиотеки для моделирования.
  • Новые Посетители приходят и становятся в очередь через определенные промежутки времени. То есть, они прибывают с постоянной скоростью.
  • Бланки заказов заполняются тоже с фиксированной скоростью.

User Stories

Действия в приложении

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

Дополнительный функционал

  • Пользователь может определять, сколько времени требуется Человеку, принимающему заказы, на создание бланка заказа.
  • Пользователь может определять, сколько времени требуется Официанту на то чтобы принести заказ Посетителю.
  • Пользователь может определять общее время работы симулятора от момента нажатия кнопки «Старт».
  • Пользователь может видеть анимированных Посетителей и заказы.

Полезные ссылки и ресурсы

9. Игра в наперстки

Уровень: продвинутый

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

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

User Stories

  • Пользователь может видеть экран с тремя наперстками и горошиной.
  • Пользователь может кликнуть на наперсток, под который должна быть помещена горошина.
  • Пользователь видит, как горошина перемещается под выбранный наперсток.
  • Пользователь может кликнуть на кнопку «Перетасовать», чтобы запустить анимированную перетасовку наперстков в течение 5 секунд.
  • После остановки наперстков пользователь может кликнуть на тот из них, по которым, как он полагает, кроется горошина.
  • Пользователь видит, как наперсток, на который он кликнул, поднимается, чтобы показать, спрятана ли под ним горошина.
  • Пользователь может кликать по наперсткам, пока не найдет горошину.
  • Когда пользователь находит горошину, должно появиться сообщение с поздравлением.
  • Пользователь может начать игру заново, кликнув на наперсток, под которым должна оказаться горошина (шаг №2). После этого все шаги повторяются.

Дополнительный функционал

  • Пользователь видит табло с количеством своих побед и общим числом сыгранных игр.

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

Полезные ссылки и ресурсы

Пример проекта

Заключение

Для поиска других идей посетите вот этот репозиторий и, если вам понравилось, не стесняйтесь ставить «звезды»!

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

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

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

Анестезиолог Кон Коливас разработал собственную версию планировщика задач для ядра 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. Да и само ядро довольно компактное (в сравнении с «нормальными» ОС), поэтому разбираться проще. Хвастался этим на собеседовании, насколько помогло (или наоборот) — не знаю.

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

Сергей Бронников

В компании Odin с 2005 года, начинал как тестировщик Parallels Desktop for Mac, потом с нуля организовал тестирование Virtuozzo и отвечал за тестирование этого продукта последние пять лет. Помимо этого занимался тестированием и выпусков таких продуктов как Containers for Windows и Parallels Server for Mac. В настоящее время занимаюсь открытыми серверными проектами компании Parallels Inc.

Движение Open Source.

Лекция для школьников старших классов «Движение Open Source»

Эпиграф
Сначала они вас игнорируют,
потом смеются над вами,
потом они борются с вами,
а потом вы побеждаете.
Махатма Ганди

Цель:
Дать школьникам представление об Open Source, как о программном обеспечении с открытыми исходными текстами.

Задача:
Дать понятие о закрытых (проприетарных) и открытых (Open Source) исходниках.
Рассказать о философии и об истории появления движения Open Source.
Сформулировать преимущества Open Source программ перед закрытыми программами.

Исходный текст программы — это текстовый файл, написанный на каком-либо языке программирования. Обычно исходный текст программы преобразуется в машинные коды при помощи программы-компилятора. После компиляции программы, если программист оставляет исходники у себя, закрывая их, и отдает только исполняемые файлы, то такие программы называют закрытыми или проприетарными. Но есть и другой путь – вместе с исполняемыми файлами отдавать и исходники. Этот путь – Open Source («открытые исходники»)!

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

Открытость или закрытость?

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

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

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

А теперь переключимся на людей, которые на основе знаний получают новые знания – на ученых. Разве ученые закрывают информацию? Кто-нибудь видел «закрытые» законы Ньютона, для которых нужно получать лицензию на использование? Научные традиции поощряют открытие и опубликование научных работ, чтобы другие ученые сделали свои выводы и в свою очередь либо признали работу, либо отвергли ее из-за ошибок. Благодаря такой открытой схеме, одни учёные опираются на труды других учёных, но в свою очередь подставляют плечи для третьих.

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

История развития свободного программного обеспечения.

История «свободных программ» начинается с одного человека — Ричарда Столлмана (Richard Stallman). Именно он впервые употребил термин «free software» (свободное программное обеспечение) и чётко объяснил его значение. Однако он не считал, что создаёт некую принципиально новую концепцию. До конца 70-х годов значительная часть программного обеспечения разрабатывалась в научных учреждениях — университетах. Университетские традиции редко поощряют сокрытие информации друг от друга. Поэтому программы передавались и модифицировались свободно.

Так было и в лаборатории искусственного интеллекта Массачусетского технологического института (MIT AI Lab), где работал молодой талантливый программист Ричард Столлман. Однажды, в 1980 году, произошло событие, перевернувшее не только жизнь Столлмана, но, возможно, и будущее развитие рынка программного обеспечения.

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

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

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

Вот как описал эту ситуация сам Ричард Столлман: «Я считаю, что золотое правило требует: если мне нравится программа, то я должен поделиться ею с другими, кому она тоже нравится. Продавцы программного обеспечения хотят разделить пользователей и подчинить их себе, делая так, чтобы каждый из них соглашался не делиться с другими. Я отказываюсь нарушать солидарность с другими пользователями таким образом. Я не могу с чистой совестью подписать соглашение о не раскрытии или лицензионное соглашение по программному обеспечению. Во время моей работы в Лаборатории Искусственного Интеллекта я сопротивлялся этим тенденциям и другим препонам, но в конце концов они зашли слишком далеко: я не мог оставаться в институте, где за меня делаются такие вещи против моей воли.»

Когда Столлман решил бороться за изменение ситуации в мире небыло свободных операционных систем. Даже популярная система UNIX была на тот момент закрытой. В 1983 году он начал проект GNU — создание полноценной свободной операционной системы. Операционной системы, которая будет полностью доступна для копирования, изучения и модификации. И хотя продукты GNU приобрели широкую известность, конечная цель «операционная система» оставалась далёкой.

В 1991 году началась разработка ядра операционной системы. Линус Торвальдс, студент университета Хельсинки (Финляндия), решил получше разобраться в работе процессора и для этого создать ядро Unix-подобной операционной системы, которое работало бы на этом процессоре. Он использовал инструментарий, созданный командой GNU; таким образом, проект GNU стал основой для работы Линуса. Ядро, созданное Линусом, стало называться Linux (хотя первоначально он не планировал столь «эгоистичное» название).

Через небольшое время Линус Торвальдс, по предложению Столлмана, стал использовать для распространения Linux лицензию GPL. Эта лицензия и отличное умение Линуса общаться по интернету стали причинами того, что очень скоро над Linux работало немало программистов из многих стран. Уже в 1992 году появились вполне работоспособные версии. Инструменты GNU и ядро Linux вместе составили полную свободную операционную систему.

Работа над Linux стала примером нового способа создания программного обеспечения — совместной работы многочисленных программистов, взаимодействующих через интернет, без какой-либо мощной центральной власти (так называя технология «Базара», в противоположность традиционной централизованной технологии «Собора»).

Рождение Универсальной Общественной Лицензии (GPL).

На протяжении 80-х годов Столлман и некоторые его единомышленники работали над системой GNU. Было создано несколько важных и качественных программ, в частности, качественный компилятор языка C — GCC (GNU C Compiler).

Не менее важной разработкой, чем программы, стало рождение Универсальной Общественной Лицензии, так называемая лицензия GPL. Она была призвана использовать механизм авторских прав на программы, чтобы защитить их от превращения в «собственнические». GPL допускает любое использование и распространение программы и любых её модификаций — включая и коммерческое; однако она требует сохранять свободными все модификации программы, предоставляя их на условиях той же лицензии GPL и делая доступными исходные тексты.
Лицензия GPL гарантирует свободу ПО и далее, гарантирует, что те усилия, которые разработчики вложили в свой продукт не пропадут для них и остальных людей даром — они всегда будут доступны. Проще говоря, GPL делает свободу «защищенной».

Открытые исходники, открытые дороги.

К этому моменту благодаря широкому распространению Windows позиции фирмы MicroSoft стали очень крепкими, и многие конкурирующие фирмы-разработчики программного обеспечения оказались в тяжёлой ситуации, из-за того что фирма MicroSoft внедряла в MS Windows все больше и больше программ, нарушая тем самым антимонопольное законодательство США, делая программы конкурентов не нужными. Многие специалисты считают что продукты фирмы MicroSoft технически несовершенны, а теперь противниками MicroSoft стали и почти поверженные конкуренты. Это противостояние стало причиной начала нового этапа в развитии свободных программ.

Фирма Netscape — создатель программных продуктов для интернета, наиболее известный из которых — WWW-браузер Netscape. К началу 1998 года этот браузер потерял ведущие позиции — лидером стал MicroSoft Internet Explorer, который стал неотделимой частью Windows. Фирма Netscape оказалась под угрозой банкротства. Проект Mozilla — версия браузера Netscape с открытыми исходниками — стал первым, но не последним Open Source проектом, выросшим из коммерческого продукта.

Фирма Sun открыла свою операционную систему Solaris и исходные тексты офисного пакета StarOffice; на его основе создан полноценный свободный пакет OpenOffice. Программный пакет OpenOffice — это свободный пакет, который распространяется вместе с исходными текстами. Пакет OpenOffice содержит в себе текстовый редактор Writer по функциональности не уступающий Word и читающий закрытый формат Word’а *.doc. Табличный редактор Calc по функциональности не уступающий Excel и читающий закрытый формат Excel’а *.xls. Присутствует программа-аналог MS PowerPoint для создания презентаций под названием Impress. Также в пакет OpenOffice входит программа для создания векторных изображений — OpenDraw. Базы данных Base альтернатива MS Access.

Многие корпорации стали заявлять о поддержке Open Source движения. Такие корпорации как IBM, Oracle открыли часть своих проектов и стали финансировать некоторые сторонние Open Source проекты. Google (главный компьютер Земли) построил свой бизнес на Open Source проектах и впоследствии стал помогать своей информационной и финансовой поддержкой.

Открытость и бесплатность.

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

Следует уяснить, что из термина открытые исходники не следует бесплатность ПО.

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

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

Закрытые платные программы называют «коммерческое ПО» (shareware). Открытые платные обычно никак не называют или просто пишут
«ПО с открытыми исходными текстами».

Когда мы говорим Free Software, то мы имеем ввиду свободу программного обеспечения, а не его цену.

Достоинства программ Open Source.

Open Source Software — «свободные» программы, распространяемые без ограничений вместе с исходными текстами, без защиты от копирования, обязательной оплаты лицензии на использование и т.п.

Достоинства продуктов Open Source:
Безопасность. Линусу Торвальдсу приписывают слова: «От тысячи глаз не скроешь ошибку» (Given enough eyeballs, all bugs are shallow). Поскольку благодаря открытости для огромного количества пользователей-специалистов ошибки и проблемы быстро находятся и устраняются, свободные программы оказываются весьма надёжны и защищены (в частности, от несанкционированного доступа).

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

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

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

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

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

5 проектов для фронтенд разработчиков

Канадский разработчик Гаретт Левин, собрал 5 проектов, для начинающих фронтенд разработчиков.

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

Проект 1 – Одностраничная адаптивная верстка

Цель: воссоздать pixel perfect дизайн и решить проблемы адаптивной верстки

The Conquer template это отличная стартовая площадка для новичков. Здесь у новичков будет возможность создать то, что будет действительно не стыдно добавить в портфолио. The Conquer template использует Вootstrap, но не стоит не использовать его при создании проекта. Здесь вы найдете множество задач, с которыми веб-разработчик сталкивается в реальном мире. Он погрузит вас в новые технологии (такие, как flex box и float) и поможет приобрести опыт в разных техниках верстки. Сверстать макет адаптивно – будет дополнительной целью, которая заставит вас попотеть!

Изучайте веб разработку, с помощью онлайн уроков, каждый понедельник и среду в 20:00, на канале: Быстрый старт в веб-разработке (на странице проекта доступный записи всех уроков).

Проект 2 – Многостраничный адаптивный веб-сайт

Цель: воссоздать pixel perfect дизайн и научиться адаптивно верстать сложные макеты

Следующим шагом будет создание адаптивного многостраничного веб-сайта. В сети есть множество бесплатных шаблонов, но достаточно сложно найти действительно хороший. Theme Forest – замечательное место, где вы можете приобрести работы дизайнеров. Помните, вы пытаетесь стать веб-разработчиком, а не дизайнером. Не ждите, что сразу сможете стать и тем, и другим. Много веб-разработчиков не имеют никаких навыков в дизайне и, наоборот, есть много дизайнеров, которые совершенно не умеют программировать. Поэтому сосредоточьтесь на своем выборе, на веб-разработке!

Для более быстрого старта в веб разработке оцените проект: Быстрый старт в веб-разработке

Проект 3 — Маленькая игра-викторина, написанная на языке JavaScript

Цель: Создать простую игру на JavaScript и jQuery.

Особенность изучения JavaScript для начинающих фронтенд разработчиков в том что бывает сложно выбрать проект по своим силам. Отличным вариантом для начинающего веб программиста может стать разработка викторины . Это поможет вам разобраться в Document Object Model. Уровень сложности викторины будет зависеть только от вас. Начните с создания простой игры, в которой будет несколько вопросов с возможностью выбора варианта ответа. Вы узнаете много нового о работе с данными. В этот раз не стоит тратить много времени на дизайн того, что вы создаете. Я бы порекомендовал вам использовать CSS-фреймворк, например: Bootstrap, дабы быстро стилизовать вашу игру.

Проект 4 — Сделайте аналог Giphy, используя открытый API

Цель: Создать веб-приложение, которое использует Giphy’s API

Как только вы получите опыт в работе с DOM и JavaScript, я рекомендую изучить шаблонизацию данных и их отображение в DOM. Отличная цель для начинающих фронтенд разработчиков — создать аналог веб-сайта giphy, используя Giphy API. Я рекомендую их API, потому что у них нет проблем с получением ключа, и форматы запросов-ответов там достаточно простые. Используя их API, создайте небольшое веб-приложение, которое будет делать следующее:

  • Отображать популярные gif-файлы при загрузке приложения
  • Позволять искать определенные gif-файлы
  • Создать кнопку «Загрузить больше»

В процессе разработке этого проекта вы узнаете много нового. Одна из ключевых вещей – работа с асинхронными запросами. Для этого вы можете использовать JavaScript или jQuery. Ваша цель состоит в том, чтобы начать работу с асинхронным кодом. Поскольку ваше приложение будет расти и усложняться, вам нужно подумать о том, как организовать ваш код. Для этого я рекомендую использовать паттерн name spacing.

Проект 5 — Веб-приложение Punk Beer

Цель: Использовать Punk Beer API для создания проекта, использующего шаблонизацию для отображения данных на странице. Попробуйте использовать какой-нибудь фронтенд фреймворк, например, React.

В этом проекте вы также будете работать с API. Punk API не требует ключа для использования и предоставляет много информации в своих ответах.

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

  • Разместите данные на странице из запроса к API
  • Добавьте строку поиска (через отдельный запрос к API)
  • Добавьте функцию «любимый товар»
  • Подключите react router и добавьте функциональность просмотра «любимых товаров»

Решение этих проблем позволит серьезно продвинуться в веб-разработке. Здесь я тоже рекомендую прибегнуть к использованию CSS-фреймворка. Я решил использовал Bulma для данного примера.

Совершенствуйтесь и создавайте

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

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

Новые Open Source проекты

Открытое программное обеспечение стало двигателем инноваций. И в этой статье вы убедитесь в этом. Мы рассмотрим лучшие проекты OpenSource по версии премии Black Duck Open Source Rookies.

Это восьмой выпуск Black Duck Open Source Rookies. Каждый год, Black Duck рассматривает мир свободного программного обеспечения и находит лучшие новые Open Source проекты, которые были реализованы в этом году.

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

Как правило, у лауреатов премии наблюдается три тенденции в отрасли:

  • Использование контейнеров Docker — в предыдущем году, Blcak Duck выбрала технологию Docker в качестве лучшего решения для виртуализации серверов. Экосистема Docker продолжает расширяться, вместе с несколькими проектами, в том числе спонсируемыми Red Hat и Capital One.
  • Рост открытого сотрудничества — Учитывая успех Facebook и Skype для личного обмена сообщениями, было реализовано много подобных решений для офиса. Таких как GoToMeeting или Slack. Теперь запатентованные решения сталкиваются с серьезной конкуренцией со стороны программ с открытым исходным кодом, которые предоставляют те же функции, но полностью открыты.
  • Использование искусственного интеллекта — мы можем быть очень далеко от действительно умных машин, но за глубокими методами обучения, с помощью которых компьютер может научиться путем обработки данных и моделирования нейронных систем, наше будущее.

Rocket.Chat

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

Мастер Йода рекомендует:  Появились Canary-сборки Edge для Windows 7, 8 и 8.1

У RocketChat есть собственные приложения для Linux, Windows, MacOS, а также мобильные приложения для Android и iOS. Здесь даже есть собственное приложения для FirefoxOS, для настольных и мобильных устройств. А поскольку это Open Source проект, то это отличный выбор для разработчиков, жалеющих строить и развивать собственную платформу чата.

Mattermost

Другой отличной альтернативой для Slack есть Mattermost, ее история началась с компании — разработчика игр для HTML 5. Изначально это был игровой портал и приложение для обмена сообщениями, цель которого была найти геймеров за пределами Facebook. В итоге программа была переделана в решение для совместной работы в пределах компании, для таких случаев, когда компания не хочет, чтобы ее данные были получены провайдером. На данный момент — это отличная альтернатива Slack с открытым исходным кодом написанная на React и Go.

Mattermost объединяет все задачи коммуникации в одном месте, через удобный и интуитивно понятный интерфейс, удобный для поиска и доступный везде. Пользователи могут обмениваться сообщениями и файлами с помощью своих компьютеров и смартфонов, сохраняя всю важную информацию внутри ИТ инфраструктуры. Интерфейс Mattermost совместим с Slack и обеспечивает работу программного обеспечения разработанного для Slack. Есть две версии программы — одна рассчитана на работу с командами до 50 человек, а другая позволяет организовывать коммуникации между сотнями и тысячами пользователей.

Hubl.in

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

Hubl.in — свободное решение с открытым исходным кодом, для организации видеоконференций от компании Linagora, создателя платформы для совместной работы — OpenPaaS. Hubl.in поднимает связь в реальном времени на новый уровень, позволяя использовать браузер для организации видеоконференций, даже без каких либо плагинов.

Если вы читаете эту страницу, то вы можете попробовать Hubl.in прямо сейчас. Он основан на WebRTC, что позволяет реализовать децентрализованную связь между браузерами. Это значит, что ваша конференция не передается на Hubl.in никаким способом, это повышает безопасность и обеспечивает еще один уровень секретности.

MXNet

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

MXNet — это легкая библиотека машинного обучения, созданная DMLC разработчиками CXXNet, Minerva, и Purine2. Здесь применен опыт, полученный в этих проектах, а также смешан императивный и символический стиль программирования. MXNet использует планировщик динамических зависимостей, который автоматически паралеллизует как символические, так и императивные операции на лету. Уклон в сторону оптимизации делает MXNet быстрым и потребляющим немного памяти. Библиотека портативная и легкая, она легко масштабируется даже для нескольких машин. Можно даже использовать для таких задач, как распознавание образов на смартфоне. Группа DMLC хочет сделать открытое программное обеспечение широкодоступным. Проект MXNet тоже содержит набор руководств и схем для построения систем машинного обучения.

Bazel

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

Bazel стремится ускорить процесс сборки и повысить надежность за счет общего хранилища кода, в котором все программное обеспечение находится в состоянии открытого исходного кода. Здесь автоматизировано тестирование и релизы, используется как параллельность, так и кеширование, чтобы ускорить обработку. Особенно подходит для проектов с крупными базами кода, на основе нескольких языков программирования или для различных платформ. Основная особенность Bazel — тщательное тестирование в сложных условиях работы в Google. Текущая версия поддерживает Linux, OS X, но не Windows.

React Native

Разработчики мобильных приложений сталкиваются с трудным выбором: разрабатывать приложения для iOS или Android с помощью собственных инструментов, или воспользоваться кроссплатформенными. С одной стороны, родные приложения быстрее и предлагают лучший пользовательский интерфейс. Однако разработка такого приложения, означает — написать его, по крайней мере, два раза на самых разных языках программирования. Кроссплатформенные инструменты, такие как JavaScript позволяют им писать программу только раз, но эти приложения часто работают плохо и выглядят не очень красиво.

React Native — это OpenSource проект с открытым исходным кодом, поддерживаемый Facebook. Он позволяет двигаться сразу в двух направлениях. Создавая свои приложения с помощью библиотеки JavaScript React вы сохраняете логику работы приложений JavaScript, а также пользовательский интерфейс полностью нативный для обоих оболочек iOS и Android. Для разработчиков React Native представляет собой новый подход к написанию мобильных приложений — учиться раз, писать везде.

Kontena

Docker-контейнеры — революционный способ для развертывания приложений. Но многие организации все еще борются за решение для управления контейнерами.

Kontera — проект с открытым исходным кодом, для управления контейнерами. Kontera имеет много новых технологий и возможностей для ускорения развертывания. Здесь есть поддержка нескольких хостов, мульти-AZ контейнеры, сетевая технология Weave, VPN доступ к контейнерам, а также интуитивно понятный мастер развертывания. У Kontera есть все что компании может понадобиться для разработки, развертывания и контроля контейнерных систем. Она может быть установлена в любой облачной инфраструктуре. Поскольку это открытый исходный код, она скоро выйдет за рамки Docker и будет поддерживать контейнеры Windows, CoreOS PKT и другие контейнерные технологии.

Nulecule

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

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

InSpec

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

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


Hygieia

Технологические гиганты не одиноки в инвестировании в свободное программное обеспечение. В этом году Capital One попытались найти панель инструментов для разработчиков, и небыли обнаружены ни коммерческие решения ни OpenSource проекты. Поэтому компания создала собственную — Hygieia. Панель выпущена в прошлом году и ее исходный код опубликован на GitHub.

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

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

Glucosio

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

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

Vault

Компания из Сан-Франциско HashiCorp известна своим инструментом для создания и настройки легкой, портативной среды разработки — Vagrant. Новый проект с открытым исходным кодом этой компании — Vault, инструмент для безопасного управления секретами. Здесь могут находиться ключи, API, пароли, сертификаты, учетные данные сотрудников, и другая секретная информация. У HashiCorp отличные Open Source проекты, можно сказать — так держать.

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

Rancheros

Rancher Labs разработала высокоэффективную технологию запуска контейнеров — операционную систему в миниатюре, со всем необходимым для запуска контейнеров, но ничего больше. RancherOS — это дистрибутив Linux, размером 20 Мб, специально разработанный для простого способа запуска и управления контейнерами Docker. Идея заключается в том, что он похож на CoreOS, Но с одной особенностью — все здесь работает через Docker контейнеры, даже сама операционная система.

В RancherOS Docker работает непосредственно поверх ядра Linux и распределяет все сервисы пользовательского пространства как контейнеры Docker. Экземпляр системы Docker инициализирует все системные службы (Udev, DHCP, TTY) каждая из которых работает в отдельном контейнере. Экземпляр пользователя Docker создает отдельные контейнеры для всех пользователей, в пределах основного контейнера пользователя. RancherOS также обеспечивает обновление через контейнеры и может использовать различные системы управления контейнерами.

OWASP Security Knowledge Framework

OWASP Foundation (Проект Open Web Application Security) — это некоммерческое сообщество, которое предоставляет ресурсы и средства для обеспечения безопасности веб-приложений, которые разрабатывают OpenSource проекты. Многие разработчики не знают о рисках безопасности уязвимостей, с которыми они сталкиваются. С этой целью OWASP SKF (Security Knowledge Framework) обеспечивает свободный инструмент с открытым исходным кодом для обеспечения безопасности веб-приложений. Он также может служить учебным пособием, которое научит основам безопасности в веб-приложениях.

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

Выводы

Это были все новые Open Source проекты, отмеченные премией Black Duck. Награждение происходит каждый год, поэтому новые Open Source проекты за 2020 год мы увидим только в 2020.

Современный JavaScript с нуля на реальных проектах

Курс: «Современный JavaScript с нуля на реальных проектах» . Материал для тех, кто хочет освоить JavaScript. Отзывы отличные! Не забывайте про практику. Курс полностью на русском языке. Материал прислал анонимный пользователь без комментариев.

Материал может быть удален по запросу правообладателя!

Описание курса:

JavaScript — это стремительно развивающийся язык с большим сообществом. Без него не обхоится не один сайт в интернете. JavaScript дает вам множество путей для развития. Зная этот язык, вы можете в будущем изучать различные фреймворки Angular, Vue, React, серверную разработку на Node.js, мобильную разработку React Native, Ionic.

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

  • В первой части вас ждет знакомство с фундаментальными основами JavaScript, 16 презентаций, в каждой по несколько заданий.
  • Во второй части вас ждет знакомство с DOM, событиями, CSS variables, написание первого проекта, 4 презентации и несколько домашних заданий.
  • В третьей части мы будем знакомиться с асинхронным JavaScript, Event loop, AJAX, JSON и напишем второй проект.
  • В четвертой части мы продолжим изучать асинхронный JavaScript, познакомимся с Promises и async/await.
  • В пятой части мы познакомимся с основами ООП, прототипами, классами ES6 и наследованием.
  • В шестой части мы познакомимся с модулями и webpack
  • В седьмой бонусной части будут видео с разбором задач, которые спрашивают на собеседовании а также видео о том как начать работать на фрилансе.

Для кого этот курс:

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

Чему вы научитесь:

  • JavaScript и основы программирования: переменные, логические операторы, if / else, циклы, функции, массивы и т.д
  • Более сложные структуры, такие как this, замыкания, классы, конструкторы, наследование и прототипы
  • Изучим асинхронный JavaScript а именно Event Loop, AJAX, Promises, Async/Await
  • Научимся работать со сторонним API
  • Напишем несколько проектов с использованием ES6+
  • Изучим новые фичи стандарта ES6+
  • Научимся организовывать и структурировать код
  • Бонус. Разбор задач с собеседований и как начать работать на фрилансе.
  • Познакомимся с современным сборщиком Webpack
  • Домашние задания и презентации по основным темам курса

Если Вы не видите ссылку для скачивания материала — отключите блокиратор рекламы и добавьте наш сайт в список исключений. Если Вы против рекламы на нашем сайте — покупайте контент напрямую у авторов.

Страница поста от канала С# Start 1.0

Обращаем внимание, что мы не несем ответственности за содержимое(content) того или иного канала размещенный на нашем сайте так как не мы являемся авторами этой информации и на сайте она размещается в автоматическом режиме

Пожаловаться

Обращаем внимание, что мы не несем ответственности за содержимое(content) того или иного канала размещенный на нашем сайте так как не мы являемся авторами этой информации и на сайте она размещается в автоматическом режиме

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

Если вы интересуетесь жизнью Open Source сообщества и хотите к нему присоединиться, то эта серия подборок придётся вам как нельзя кстати, ведь в ней собраны лучшие проекты с открытым исходным кодом на C#.

Nancy — это легковесный фреймворк для создания HTTP-сервисов на .NET Framework/Core и Mono. Целью фреймворка является как можно более «незаметное» обеспечение взаимодействий в приложений.

Nancy способна обрабатывать запросы DELETE , GET , HEAD , OPTIONS , POST , PUT и PATCH и снабжена простым и элегантным языком Domain Specific Language (DSL). Вот пример приложения:

Репозиторий corefx содержит реализацию .NET Core. Она включает в себя System.Collections, System.IO, System.Xml и другие компоненты. Больше информации можно найти в документации. Сопутствующий репозиторий .NET Core Runtime содержит реализацию среды выполнения CoreCLR для .NET Core.

Roslyn предоставляет C#- и Visual Basic-компиляторы с API для анализа кода, аналогичными инструментам Visual Studio.

DotNetty — это порт Netty, фреймворка для работы с асинхронными сетевыми приложениями и высокопроизводительными протоколами серверов и клиентов.

Cake (C# Make) — это система автоматизации сборки с C# DSL, предназначенная для компиляции кода, копирования файлов и папок, запуска юнит-тестов, сжатия файлов и сборки NuGet-пакетов.

OpenTK — это быстрая низкоуровневая C#-связка OpenGL, OpenGL ES и OpenAL. Она работает на всех основных платформах.

NUnit — это фреймворк для юнит-тестирования для всех языков .NET. Изначально он являлся портом JUnit, но текущая версия была переписана с нуля.

XUnit — это фреймворк, аналогичный предыдущему. Работает с ReSharper, CodeRush, TestDriven.NET и Xamarin.

Json.NET — это персональный проект, целью которого было создание лучшего JSON-сериализатора для .NET.

Topshelf — это фреймворк для хостинга сервисов, написанных на .NET. Создание сервисов упрощено, что позволякет разработчикам создавать простых консольных приложения, которые можно установить в виде сервиса, используя Topshelf. Разумеется, консольные приложения отлаживать куда проще.

MassTransit — это фреймворк для разработки распределённых приложений.

SimpleInjector — библиотека для внедрения зависимостей.

Dapper — это простой маппер объектов в виде NuGet-пакета, которые расширяет интерфейс IDbConnection.

Как принять участие в движении Open Source

Перевод статьи «How to Contribute to Open Source Project».

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

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

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

Зачем разработчику принимать участие в проектах с открытым исходным кодом?

Давайте посмотрим, что может мотивировать программиста поучаствовать в опенсорсном проекте.

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

Во-вторых, open source дает вам хороший старт. Новички могут начать с малого — исправления мелких багов или написания части документации. Принимая участие в опенсорсных проектах, начинающие разработчики будут учиться писать чистый код (т. е., читаемый и поддерживаемый). Когда разработчики понимают, что их код будет выставлен на всеобщее обозрение, они больше фокусируются на том, чтобы этот код было легко понять и поддерживать.

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

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

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

Что следует учесть начинающему контрибутору

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

Язык программирования

Самая важная технология, лежащая в основе любой программы, это язык программирования. Самыми популярными языками на GitHub (платформе для хостинга проектов и совместной работы над ними) являются JavaScript, Python, Java, Ruby и PHP. На этих языках вы найдете множество проектов на любой вкус и цвет.

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

  • Sinatra — библиотека на основе Ruby, помогающая создавать приложения без Rails;
  • Hanami — современный веб-фреймворк, созданный на Ruby;
  • Chef — фреймворк на основе Ruby, используемый для автоматизации работы с сервером;
  • Jruby — второй по популярности интерпретатор Ruby.

Во всех этих проектах пригодится ваша помощь.

Тип проекта

Выбрав язык, следует определиться, над проектом какого типа вы хотели бы работать. На GitHub проекты разбиты по категориям в папках под названием Showcases. Вот несколько примеров Showcases: «безопасность», «виртуальная реальность», «текстовые редакторы», «препроцессоры CSS». Просто выберите тему, которая вас интересует.

Но мы бы посоветовали уделить особое внимание проектам, которые будут использоваться более широкой аудиторией. Таким образом вы сможете протестировать ваш код на настоящей большой аудитории. Например, Showcase «Emoji» содержит 25 репозиториев, что говорит о его популярности.

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

Размер проекта

Крупные проекты вроде VLC Media Player или Spree — с тысячами строк кода — не лучший выбор для новичка. Принимая участие в большом проекте, вы неизбежно столкнетесь с необходимостью следовать жестким правилам, принятым внутри команды этого проекта.

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

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

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

Говоря о свободном ПО, мы не можем не затронуть тему GitHub и прочих инструментов. Давайте рассмотрим, что такое GitHub и как он может помочь вам принять участие в опенсорсных проектах.

Познакомьтесь с GitHub

GitHub это самая популярная платформа для сотрудничества над проектами с открытым исходным кодом, так что, вероятно, именно ее вы будете использовать, исследуя мир open source. Для начала вам нужно создать себе аккаунт и прочесть руководство, которое поможет вам начать пользоваться платформой. На GitHub можно участвовать в проектах, поднимая какие-то вопросы или отправляя туда свой код. Чтобы поднять какую-то тему (Submitting issues), вы отсылаете сообщение об ошибке в приложении и свои предложения по поводу того, как ее исправить. Если вы хотите написать код для проекта, вы отсылаете пул-реквест с вашими исправлениями и улучшениями.

Изучите основы

Для работы с GitHub нужно уметь пользоваться Git — одним из самых популярных инструментов контроля версий. Поскольку разработчики постоянно вносят изменения в свой код, им нужна система для управления этими изменениями в центральном репозитории. Благодаря такой системе каждый, связанный с процессом разработки проекта, сможет скачать код и внести изменения.

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

Вступите в сообщество

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

Пригодятся все навыки

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

Способы стать контрибутором проекта с открытым исходным кодом

Давайте рассмотрим основные пути к участию в проектах.

1. Создайте собственный проект с открытым кодом

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

Задумывая проект, следует ответить (себе) на ряд вопросов:

  • Какие навыки понадобятся вам для работы над этим проектом?
  • Сколько времени вы собираетесь ему посвятить?
  • Какие проблемы решает ваша программа?
  • Как много потенциальных пользователей у вашего будущего продукта?

2. Создайте свободную альтернативу коммерческому ПО

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

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

3. Станьте контрибутором (участником) уже существующих проектов open source

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

Самые «горячие» проекты можно найти по ссылке «Trending». А чтобы сделать поиск более релевантным, используйте развернутый поиск: выберите язык, на котором вы хотели бы писать код, и отметьте критерий «best match». Это расставит проекты в порядке релевантности, с учетом количества форков (их число указывает на активность обновления проекта) и звезд (если применять термины Facebook, то звезды это лайки). В большинстве проектов есть известные проблемы, помеченные метками «баг», «обсуждение», «безопасность», «рефакторинг» и другими метками, указывающими на уровень сложности: «легко», «средней сложности», «сложно».

Заключение

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

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

Движение Open Source.

Лекция для школьников старших классов «Движение Open Source»

Эпиграф
Сначала они вас игнорируют,
потом смеются над вами,
потом они борются с вами,
а потом вы побеждаете.
Махатма Ганди

Цель:
Дать школьникам представление об Open Source, как о программном обеспечении с открытыми исходными текстами.

Задача:
Дать понятие о закрытых (проприетарных) и открытых (Open Source) исходниках.
Рассказать о философии и об истории появления движения Open Source.
Сформулировать преимущества Open Source программ перед закрытыми программами.

Исходный текст программы — это текстовый файл, написанный на каком-либо языке программирования. Обычно исходный текст программы преобразуется в машинные коды при помощи программы-компилятора. После компиляции программы, если программист оставляет исходники у себя, закрывая их, и отдает только исполняемые файлы, то такие программы называют закрытыми или проприетарными. Но есть и другой путь – вместе с исполняемыми файлами отдавать и исходники. Этот путь – Open Source («открытые исходники»)!

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

Открытость или закрытость?

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

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

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

А теперь переключимся на людей, которые на основе знаний получают новые знания – на ученых. Разве ученые закрывают информацию? Кто-нибудь видел «закрытые» законы Ньютона, для которых нужно получать лицензию на использование? Научные традиции поощряют открытие и опубликование научных работ, чтобы другие ученые сделали свои выводы и в свою очередь либо признали работу, либо отвергли ее из-за ошибок. Благодаря такой открытой схеме, одни учёные опираются на труды других учёных, но в свою очередь подставляют плечи для третьих.

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

История развития свободного программного обеспечения.

История «свободных программ» начинается с одного человека — Ричарда Столлмана (Richard Stallman). Именно он впервые употребил термин «free software» (свободное программное обеспечение) и чётко объяснил его значение. Однако он не считал, что создаёт некую принципиально новую концепцию. До конца 70-х годов значительная часть программного обеспечения разрабатывалась в научных учреждениях — университетах. Университетские традиции редко поощряют сокрытие информации друг от друга. Поэтому программы передавались и модифицировались свободно.

Так было и в лаборатории искусственного интеллекта Массачусетского технологического института (MIT AI Lab), где работал молодой талантливый программист Ричард Столлман. Однажды, в 1980 году, произошло событие, перевернувшее не только жизнь Столлмана, но, возможно, и будущее развитие рынка программного обеспечения.

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

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

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

Вот как описал эту ситуация сам Ричард Столлман: «Я считаю, что золотое правило требует: если мне нравится программа, то я должен поделиться ею с другими, кому она тоже нравится. Продавцы программного обеспечения хотят разделить пользователей и подчинить их себе, делая так, чтобы каждый из них соглашался не делиться с другими. Я отказываюсь нарушать солидарность с другими пользователями таким образом. Я не могу с чистой совестью подписать соглашение о не раскрытии или лицензионное соглашение по программному обеспечению. Во время моей работы в Лаборатории Искусственного Интеллекта я сопротивлялся этим тенденциям и другим препонам, но в конце концов они зашли слишком далеко: я не мог оставаться в институте, где за меня делаются такие вещи против моей воли.»

Когда Столлман решил бороться за изменение ситуации в мире небыло свободных операционных систем. Даже популярная система UNIX была на тот момент закрытой. В 1983 году он начал проект GNU — создание полноценной свободной операционной системы. Операционной системы, которая будет полностью доступна для копирования, изучения и модификации. И хотя продукты GNU приобрели широкую известность, конечная цель «операционная система» оставалась далёкой.

В 1991 году началась разработка ядра операционной системы. Линус Торвальдс, студент университета Хельсинки (Финляндия), решил получше разобраться в работе процессора и для этого создать ядро Unix-подобной операционной системы, которое работало бы на этом процессоре. Он использовал инструментарий, созданный командой GNU; таким образом, проект GNU стал основой для работы Линуса. Ядро, созданное Линусом, стало называться Linux (хотя первоначально он не планировал столь «эгоистичное» название).

Через небольшое время Линус Торвальдс, по предложению Столлмана, стал использовать для распространения Linux лицензию GPL. Эта лицензия и отличное умение Линуса общаться по интернету стали причинами того, что очень скоро над Linux работало немало программистов из многих стран. Уже в 1992 году появились вполне работоспособные версии. Инструменты GNU и ядро Linux вместе составили полную свободную операционную систему.

Работа над Linux стала примером нового способа создания программного обеспечения — совместной работы многочисленных программистов, взаимодействующих через интернет, без какой-либо мощной центральной власти (так называя технология «Базара», в противоположность традиционной централизованной технологии «Собора»).

Рождение Универсальной Общественной Лицензии (GPL).

На протяжении 80-х годов Столлман и некоторые его единомышленники работали над системой GNU. Было создано несколько важных и качественных программ, в частности, качественный компилятор языка C — GCC (GNU C Compiler).

Не менее важной разработкой, чем программы, стало рождение Универсальной Общественной Лицензии, так называемая лицензия GPL. Она была призвана использовать механизм авторских прав на программы, чтобы защитить их от превращения в «собственнические». GPL допускает любое использование и распространение программы и любых её модификаций — включая и коммерческое; однако она требует сохранять свободными все модификации программы, предоставляя их на условиях той же лицензии GPL и делая доступными исходные тексты.
Лицензия GPL гарантирует свободу ПО и далее, гарантирует, что те усилия, которые разработчики вложили в свой продукт не пропадут для них и остальных людей даром — они всегда будут доступны. Проще говоря, GPL делает свободу «защищенной».

Открытые исходники, открытые дороги.

К этому моменту благодаря широкому распространению Windows позиции фирмы MicroSoft стали очень крепкими, и многие конкурирующие фирмы-разработчики программного обеспечения оказались в тяжёлой ситуации, из-за того что фирма MicroSoft внедряла в MS Windows все больше и больше программ, нарушая тем самым антимонопольное законодательство США, делая программы конкурентов не нужными. Многие специалисты считают что продукты фирмы MicroSoft технически несовершенны, а теперь противниками MicroSoft стали и почти поверженные конкуренты. Это противостояние стало причиной начала нового этапа в развитии свободных программ.

Фирма Netscape — создатель программных продуктов для интернета, наиболее известный из которых — WWW-браузер Netscape. К началу 1998 года этот браузер потерял ведущие позиции — лидером стал MicroSoft Internet Explorer, который стал неотделимой частью Windows. Фирма Netscape оказалась под угрозой банкротства. Проект Mozilla — версия браузера Netscape с открытыми исходниками — стал первым, но не последним Open Source проектом, выросшим из коммерческого продукта.

Фирма Sun открыла свою операционную систему Solaris и исходные тексты офисного пакета StarOffice; на его основе создан полноценный свободный пакет OpenOffice. Программный пакет OpenOffice — это свободный пакет, который распространяется вместе с исходными текстами. Пакет OpenOffice содержит в себе текстовый редактор Writer по функциональности не уступающий Word и читающий закрытый формат Word’а *.doc. Табличный редактор Calc по функциональности не уступающий Excel и читающий закрытый формат Excel’а *.xls. Присутствует программа-аналог MS PowerPoint для создания презентаций под названием Impress. Также в пакет OpenOffice входит программа для создания векторных изображений — OpenDraw. Базы данных Base альтернатива MS Access.

Многие корпорации стали заявлять о поддержке Open Source движения. Такие корпорации как IBM, Oracle открыли часть своих проектов и стали финансировать некоторые сторонние Open Source проекты. Google (главный компьютер Земли) построил свой бизнес на Open Source проектах и впоследствии стал помогать своей информационной и финансовой поддержкой.

Открытость и бесплатность.

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

Следует уяснить, что из термина открытые исходники не следует бесплатность ПО.

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

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

Закрытые платные программы называют «коммерческое ПО» (shareware). Открытые платные обычно никак не называют или просто пишут
«ПО с открытыми исходными текстами».

Когда мы говорим Free Software, то мы имеем ввиду свободу программного обеспечения, а не его цену.

Достоинства программ Open Source.

Open Source Software — «свободные» программы, распространяемые без ограничений вместе с исходными текстами, без защиты от копирования, обязательной оплаты лицензии на использование и т.п.

Достоинства продуктов Open Source:
Безопасность. Линусу Торвальдсу приписывают слова: «От тысячи глаз не скроешь ошибку» (Given enough eyeballs, all bugs are shallow). Поскольку благодаря открытости для огромного количества пользователей-специалистов ошибки и проблемы быстро находятся и устраняются, свободные программы оказываются весьма надёжны и защищены (в частности, от несанкционированного доступа).

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

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

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

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

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

Как участвовать в open source проектах

Я написал это руководство, чтобы помочь любому присоединяться или выкладывать свои (contributing) open source проекты на GitHub. Одна из причин крутости open source — в желании людей помогать друг другу.

Не важно — программируете ли вы много лет или только начали, есть несколько моментов, которые вам нужно знать, чтобы продуктивно использовать GitHub. Гайдов «как» сделать что-то с технической точки зрения на GitHub множество: на какую кнопку нажать, какие команды запустить и подобное.

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

Читая этот гайд, помните, что нормально (и даже ожидаемо!) делать ошибки. Не нужно запоминать каждую мелочь. Делайте всё возможное и учитесь в процессе.

Гайд предполагает, что вы работаете с JavaScript-модулем, установленным через npm или bower , который размещён на GitHub. Кроме команд, предназначенных для npm или bower , большая часть этого гайда применима к другим платформам и языкам.

Как задавать вопрос

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

Если проект маленький, обычно принято задавать вопросы через отправку issue (см. ниже). Если большой — у них скорее всего есть рассылка или IRC-канал, через которые лучше всего обращаться с вопросами. StackOverflow — также очень хороший ресурс. Когда есть возможность, задавайте вопросы на публичном форуме. Таким образом ответить на вопрос сможет кто угодно, а ответ будет доступен любому человеку с таким же вопросом. Если ничего не работает, можно написать в твиттер или на почту поддержки проекта.

Отправка уведомления о баге (issue)

На GitHub уведомления о багах или улучшениях называются «issues».

Об этом спрашивали раньше?

Перед тем как отправить уведомление, нужно поискать существующие issues. Не забывайте проверять и открытые issues и закрытые. Если вы найдёте issue, который подобен вашему, прочтите всё о нём.

Если issue такой же как у вас, вы можете прокомментировать с дополнениями, чтобы помочь ответственным за проект разработчикам (maintainers) сделать отладку. Добавление комментария автоматически подпишет вас на уведомления по почте, что может быть полезным, когда будут появляться обновления, касающиеся этого issue. Если вам нечего добавить, но вы хотите получать уведомления об обновлениях на почту, вы можете нажать кнопку «watch», которая находится под комментариями.

Нет, никто не спрашивал

Если вы не можете ничего найти в существующих issues, не стесняйтесь отправить свой.

Нужно проверить, что указана версия проекта, так же как и версии связанных с ним приложений. Например, удостоверьтесь, что включили номера версий, выводимые командами node —version и npm list . Если вы заметите, что у вас установлена не последняя версия, используйте npm update и подтвердите, что issue всё ещё присутствует.

Разработчики проекта очень приветствуют тщательные разъяснения. Обычно это помогает им быстрее справиться с проблемой и всем это на руку.

Улучшаем код

Лучший способ — сделать «Fork» (копию) репозитория на GitHub. Это создаст экземпляр-клон репозитория в вашем GitHub аккаунте.

Перед тем как улучшать код, стоит сфокусироваться на том, что вы хотите конкретно сделать.

Каждый коммит должен выполнять что-то одно, а на каждый PR (см. ниже) должно быть одно специфическое улучшение.


Forking

  1. Нажмите на Fork в репозитории
  2. Перейдите в ваш форк внутри вашего аккаунта
  3. Сделайте git clone

Исправление и тестирование

Ок, теперь вы готовы к исправлению кода? Не совсем! Перед тем, как начать редактировать, вам нужно создать ветку (branch). Branch — как альтернативная временная линия. Можете почитать о git ветках тут.

Делаем ветку: git checkout -b something

Если вы пытаетесь починить баг, возможно вам стоит назвать ветку «fix-short-description». Если вы добавляете функциональность, «feat-short-description» — хорошее название. Когда вы меняете что-то в коде, возможно, вам захочется испытать его внутри какого-нибудь приложения или более крупного проекта.

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

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

Коммиты и пуш

Использование собственных изменений

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

Отправка ваших изменений обратно в проект

Вы сделали изменения, протестировали их с git commit и хотите отправить обратно в проект, чтобы они были включены в следующие версии.

На GitHub это делается с помощью отправки «pull request» (PR).

Отправка pull request

Золотое правило отправки pull request — всё выполнять так, как задумали владельцы проекта. Вы не можете читать мысли ответственных за проект, но можете посмотреть, что они делали в прошлом. Оценка этих действий заранее может повысить вероятность принятия ваших изменений.

Проще выражаясь: попытайтесь сымитировать стиль существующего кода. Обращайте внимание на отступы и стиль фигурных скобок в коде. Содержит стиль ранние инструкции return или там их избегают?

Код — не единственное, на что стоит обращать внимание. Заметьте какое время и формат имеют коммиты сообщений. Некоторые проекты используют настоящее время: «fixes the bug». А некоторые прошедшее: «fixed the bug».

Хороший способ проверить это — использовать git log и прочитать последние коммиты.

Что ещё стоит помнить:

Не меняйте номер версии софта (в package.json или bower.json ). Владельцы проекта сами позаботятся об этом, когда будут выпускать новую версию.

Если проект поддерживается корпорацией, возможно у них есть Contributor License Agreement (CLA) для избежания проблем с законом.

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

Если они не отвечают в течение 2 недель, вы можете прокомментировать это, чтобы вынести тему наверх. Чего-нибудь, вроде, «ping @ProjectMaintainer» обычно достаточно. Если даже после этого от них ничего не слышно, электронная почта — хороший способ выйти на контакт.

Команда может ответить тремя возможными способами:

  1. Всё сливается (merge). Ура!
  2. Ответственный за проект просит вас исправить что-то в PR перед тем, как принять вас. Мы обсудим это ниже.
  3. PR закрывается, а ваши изменения не добавлены. Обычно ответственные за проект дают небольшое разъяснение. Если от вас была новая фича, возможно, уже существует способ заставить код делать то, что вы хотите, вы просто этого не заметили. Если исправление бага, возможно, они хотят решить проблему иначе. Не позволяйте трудностям отбить у вас желание продолжать.
Исправление issues в pull request

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

Во-первых, внесите изменения в соответствующие файлы. Добавьте файл с помощью git add , как вы уже делали:

git add some-file

Затем можете изменить свой предыдущий коммит вот так:

git commit —amend

Эта команда помещает ваши поэтапные изменения в предыдущий коммит.

Чтобы обновить коммит в вашем PR, вам нужно выполнить force push:

Команда —force сообщает git , что вы хотите перезаписать предыдущий коммит.

Другая распространенная ошибка — создание нескольких коммитов, вместо внесения изменений в один.

Мой PR был закрыт, но я хочу использовать свои изменения!

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

А ещё вы можете использовать свои изменения и одновременно видеть изменения исходного кода репозитория. Обычно это называется «maintaining a fork» (поддержка копии) проекта. Для этого потребуется добавить ещё один remote.

Создание своего проекта

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

Поиск по существующим проектам

Иногда вы находите старый проект, который больше не поддерживается, но он решает ваши проблемы. Как делать форк смотрите выше.

Бонус: Составляйте список заметок по ходу работы. Если найдете понравившийся модуль, можете использовать заметки, чтобы улучшить секцию «See Also» в тех модулях, которые вам встретились, пока вы вели поиск, отправив им PR. Если не найдёте нужный модуль и не создадите свой собственный, можете превратить эти заметки в секцию «See Also» для своего модуля!

Начало проекта

Начало нового open source проекта должно быть крайней мерой. Почему?

Практический опыт: Не публикуйте ничего в npm пока у проекта не будет обоснованной минимальной функциональности.

Помните: вы всегда можете использовать npm link или npm install user/repo

Название проекта

Если ваш модуль — это плагин, обычно лучший способ — сделать для него префикс, в зависимости от того для чего этот плагин. В некоторых проектах есть гайды или соглашения как это делать. Например компоненты AngularJS обычно называются «angular-something», плагины Gulp —»gulp-something», а плагины Karma — «karma-something».

Пишем Readme

Хороший readme должен состоять из следующих частей:

  • Объяснение, которое умещается в одно предложение.
  • Установка (Install)
  • Смотрите так же (See Also)

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

Пишем тесты

Есть много способов писать тесты. Их важность в том, что если они провалятся, процесс будет существовать с кодом ошибки. Вы можете использовать для этого assert или if (condition) < process.exit(1) >.

Бонус: вы используете инструмент CI вроде TravisCI.

Публикация в npm

  1. Вы написали README.md , который объясняет что делает модуль. Он должен включать секцию See Also , которая ведёт на другие подобные пакеты.
  2. Вы написали тесты. Тесты должны запускаться с помощью npm test , и они должны проходить.

Бонус: Найдите кого-нибудь, кто будет содействовать в поддержке проекта. Отлично, если кто-то может помочь делать ревью issues и мёрджить PR. Невозможно угадать, как много свободного времени у вас будет в будущем. Обидно иметь непочиненные баги или несмёрженные PR в полезном проекте.

Этикет

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

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

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

Предполагать, что все делают всё возможное

эта задача должна быть очевидной для решения! почему её никто не решил?

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

Одна из мощных сторон open source как раз в том, что вы всегда можете сделать копию и отладить ошибки сами.

вы очевидно не понимаете, о чём я говорю!

Такой тип комментария особенно отталкивает новичков. Совершать ошибки должно быть абсолютно приемлемым.

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

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

Заключение

Спасибо за то, что прочитали. Надеюсь этот гайд поможет вам получить то, чего вы хотели от open source. А применить полученные знания помогут open source проекты «Хекслета»:

  • Hexlet Резюме. Сервис для соискателей и эйчаров, работает на Ruby on Rails.
  • Hexlet Interview. Проект на Node.js для специалистов, которые хотят пройти публичное собеседование или попрактиковаться в проведении собеседований.
  • Hexlet СИКП. Проект на Laravel. Это трекер прохождения курсов СИКП.
  • Hexlet Correction. Проект на Java. Сервис для отправки сообщений об ошибках и опечатках владельцам сайтов.
  • Codebattle. Площадка для поединков между программистами. Используются Clojure и Elixir, а также JS (React, Redux) на фронтенде.
  • Code Basics. Основы программирования для начинающих. Можно создавать обучающие курсы для новичков.

Фронтендерам на заметку: для вас найдутся задачи в каждом из проектов.

Open Source проекты

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

25.09.2009, 17:45

Open source. да или нет
Хочу получить совет, ситуацию опишу на таком примере: представим ситуацию, что проект OpenOffice.

Как поучаствовать в open source проекте
Хотел бы поучаствовать в open source проекте. Как правильно начать? Я нашел много проектов здесь.

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

Желает ли кто учавствовать в Open Source проекте схемотехнического САПР?
Описания проекта нет в цифровом виде. В САПР хочется заложить следующие возможности 1. создание.

Единомышленники для написания open-source проекта на языке программирования C
Добрый день! На текущий момент являюсь студентом 4-го курса БГТУ, город Санкт-Петербург. В.

10 навыков, которые нужно освоить, чтобы получить работу front-end разработчика

Если вы хотите сменить свою специальность, чтобы получить новую, более высокооплачиваемую работу, сфера IT и front end подходят для этого как нельзя лучше.

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

Сейчас я хочу сосредоточиться на front-end разработке. Если говорить обобщенно, front-end разработчики пишут сайты, используя HTML , CSS и JavaScript . Они же реализуют готовый дизайн на сайте.

Быстрый обзор текущих вакансий для front-end разработчиков показывает, что существует четкий набор навыков, которые указывают работодатели. Например, списки требований первых трех вакансий для front-end разработчиков, которые я нашел на Glassdoor.com , во многом идентичны: знания HTML , CSS и Javascript , контроль версий, фреймворки.

Это термины, с которыми вы познакомитесь, когда начнете изучать front-end разработку. Ниже приводится список 10 основных навыков, необходимых каждому front-end разработчику.

1. HTML / CSS

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

CSS ( каскадные таблицы стилей ) — это язык, используемый для представления документа, созданного с помощью HTML . CSS используется для определения макета страницы, цветов, шрифтов и других стилей!

2. JavaScript / jQuery

Еще одним основным инструментом в арсенале начинающего front end разработчика должен стать JavaScript ( JS ). Если HTML — это язык разметки, а CSS — язык стилей, то JS — это язык программирования. Если HTML и CSS определяют представление страницы, JS определяет ее функционал.

Для простых сайтов или веб-страниц достаточно будет HTML/CSS . Но для интерактивных функций ( аудио и видео, игры, прокрутка, анимация страниц ) понадобится JS .

Одна интересная вещь, которую следует знать о JS — это наличие библиотек, таких как jQuery . Библиотеки — это коллекции плагинов и расширений, которые позволяют проще и быстрее использовать JS на сайте.

JQuery принимает общие задачи, для реализации которых требуется несколько строк JS-кода , и сжимает их так, чтобы это можно было сделать с помощью одной строки.

3. CSS и JavaScript-фреймворки

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

Front end разработка и что это сложно свидетельствует тот факт, что у фреймворков есть свои сильные и слабые стороны. Например, некоторые JS-фреймворки отлично подходят для создания сложных пользовательских интерфейсов, а другие — для отображения содержимого сайта.

Чтобы еще больше все упростить, можно использовать фреймворки совместно. Обычно используется пара Bootstrap с другим JavaScript-фреймворком , таким как AngularJS . Содержимое обрабатывает Angular , а внешний вид — Bootstrap ( с некоторым изменениями в CSS ).

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

4. Препроцессинг CSS

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

Используя препроцессоры CSS , такие как Sass , LESS или Stylus , можно писать код на языке препроцессора, доверяя ему делать то, что может занять много времени при использовании CSS . Затем препроцессор преобразует код в CSS , чтобы он работал на сайте.

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

5. Контроль версий / Git

После написания кода HTML , CSS и программирования на JS front end web developer должен будет произвести ревизию проделанной работы. Если что-то пошло не так, последнее, что вам захочется, это начинать все с начала. Контроль версий — это процесс отслеживания и контроля изменений в исходном коде.

Программное обеспечение для управления версиями, такое как Open Source Stalwart Git — это инструмент для отслеживания изменений, чтобы иметь возможность вернуться к предыдущей версии и выяснить, что пошло не так.

6. Адаптивный дизайн

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

Адаптивный дизайн является неотъемлемой частью фреймворков CSS , таких как упомянутый выше Bootstrap .

7. Тестирование / отладка

Чтобы заставить все работать надлежащим образом, нужно тестировать код на наличие ошибок. Поэтому навыки тестирования и отладки являются обязательными для front-end разработчиков.

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

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

Тестирование — важная часть процесса разработки front end на Java . Но это еще одна область, для которой существуют различные фреймворки, которые помогут вам. Такие программы, как Mocha и Jasmine , предназначены для ускорения и упрощения процесса тестирования.

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

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

Встроенные в современные браузеры инструменты для разработчиков обычно состоят из инспектора и консоли JavaScript . Инспектор позволяет увидеть, как выглядит HTML-код на странице, какой CSS связан с конкретным элементом на странице. А также позволяет редактировать HTML и CSS , просматривать произошедшие изменения в режиме реального времени.

Консоль JS позволяет просматривать ошибки, возникающие при попытке браузера выполнить JS-код .

9. Инструменты для построения и автоматизации / производительности

Производительность сайта зависит от количества времени, которое требуется для его загрузки. Если при front end программировании возникли проблемы со временем выполнения, необходимо предпринять шаги для их решения. Например, оптимизация изображений ( масштабирование и сжатие изображений для максимальной производительности ), минимизация CSS и JavaScript ( удаление ненужных символов из кода без изменения функционала ).

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

10. Командная строка

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

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

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

Не останавливайтесь в совершенствовании своих профессиональных навыков!

Данная публикация представляет собой перевод статьи « 10 Skills You Need to Land Your First Front End Developer Job » , подготовленной дружной командой проекта Интернет-технологии.ру

5 проектов для фронтенд разработчиков

Канадский разработчик Гаретт Левин, собрал 5 проектов, для начинающих фронтенд разработчиков.

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

Проект 1 – Одностраничная адаптивная верстка

Цель: воссоздать pixel perfect дизайн и решить проблемы адаптивной верстки

The Conquer template это отличная стартовая площадка для новичков. Здесь у новичков будет возможность создать то, что будет действительно не стыдно добавить в портфолио. The Conquer template использует Вootstrap, но не стоит не использовать его при создании проекта. Здесь вы найдете множество задач, с которыми веб-разработчик сталкивается в реальном мире. Он погрузит вас в новые технологии (такие, как flex box и float) и поможет приобрести опыт в разных техниках верстки. Сверстать макет адаптивно – будет дополнительной целью, которая заставит вас попотеть!

Изучайте веб разработку, с помощью онлайн уроков, каждый понедельник и среду в 20:00, на канале: Быстрый старт в веб-разработке (на странице проекта доступный записи всех уроков).

Проект 2 – Многостраничный адаптивный веб-сайт

Цель: воссоздать pixel perfect дизайн и научиться адаптивно верстать сложные макеты

Следующим шагом будет создание адаптивного многостраничного веб-сайта. В сети есть множество бесплатных шаблонов, но достаточно сложно найти действительно хороший. Theme Forest – замечательное место, где вы можете приобрести работы дизайнеров. Помните, вы пытаетесь стать веб-разработчиком, а не дизайнером. Не ждите, что сразу сможете стать и тем, и другим. Много веб-разработчиков не имеют никаких навыков в дизайне и, наоборот, есть много дизайнеров, которые совершенно не умеют программировать. Поэтому сосредоточьтесь на своем выборе, на веб-разработке!

Для более быстрого старта в веб разработке оцените проект: Быстрый старт в веб-разработке

Проект 3 — Маленькая игра-викторина, написанная на языке JavaScript

Цель: Создать простую игру на JavaScript и jQuery.

Особенность изучения JavaScript для начинающих фронтенд разработчиков в том что бывает сложно выбрать проект по своим силам. Отличным вариантом для начинающего веб программиста может стать разработка викторины . Это поможет вам разобраться в Document Object Model. Уровень сложности викторины будет зависеть только от вас. Начните с создания простой игры, в которой будет несколько вопросов с возможностью выбора варианта ответа. Вы узнаете много нового о работе с данными. В этот раз не стоит тратить много времени на дизайн того, что вы создаете. Я бы порекомендовал вам использовать CSS-фреймворк, например: Bootstrap, дабы быстро стилизовать вашу игру.

Проект 4 — Сделайте аналог Giphy, используя открытый API

Цель: Создать веб-приложение, которое использует Giphy’s API

Как только вы получите опыт в работе с DOM и JavaScript, я рекомендую изучить шаблонизацию данных и их отображение в DOM. Отличная цель для начинающих фронтенд разработчиков — создать аналог веб-сайта giphy, используя Giphy API. Я рекомендую их API, потому что у них нет проблем с получением ключа, и форматы запросов-ответов там достаточно простые. Используя их API, создайте небольшое веб-приложение, которое будет делать следующее:

  • Отображать популярные gif-файлы при загрузке приложения
  • Позволять искать определенные gif-файлы
  • Создать кнопку «Загрузить больше»

В процессе разработке этого проекта вы узнаете много нового. Одна из ключевых вещей – работа с асинхронными запросами. Для этого вы можете использовать JavaScript или jQuery. Ваша цель состоит в том, чтобы начать работу с асинхронным кодом. Поскольку ваше приложение будет расти и усложняться, вам нужно подумать о том, как организовать ваш код. Для этого я рекомендую использовать паттерн name spacing.

Проект 5 — Веб-приложение Punk Beer

Цель: Использовать Punk Beer API для создания проекта, использующего шаблонизацию для отображения данных на странице. Попробуйте использовать какой-нибудь фронтенд фреймворк, например, React.

В этом проекте вы также будете работать с API. Punk API не требует ключа для использования и предоставляет много информации в своих ответах.

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

  • Разместите данные на странице из запроса к API
  • Добавьте строку поиска (через отдельный запрос к API)
  • Добавьте функцию «любимый товар»
  • Подключите react router и добавьте функциональность просмотра «любимых товаров»

Решение этих проблем позволит серьезно продвинуться в веб-разработке. Здесь я тоже рекомендую прибегнуть к использованию CSS-фреймворка. Я решил использовал Bulma для данного примера.

Совершенствуйтесь и создавайте

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

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

Новые Open Source проекты

Открытое программное обеспечение стало двигателем инноваций. И в этой статье вы убедитесь в этом. Мы рассмотрим лучшие проекты OpenSource по версии премии Black Duck Open Source Rookies.

Это восьмой выпуск Black Duck Open Source Rookies. Каждый год, Black Duck рассматривает мир свободного программного обеспечения и находит лучшие новые Open Source проекты, которые были реализованы в этом году.

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

Как правило, у лауреатов премии наблюдается три тенденции в отрасли:

  • Использование контейнеров Docker — в предыдущем году, Blcak Duck выбрала технологию Docker в качестве лучшего решения для виртуализации серверов. Экосистема Docker продолжает расширяться, вместе с несколькими проектами, в том числе спонсируемыми Red Hat и Capital One.
  • Рост открытого сотрудничества — Учитывая успех Facebook и Skype для личного обмена сообщениями, было реализовано много подобных решений для офиса. Таких как GoToMeeting или Slack. Теперь запатентованные решения сталкиваются с серьезной конкуренцией со стороны программ с открытым исходным кодом, которые предоставляют те же функции, но полностью открыты.
  • Использование искусственного интеллекта — мы можем быть очень далеко от действительно умных машин, но за глубокими методами обучения, с помощью которых компьютер может научиться путем обработки данных и моделирования нейронных систем, наше будущее.

Rocket.Chat

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

У RocketChat есть собственные приложения для Linux, Windows, MacOS, а также мобильные приложения для Android и iOS. Здесь даже есть собственное приложения для FirefoxOS, для настольных и мобильных устройств. А поскольку это Open Source проект, то это отличный выбор для разработчиков, жалеющих строить и развивать собственную платформу чата.


Mattermost

Другой отличной альтернативой для Slack есть Mattermost, ее история началась с компании — разработчика игр для HTML 5. Изначально это был игровой портал и приложение для обмена сообщениями, цель которого была найти геймеров за пределами Facebook. В итоге программа была переделана в решение для совместной работы в пределах компании, для таких случаев, когда компания не хочет, чтобы ее данные были получены провайдером. На данный момент — это отличная альтернатива Slack с открытым исходным кодом написанная на React и Go.

Mattermost объединяет все задачи коммуникации в одном месте, через удобный и интуитивно понятный интерфейс, удобный для поиска и доступный везде. Пользователи могут обмениваться сообщениями и файлами с помощью своих компьютеров и смартфонов, сохраняя всю важную информацию внутри ИТ инфраструктуры. Интерфейс Mattermost совместим с Slack и обеспечивает работу программного обеспечения разработанного для Slack. Есть две версии программы — одна рассчитана на работу с командами до 50 человек, а другая позволяет организовывать коммуникации между сотнями и тысячами пользователей.

Hubl.in

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

Hubl.in — свободное решение с открытым исходным кодом, для организации видеоконференций от компании Linagora, создателя платформы для совместной работы — OpenPaaS. Hubl.in поднимает связь в реальном времени на новый уровень, позволяя использовать браузер для организации видеоконференций, даже без каких либо плагинов.

Если вы читаете эту страницу, то вы можете попробовать Hubl.in прямо сейчас. Он основан на WebRTC, что позволяет реализовать децентрализованную связь между браузерами. Это значит, что ваша конференция не передается на Hubl.in никаким способом, это повышает безопасность и обеспечивает еще один уровень секретности.

MXNet

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

MXNet — это легкая библиотека машинного обучения, созданная DMLC разработчиками CXXNet, Minerva, и Purine2. Здесь применен опыт, полученный в этих проектах, а также смешан императивный и символический стиль программирования. MXNet использует планировщик динамических зависимостей, который автоматически паралеллизует как символические, так и императивные операции на лету. Уклон в сторону оптимизации делает MXNet быстрым и потребляющим немного памяти. Библиотека портативная и легкая, она легко масштабируется даже для нескольких машин. Можно даже использовать для таких задач, как распознавание образов на смартфоне. Группа DMLC хочет сделать открытое программное обеспечение широкодоступным. Проект MXNet тоже содержит набор руководств и схем для построения систем машинного обучения.

Bazel

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

Bazel стремится ускорить процесс сборки и повысить надежность за счет общего хранилища кода, в котором все программное обеспечение находится в состоянии открытого исходного кода. Здесь автоматизировано тестирование и релизы, используется как параллельность, так и кеширование, чтобы ускорить обработку. Особенно подходит для проектов с крупными базами кода, на основе нескольких языков программирования или для различных платформ. Основная особенность Bazel — тщательное тестирование в сложных условиях работы в Google. Текущая версия поддерживает Linux, OS X, но не Windows.

React Native

Разработчики мобильных приложений сталкиваются с трудным выбором: разрабатывать приложения для iOS или Android с помощью собственных инструментов, или воспользоваться кроссплатформенными. С одной стороны, родные приложения быстрее и предлагают лучший пользовательский интерфейс. Однако разработка такого приложения, означает — написать его, по крайней мере, два раза на самых разных языках программирования. Кроссплатформенные инструменты, такие как JavaScript позволяют им писать программу только раз, но эти приложения часто работают плохо и выглядят не очень красиво.

React Native — это OpenSource проект с открытым исходным кодом, поддерживаемый Facebook. Он позволяет двигаться сразу в двух направлениях. Создавая свои приложения с помощью библиотеки JavaScript React вы сохраняете логику работы приложений JavaScript, а также пользовательский интерфейс полностью нативный для обоих оболочек iOS и Android. Для разработчиков React Native представляет собой новый подход к написанию мобильных приложений — учиться раз, писать везде.

Kontena

Docker-контейнеры — революционный способ для развертывания приложений. Но многие организации все еще борются за решение для управления контейнерами.

Kontera — проект с открытым исходным кодом, для управления контейнерами. Kontera имеет много новых технологий и возможностей для ускорения развертывания. Здесь есть поддержка нескольких хостов, мульти-AZ контейнеры, сетевая технология Weave, VPN доступ к контейнерам, а также интуитивно понятный мастер развертывания. У Kontera есть все что компании может понадобиться для разработки, развертывания и контроля контейнерных систем. Она может быть установлена в любой облачной инфраструктуре. Поскольку это открытый исходный код, она скоро выйдет за рамки Docker и будет поддерживать контейнеры Windows, CoreOS PKT и другие контейнерные технологии.

Nulecule

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

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

InSpec

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

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

Hygieia

Технологические гиганты не одиноки в инвестировании в свободное программное обеспечение. В этом году Capital One попытались найти панель инструментов для разработчиков, и небыли обнаружены ни коммерческие решения ни OpenSource проекты. Поэтому компания создала собственную — Hygieia. Панель выпущена в прошлом году и ее исходный код опубликован на GitHub.

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

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

Glucosio

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

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

Vault

Компания из Сан-Франциско HashiCorp известна своим инструментом для создания и настройки легкой, портативной среды разработки — Vagrant. Новый проект с открытым исходным кодом этой компании — Vault, инструмент для безопасного управления секретами. Здесь могут находиться ключи, API, пароли, сертификаты, учетные данные сотрудников, и другая секретная информация. У HashiCorp отличные Open Source проекты, можно сказать — так держать.

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

Rancheros

Rancher Labs разработала высокоэффективную технологию запуска контейнеров — операционную систему в миниатюре, со всем необходимым для запуска контейнеров, но ничего больше. RancherOS — это дистрибутив Linux, размером 20 Мб, специально разработанный для простого способа запуска и управления контейнерами Docker. Идея заключается в том, что он похож на CoreOS, Но с одной особенностью — все здесь работает через Docker контейнеры, даже сама операционная система.

В RancherOS Docker работает непосредственно поверх ядра Linux и распределяет все сервисы пользовательского пространства как контейнеры Docker. Экземпляр системы Docker инициализирует все системные службы (Udev, DHCP, TTY) каждая из которых работает в отдельном контейнере. Экземпляр пользователя Docker создает отдельные контейнеры для всех пользователей, в пределах основного контейнера пользователя. RancherOS также обеспечивает обновление через контейнеры и может использовать различные системы управления контейнерами.

OWASP Security Knowledge Framework

OWASP Foundation (Проект Open Web Application Security) — это некоммерческое сообщество, которое предоставляет ресурсы и средства для обеспечения безопасности веб-приложений, которые разрабатывают OpenSource проекты. Многие разработчики не знают о рисках безопасности уязвимостей, с которыми они сталкиваются. С этой целью OWASP SKF (Security Knowledge Framework) обеспечивает свободный инструмент с открытым исходным кодом для обеспечения безопасности веб-приложений. Он также может служить учебным пособием, которое научит основам безопасности в веб-приложениях.

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

Выводы

Это были все новые Open Source проекты, отмеченные премией Black Duck. Награждение происходит каждый год, поэтому новые Open Source проекты за 2020 год мы увидим только в 2020.

5 ключевых навыков для развития образовательного онлайн-проекта

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

26 июля прошла онлайн-конференция EdMarket Skills Puzzle, организованная EdMarket и «Нетология-групп». Акселератор онлайн-школ Accel выступил информационным партнёром мероприятия. Спикер конференции Алёна Владимирская, основатель сервиса поиска работы «Антирабство», рассказала, как сложить пазл ролей в образовательном проекте.

Миф о технологиях

Подбор кадров для образовательных проектов — один из распространенных запросов на рынке рекрутинга. По опыту Владимирской, большие корпорации или инвесторы, которые вкладывают деньги в какой-то небольшой образовательный проект, или просто команды верят в миф: технологии — это главное.

Мастер Йода рекомендует:  Что такое «хлебные крошки» для wordpress и зачем они нужны

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

У любого образовательного проекта есть цель.

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

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

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

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

  1. У вас есть большой корпоративный университет, работу которого сторонняя платформа уже не может поддерживать (например, корпоративный университет Сбербанка).
  2. Вы собираетесь продать свой образовательный проект инвестору или венчурному фонду. В этом случае платформа поможет увеличить капитализацию, повысить его стоимость.

Основные навыки для развития образовательного онлайн-проекта

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

Точно выбирайте бизнес-нишу и ищите специалистов, которые имеют связи и опыт работы в ней.

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

2. Четкая и качественная методология. Ее отсутствие — одна из ключевых проблем на рынке онлайн-образования. Многие образовательные проекты не имеют выстроенной методологии. Поэтому обучение часто зависит от настроения эксперта, его занятости, количества слушателей в группе и других обстоятельств. В результате уровень качества нестабилен.

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

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

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

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

4. Тренды. Часто один и тот же успешный курс проводят без изменений в течение нескольких лет. Жизнь меняется, а продукт остается прежним. Любой образовательный продукт нуждается в апгрейде. Частота обновлений зависит от отрасли и может доходить до 30-40% каждые полгода. Для этого нужен эксперт, который умеет отслеживать тренды, мониторит конкурентов, понимает ценообразование, разбирается в новых технологиях.

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

Онлайн-школа становится бизнесом только тогда, когда в ней есть люди, разбирающиеся в вопросах монетизации. Однако, на рынке онлайн-образования таких людей мало и их приходится привлекать с других рынков. По опыту Алёны Владимирской, на таких должностях задерживаются люди из Gamedev, с рекламного рынка (те, кто делал спецпроекты) и не приживаются люди из ритейла.

Основные роли в образовательном онлайн-проекте

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

  1. экспертность,
  2. методика,
  3. работа с коммьюнити,
  4. монетизация.
  1. эксперта,
  2. методиста,
  3. коммьюнити-менеджера,
  4. монетизатора.

Уже потом на эти компетенции накладываются технологии.

Откуда брать людей в команду?

По словам Алёны Владимирской, для корпоративного рынка онлайн-образования подходят люди из HR-сферы. Из них выходят руководители проектов и методологи, потому что эйчары хорошо знают среду и понимают заказчика. Еще можно рассматривать кандидатов из PR и маркетинга.

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

В монетизации хорошо реализуются специалисты из игровой отрасли.

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

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

Итак, основные источники найма сотрудников для образовательных онлайн-проектов:

  • HR,
  • продюсеры с медиарынка,
  • рекламная отрасль,
  • и люди из любых интернет-проектов.

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

Если вы интересуетесь жизнью Open Source сообщества и хотите к нему присоединиться, то эта серия подборок придётся вам как нельзя кстати, ведь в ней собраны лучшие проекты с открытым исходным кодом на C#.

Nancy — это легковесный фреймворк для создания HTTP-сервисов на .NET Framework/Core и Mono. Целью фреймворка является как можно более «незаметное» обеспечение взаимодействий в приложений.

Nancy способна обрабатывать запросы DELETE , GET , HEAD , OPTIONS , POST , PUT и PATCH и снабжена простым и элегантным языком Domain Specific Language (DSL). Вот пример приложения:

Репозиторий corefx содержит реализацию .NET Core. Она включает в себя System.Collections, System.IO, System.Xml и другие компоненты. Больше информации можно найти в документации. Сопутствующий репозиторий .NET Core Runtime содержит реализацию среды выполнения CoreCLR для .NET Core.

Roslyn предоставляет C#- и Visual Basic-компиляторы с API для анализа кода, аналогичными инструментам Visual Studio.

DotNetty — это порт Netty, фреймворка для работы с асинхронными сетевыми приложениями и высокопроизводительными протоколами серверов и клиентов.

Cake (C# Make) — это система автоматизации сборки с C# DSL, предназначенная для компиляции кода, копирования файлов и папок, запуска юнит-тестов, сжатия файлов и сборки NuGet-пакетов.

OpenTK — это быстрая низкоуровневая C#-связка OpenGL, OpenGL ES и OpenAL. Она работает на всех основных платформах.

NUnit — это фреймворк для юнит-тестирования для всех языков .NET. Изначально он являлся портом JUnit, но текущая версия была переписана с нуля.

XUnit — это фреймворк, аналогичный предыдущему. Работает с ReSharper, CodeRush, TestDriven.NET и Xamarin.

Json.NET — это персональный проект, целью которого было создание лучшего JSON-сериализатора для .NET.

Topshelf — это фреймворк для хостинга сервисов, написанных на .NET. Создание сервисов упрощено, что позволякет разработчикам создавать простых консольных приложения, которые можно установить в виде сервиса, используя Topshelf. Разумеется, консольные приложения отлаживать куда проще.

MassTransit — это фреймворк для разработки распределённых приложений.

SimpleInjector — библиотека для внедрения зависимостей.

Dapper — это простой маппер объектов в виде NuGet-пакета, которые расширяет интерфейс IDbConnection.

Посоветуйте open source проект

21.07.2011, 11:09

Посоветуйте open source на C++
Какие программы с открытым исходным кодом полезно будет изучить продвинутому кодеру? Но желательно.

Error C1083: Cannot open source file: ‘Source.cpp’: No such file or directory
Помогите плз. неделю сражаюсь с VS 2013 и не могу даже запустить простейшую «hello» (((.

Open source игра
Можете поделится ссылками на небольшие open source игры? Желательно с использованием openGL и glut.

Есть ли русскоязычные open source сайты?
Т.е. такие сайты, где разрабатывают сугубо русскоязычные приложения(точнее сказать изначально.

О комментариях Open Source лицензий (GNU LGPL)
Здравствуйте! Хочу выложить свою библиотеку в свободный доступ под лицензией GNU LGPL, но.

Страница поста от канала С# Start 1.0

Обращаем внимание, что мы не несем ответственности за содержимое(content) того или иного канала размещенный на нашем сайте так как не мы являемся авторами этой информации и на сайте она размещается в автоматическом режиме

Пожаловаться

Обращаем внимание, что мы не несем ответственности за содержимое(content) того или иного канала размещенный на нашем сайте так как не мы являемся авторами этой информации и на сайте она размещается в автоматическом режиме

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

Если вы интересуетесь жизнью Open Source сообщества и хотите к нему присоединиться, то эта серия подборок придётся вам как нельзя кстати, ведь в ней собраны лучшие проекты с открытым исходным кодом на C#.

Nancy — это легковесный фреймворк для создания HTTP-сервисов на .NET Framework/Core и Mono. Целью фреймворка является как можно более «незаметное» обеспечение взаимодействий в приложений.

Nancy способна обрабатывать запросы DELETE , GET , HEAD , OPTIONS , POST , PUT и PATCH и снабжена простым и элегантным языком Domain Specific Language (DSL). Вот пример приложения:

Репозиторий corefx содержит реализацию .NET Core. Она включает в себя System.Collections, System.IO, System.Xml и другие компоненты. Больше информации можно найти в документации. Сопутствующий репозиторий .NET Core Runtime содержит реализацию среды выполнения CoreCLR для .NET Core.

Roslyn предоставляет C#- и Visual Basic-компиляторы с API для анализа кода, аналогичными инструментам Visual Studio.

DotNetty — это порт Netty, фреймворка для работы с асинхронными сетевыми приложениями и высокопроизводительными протоколами серверов и клиентов.

Cake (C# Make) — это система автоматизации сборки с C# DSL, предназначенная для компиляции кода, копирования файлов и папок, запуска юнит-тестов, сжатия файлов и сборки NuGet-пакетов.

OpenTK — это быстрая низкоуровневая C#-связка OpenGL, OpenGL ES и OpenAL. Она работает на всех основных платформах.

NUnit — это фреймворк для юнит-тестирования для всех языков .NET. Изначально он являлся портом JUnit, но текущая версия была переписана с нуля.

XUnit — это фреймворк, аналогичный предыдущему. Работает с ReSharper, CodeRush, TestDriven.NET и Xamarin.

Json.NET — это персональный проект, целью которого было создание лучшего JSON-сериализатора для .NET.

Topshelf — это фреймворк для хостинга сервисов, написанных на .NET. Создание сервисов упрощено, что позволякет разработчикам создавать простых консольных приложения, которые можно установить в виде сервиса, используя Topshelf. Разумеется, консольные приложения отлаживать куда проще.

MassTransit — это фреймворк для разработки распределённых приложений.

SimpleInjector — библиотека для внедрения зависимостей.

Dapper — это простой маппер объектов в виде NuGet-пакета, которые расширяет интерфейс IDbConnection.

Как принять участие в движении Open Source

Перевод статьи «How to Contribute to Open Source Project».

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

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

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

Зачем разработчику принимать участие в проектах с открытым исходным кодом?

Давайте посмотрим, что может мотивировать программиста поучаствовать в опенсорсном проекте.

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

Во-вторых, open source дает вам хороший старт. Новички могут начать с малого — исправления мелких багов или написания части документации. Принимая участие в опенсорсных проектах, начинающие разработчики будут учиться писать чистый код (т. е., читаемый и поддерживаемый). Когда разработчики понимают, что их код будет выставлен на всеобщее обозрение, они больше фокусируются на том, чтобы этот код было легко понять и поддерживать.

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

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

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

Что следует учесть начинающему контрибутору

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

Язык программирования

Самая важная технология, лежащая в основе любой программы, это язык программирования. Самыми популярными языками на GitHub (платформе для хостинга проектов и совместной работы над ними) являются JavaScript, Python, Java, Ruby и PHP. На этих языках вы найдете множество проектов на любой вкус и цвет.

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

  • Sinatra — библиотека на основе Ruby, помогающая создавать приложения без Rails;
  • Hanami — современный веб-фреймворк, созданный на Ruby;
  • Chef — фреймворк на основе Ruby, используемый для автоматизации работы с сервером;
  • Jruby — второй по популярности интерпретатор Ruby.

Во всех этих проектах пригодится ваша помощь.

Тип проекта

Выбрав язык, следует определиться, над проектом какого типа вы хотели бы работать. На GitHub проекты разбиты по категориям в папках под названием Showcases. Вот несколько примеров Showcases: «безопасность», «виртуальная реальность», «текстовые редакторы», «препроцессоры CSS». Просто выберите тему, которая вас интересует.

Но мы бы посоветовали уделить особое внимание проектам, которые будут использоваться более широкой аудиторией. Таким образом вы сможете протестировать ваш код на настоящей большой аудитории. Например, Showcase «Emoji» содержит 25 репозиториев, что говорит о его популярности.

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

Размер проекта

Крупные проекты вроде VLC Media Player или Spree — с тысячами строк кода — не лучший выбор для новичка. Принимая участие в большом проекте, вы неизбежно столкнетесь с необходимостью следовать жестким правилам, принятым внутри команды этого проекта.

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

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

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

Говоря о свободном ПО, мы не можем не затронуть тему GitHub и прочих инструментов. Давайте рассмотрим, что такое GitHub и как он может помочь вам принять участие в опенсорсных проектах.

Познакомьтесь с GitHub

GitHub это самая популярная платформа для сотрудничества над проектами с открытым исходным кодом, так что, вероятно, именно ее вы будете использовать, исследуя мир open source. Для начала вам нужно создать себе аккаунт и прочесть руководство, которое поможет вам начать пользоваться платформой. На GitHub можно участвовать в проектах, поднимая какие-то вопросы или отправляя туда свой код. Чтобы поднять какую-то тему (Submitting issues), вы отсылаете сообщение об ошибке в приложении и свои предложения по поводу того, как ее исправить. Если вы хотите написать код для проекта, вы отсылаете пул-реквест с вашими исправлениями и улучшениями.

Изучите основы

Для работы с GitHub нужно уметь пользоваться Git — одним из самых популярных инструментов контроля версий. Поскольку разработчики постоянно вносят изменения в свой код, им нужна система для управления этими изменениями в центральном репозитории. Благодаря такой системе каждый, связанный с процессом разработки проекта, сможет скачать код и внести изменения.

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

Вступите в сообщество

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

Пригодятся все навыки

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

Способы стать контрибутором проекта с открытым исходным кодом

Давайте рассмотрим основные пути к участию в проектах.

1. Создайте собственный проект с открытым кодом

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

Задумывая проект, следует ответить (себе) на ряд вопросов:

  • Какие навыки понадобятся вам для работы над этим проектом?
  • Сколько времени вы собираетесь ему посвятить?
  • Какие проблемы решает ваша программа?
  • Как много потенциальных пользователей у вашего будущего продукта?

2. Создайте свободную альтернативу коммерческому ПО

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

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

3. Станьте контрибутором (участником) уже существующих проектов open source


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

Самые «горячие» проекты можно найти по ссылке «Trending». А чтобы сделать поиск более релевантным, используйте развернутый поиск: выберите язык, на котором вы хотели бы писать код, и отметьте критерий «best match». Это расставит проекты в порядке релевантности, с учетом количества форков (их число указывает на активность обновления проекта) и звезд (если применять термины Facebook, то звезды это лайки). В большинстве проектов есть известные проблемы, помеченные метками «баг», «обсуждение», «безопасность», «рефакторинг» и другими метками, указывающими на уровень сложности: «легко», «средней сложности», «сложно».

Заключение

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

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

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

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

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

Анестезиолог Кон Коливас разработал собственную версию планировщика задач для ядра 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. Да и само ядро довольно компактное (в сравнении с «нормальными» ОС), поэтому разбираться проще. Хвастался этим на собеседовании, насколько помогло (или наоборот) — не знаю.

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

Сергей Бронников

В компании Odin с 2005 года, начинал как тестировщик Parallels Desktop for Mac, потом с нуля организовал тестирование Virtuozzo и отвечал за тестирование этого продукта последние пять лет. Помимо этого занимался тестированием и выпусков таких продуктов как Containers for Windows и Parallels Server for Mac. В настоящее время занимаюсь открытыми серверными проектами компании Parallels Inc.

Движение Open Source.

Лекция для школьников старших классов «Движение Open Source»

Эпиграф
Сначала они вас игнорируют,
потом смеются над вами,
потом они борются с вами,
а потом вы побеждаете.
Махатма Ганди

Цель:
Дать школьникам представление об Open Source, как о программном обеспечении с открытыми исходными текстами.

Задача:
Дать понятие о закрытых (проприетарных) и открытых (Open Source) исходниках.
Рассказать о философии и об истории появления движения Open Source.
Сформулировать преимущества Open Source программ перед закрытыми программами.

Исходный текст программы — это текстовый файл, написанный на каком-либо языке программирования. Обычно исходный текст программы преобразуется в машинные коды при помощи программы-компилятора. После компиляции программы, если программист оставляет исходники у себя, закрывая их, и отдает только исполняемые файлы, то такие программы называют закрытыми или проприетарными. Но есть и другой путь – вместе с исполняемыми файлами отдавать и исходники. Этот путь – Open Source («открытые исходники»)!

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

Открытость или закрытость?

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

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

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

А теперь переключимся на людей, которые на основе знаний получают новые знания – на ученых. Разве ученые закрывают информацию? Кто-нибудь видел «закрытые» законы Ньютона, для которых нужно получать лицензию на использование? Научные традиции поощряют открытие и опубликование научных работ, чтобы другие ученые сделали свои выводы и в свою очередь либо признали работу, либо отвергли ее из-за ошибок. Благодаря такой открытой схеме, одни учёные опираются на труды других учёных, но в свою очередь подставляют плечи для третьих.

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

История развития свободного программного обеспечения.

История «свободных программ» начинается с одного человека — Ричарда Столлмана (Richard Stallman). Именно он впервые употребил термин «free software» (свободное программное обеспечение) и чётко объяснил его значение. Однако он не считал, что создаёт некую принципиально новую концепцию. До конца 70-х годов значительная часть программного обеспечения разрабатывалась в научных учреждениях — университетах. Университетские традиции редко поощряют сокрытие информации друг от друга. Поэтому программы передавались и модифицировались свободно.

Так было и в лаборатории искусственного интеллекта Массачусетского технологического института (MIT AI Lab), где работал молодой талантливый программист Ричард Столлман. Однажды, в 1980 году, произошло событие, перевернувшее не только жизнь Столлмана, но, возможно, и будущее развитие рынка программного обеспечения.

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

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

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

Вот как описал эту ситуация сам Ричард Столлман: «Я считаю, что золотое правило требует: если мне нравится программа, то я должен поделиться ею с другими, кому она тоже нравится. Продавцы программного обеспечения хотят разделить пользователей и подчинить их себе, делая так, чтобы каждый из них соглашался не делиться с другими. Я отказываюсь нарушать солидарность с другими пользователями таким образом. Я не могу с чистой совестью подписать соглашение о не раскрытии или лицензионное соглашение по программному обеспечению. Во время моей работы в Лаборатории Искусственного Интеллекта я сопротивлялся этим тенденциям и другим препонам, но в конце концов они зашли слишком далеко: я не мог оставаться в институте, где за меня делаются такие вещи против моей воли.»

Когда Столлман решил бороться за изменение ситуации в мире небыло свободных операционных систем. Даже популярная система UNIX была на тот момент закрытой. В 1983 году он начал проект GNU — создание полноценной свободной операционной системы. Операционной системы, которая будет полностью доступна для копирования, изучения и модификации. И хотя продукты GNU приобрели широкую известность, конечная цель «операционная система» оставалась далёкой.

В 1991 году началась разработка ядра операционной системы. Линус Торвальдс, студент университета Хельсинки (Финляндия), решил получше разобраться в работе процессора и для этого создать ядро Unix-подобной операционной системы, которое работало бы на этом процессоре. Он использовал инструментарий, созданный командой GNU; таким образом, проект GNU стал основой для работы Линуса. Ядро, созданное Линусом, стало называться Linux (хотя первоначально он не планировал столь «эгоистичное» название).

Через небольшое время Линус Торвальдс, по предложению Столлмана, стал использовать для распространения Linux лицензию GPL. Эта лицензия и отличное умение Линуса общаться по интернету стали причинами того, что очень скоро над Linux работало немало программистов из многих стран. Уже в 1992 году появились вполне работоспособные версии. Инструменты GNU и ядро Linux вместе составили полную свободную операционную систему.

Работа над Linux стала примером нового способа создания программного обеспечения — совместной работы многочисленных программистов, взаимодействующих через интернет, без какой-либо мощной центральной власти (так называя технология «Базара», в противоположность традиционной централизованной технологии «Собора»).

Рождение Универсальной Общественной Лицензии (GPL).

На протяжении 80-х годов Столлман и некоторые его единомышленники работали над системой GNU. Было создано несколько важных и качественных программ, в частности, качественный компилятор языка C — GCC (GNU C Compiler).

Не менее важной разработкой, чем программы, стало рождение Универсальной Общественной Лицензии, так называемая лицензия GPL. Она была призвана использовать механизм авторских прав на программы, чтобы защитить их от превращения в «собственнические». GPL допускает любое использование и распространение программы и любых её модификаций — включая и коммерческое; однако она требует сохранять свободными все модификации программы, предоставляя их на условиях той же лицензии GPL и делая доступными исходные тексты.
Лицензия GPL гарантирует свободу ПО и далее, гарантирует, что те усилия, которые разработчики вложили в свой продукт не пропадут для них и остальных людей даром — они всегда будут доступны. Проще говоря, GPL делает свободу «защищенной».

Открытые исходники, открытые дороги.

К этому моменту благодаря широкому распространению Windows позиции фирмы MicroSoft стали очень крепкими, и многие конкурирующие фирмы-разработчики программного обеспечения оказались в тяжёлой ситуации, из-за того что фирма MicroSoft внедряла в MS Windows все больше и больше программ, нарушая тем самым антимонопольное законодательство США, делая программы конкурентов не нужными. Многие специалисты считают что продукты фирмы MicroSoft технически несовершенны, а теперь противниками MicroSoft стали и почти поверженные конкуренты. Это противостояние стало причиной начала нового этапа в развитии свободных программ.

Фирма Netscape — создатель программных продуктов для интернета, наиболее известный из которых — WWW-браузер Netscape. К началу 1998 года этот браузер потерял ведущие позиции — лидером стал MicroSoft Internet Explorer, который стал неотделимой частью Windows. Фирма Netscape оказалась под угрозой банкротства. Проект Mozilla — версия браузера Netscape с открытыми исходниками — стал первым, но не последним Open Source проектом, выросшим из коммерческого продукта.

Фирма Sun открыла свою операционную систему Solaris и исходные тексты офисного пакета StarOffice; на его основе создан полноценный свободный пакет OpenOffice. Программный пакет OpenOffice — это свободный пакет, который распространяется вместе с исходными текстами. Пакет OpenOffice содержит в себе текстовый редактор Writer по функциональности не уступающий Word и читающий закрытый формат Word’а *.doc. Табличный редактор Calc по функциональности не уступающий Excel и читающий закрытый формат Excel’а *.xls. Присутствует программа-аналог MS PowerPoint для создания презентаций под названием Impress. Также в пакет OpenOffice входит программа для создания векторных изображений — OpenDraw. Базы данных Base альтернатива MS Access.

Многие корпорации стали заявлять о поддержке Open Source движения. Такие корпорации как IBM, Oracle открыли часть своих проектов и стали финансировать некоторые сторонние Open Source проекты. Google (главный компьютер Земли) построил свой бизнес на Open Source проектах и впоследствии стал помогать своей информационной и финансовой поддержкой.

Открытость и бесплатность.

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

Следует уяснить, что из термина открытые исходники не следует бесплатность ПО.

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

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

Закрытые платные программы называют «коммерческое ПО» (shareware). Открытые платные обычно никак не называют или просто пишут
«ПО с открытыми исходными текстами».

Когда мы говорим Free Software, то мы имеем ввиду свободу программного обеспечения, а не его цену.

Достоинства программ Open Source.

Open Source Software — «свободные» программы, распространяемые без ограничений вместе с исходными текстами, без защиты от копирования, обязательной оплаты лицензии на использование и т.п.

Достоинства продуктов Open Source:
Безопасность. Линусу Торвальдсу приписывают слова: «От тысячи глаз не скроешь ошибку» (Given enough eyeballs, all bugs are shallow). Поскольку благодаря открытости для огромного количества пользователей-специалистов ошибки и проблемы быстро находятся и устраняются, свободные программы оказываются весьма надёжны и защищены (в частности, от несанкционированного доступа).

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

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

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

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

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

Телеграм канал С# Start 1.0

Статистика telegram канала @csharp_start

�� 7983 место в рейтинге каналов -18

�� Количество подписчиков на сегодня 504
Прирост за 24 часа -1 подписчиков или падение на -0.20 %

�� Приблизительная цена канала С# Start 1.0

�� Пессимистическая $ 151.2
�� Оптимистическая $ 2520

Читайте популярные записи в канале С# Start 1.0 онлайн

Потоки для начинающих

Технология разработки программного обеспечения

8 заданий по C#, которые могут попасться на собеседовании

​В какой строке ошибка?

1️⃣ 4️⃣ Урок. Объектно-ориентированное программирование.

Windows Forms. BindingSourse. BindingNavigator. DataGridView. Month Calendar. Сериализация и десериализация XML

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

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

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

Hackathons Announces — это канал комьюнити Russian Hackers, где рассказывают про все самые интересные хакатоны и другие мероприятия из мира IT.

​Небольшой тест перед сном. Что будет выведено в результате выполнения программы?

Искусственный интеллект и нейросети для .NET-разработчиков

В этой статье рассказывается, как .NET-разработчики могут использовать возможности ИИ в своих проектах: начиная от готовых когнитивных сервисов, работающих в облаке, заканчивая обучением нейросетей на .NET-языках и запуском сложных нейросетевых моделей на компактных устройствах типа Raspberry Pi.

. Урок. Объектно-ориентированное программирование.

Абстрактные классы. Интерфейсы. Стандартные интерфейсы.

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

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

10 полезных Git команд, которые облегчат работу

За последние несколько лет популярность git возросла, что позволило этой системе стать наиболее распространенной. Она используется разными программистами и командами разработчиков, начиная небольшими опен-сорс проектами и заканчивая linux kernel. Существует большое количество Git команд, которые важно знать. Давайте же разберем топ Git команд.

В чём разница между string и String в C#?

​​ . Достаточно простой и эффективный алгоритм распознавания и сопровождения движения

В результате появился алгоритм для обработки последовательности кадров, содержащих отображения движущихся объектов, например транспортных средств (ТС).

Исследуем возможности C# 7

CsConsoleFormat: форматирование в консоли по-новому (.NET)

▫️Требования:
— опыт работы 1-2 года
— английский язык технический
— уверенное знание C#, .NET
— опыт многопоточного программирования
— знание БД MS SQL на уровне написания хранимых процедур
— умение спрогнозировать и выдерживать сроки разработки
— умение писать красивый, понятный и легко поддерживаемый код
— умение отслеживать причины ошибок на большом количестве уровней (от браузера до БД)
— широкий кругозор в области информационных технологий
— умение работать как по ТЗ, так и без него (Разработчик-аналитик)

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

Дополнительные материалы к 13 уроку:

Преобразование цветного изображения в черно-белое

Дополнительные материалы к 13 уроку:

Оцените наше обучение?

43% Все отлично .
34% Хорошо, но есть недочеты .
21% Ожидал большего .

ASP.NET Core: Механизмы предотвращения атак 2.0

Создание инсталлятора в Visual Studio

3️⃣ Урок. Методы. От структур к объектам. Исключения. Работа с файлами.

Подробнее о методах. От структур перейдем к объектам. Научимся считывать данные из файла и ловить исключения.

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

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

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

Вы должны реализовать на языке программирования C# следующее задание:

Первый, кто правильно решит задачу, получит денежный приз в размере 1000 рублей. Решение отправлять на почту [email protected], либо файл с исходным кодом, либо ссылку на Github репозиторию с исходным кодом. Также в сообщении напишите свой ник в Telegram, например: @jn8momotov. Конкурс продлится до 6 марта.

Поторопитесь, победитель только один — самый первый!
Всем удачи! ✌️

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

Кто первый пришлет правильное решение задания, получит от Нас денежный приз! . Завтра днем выложим условие задачи и все подробности. Но а сейчас отдохните, возможно завтра Вам придется попотеть .

Ждите завтра .
До скорого.

На сегодняшний день GitHub – это один из самых популярных сервисов для совместной разработки программного обеспечения и его хостинга в облаке. Крупные IT-компании, такие как Microsoft, Google, Facebook и многие другие, используют данный ресурс для размещения исходных кодов своих разработок. Вы наверняка слышали о GitHub – пришло время научиться им пользоваться!

Прошло меньше суток, а уже есть победитель. Им становится @Protoss_OP. В ближайшее время мы свяжемся с победителем и переведем ему денежный эквивалент.

Остальные не расстраивайтесь и ждите новых конкурсов!
Дальше — больше .

1️⃣ 1️⃣ Урок. Объектно-ориентированное программирование.

Обобщения. Делегаты и события. Паттерн «наблюдатель».

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

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

Практика по массивам

Для всех, кто желает больше практики, прорешайте весь раздел «Массивы». Помимо задач имеются теория и видеоуроки. Если решение задач окажется для Вас сложным — воспользуйтесь подсказками, но рекомендуем все-таки решать самим.

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

8 заданий по C#, которые могут попасться на собеседовании

Выгрузка сообщений с использованием Telegram API

Каждый из Вас хочет поскорее получить те самые навыки, чтобы устроиться на Junior C#. Много кто спрашивает, что нужно, чтобы устроиться на данную должность. Вы не можете знать все, но некоторые основные, базавые знания вы должны иметь. Давайте коротенечко пробежимся по этому списку.

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

2. База данных
Далее стоит обратить особое внимание за СУБД. Наиболее часто используемая SQL Server. Если еще не знаком с базами данных, позже скинем вам грамотный контент. T-SQL — язык запросов в SQL Server. Основные функции: SELECT, INSERT, UPDATE, DELETE, JOIN и GROUP BY. Стоит также обратить внимание на Entity Framework, например, для работы с объектами в базе данных.

3. Веб-разработка
Здесь у нас имеются backend, frontend и full-stack разработчики. Для frontend надо познакомиться с HTML, CSS и JavaScript. Backend — это ASP.NET MVC (фреймворк для создания серверных приложений)


4. Desktop-разработка
Если вы хотите заняться разработкой приложений под Windows, то этот пункт именно для вас. Большинство заданий потребует от вас знания XAML, WPF или Windows Forms.

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

Нейронные сети на C#

Хорошая подборка видео, как написать нейронную сеть на C#. Состоит из 8 частей.

Как понять программиста: ТОП важных вещей о программировании

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

Как присоединиться к opensource-разработке? [закрыт]

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

Закрыт по причине того, что не по теме участниками LEQADA, Vladimir Glinskikh, Aslan Kussein, torokhkun, xaja 6 ноя ’15 в 5:32 .

Похоже, этот вопрос не соответствует тематике сайта. Те, кто голосовал за его закрытие, указывали следующую причину:

  • «Вопросы-опросники запрещены на Stack Overflow на русском. Для получения ответа, перефразируйте ваш вопрос так, чтобы на него можно было дать однозначно правильный ответ.» – LEQADA, Vladimir Glinskikh, Aslan Kussein, torokhkun, xaja

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

3 ответа 3

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

  1. Сначала стать контрибутором (то есть человеком вносящим какой-то вклад). Обычно это написание какой-нить статейки в wiki проекта. Лучше всего начать с перевода какого-то раздела документации на русский 🙂
  2. Полезно на этом этапе выкачать бинарники проекта, погонять и найти баг. Далее надо сделать баг-репорт. У каждого проекта своя система отслеживания багов: часто это что-то вроде Bugzilla или какие-нибудь новомодные веб системы.
  3. Далее подробно изучаем стиль кодирования принятый в проекте. Обычно руководители проектов оч. придирчивы к стилю кодирования. Шаг влево-шаг вправо расстрел на месте
  4. Изучаем список багов проекта. Выбираем целевой баг который вы будет фиксить. Лучше всего взять какой-нибудь легонький бажочек не критический и не дай бог new feature — корифеи проекта все равно растерзают по каким-нибудь идейным соображениям
  5. Делаем чекаут исходников прожекта (обычно это SVN или Git) — естественно надо изучить целевой VCS — особливо место где рассказывается про транк и ветки репозитория
  6. Фиксим баг и выкладываем его либо в виде отдельной ветки в VCS (если это дозволяется правилами проекта) или создаем patch файлик который постится в специальное место проекта.
  7. Если все пройдет удачно то с энной попытки ваш коммит будет принят и внедрен в trunk (основной ствол разработки) проекта.
  8. Несколько таких успешных багфиксов и можно уже подавать заявку на получение статуса коммиттера.

Новые Open Source проекты

Открытое программное обеспечение стало двигателем инноваций. И в этой статье вы убедитесь в этом. Мы рассмотрим лучшие проекты OpenSource по версии премии Black Duck Open Source Rookies.

Это восьмой выпуск Black Duck Open Source Rookies. Каждый год, Black Duck рассматривает мир свободного программного обеспечения и находит лучшие новые Open Source проекты, которые были реализованы в этом году.

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

Как правило, у лауреатов премии наблюдается три тенденции в отрасли:

  • Использование контейнеров Docker — в предыдущем году, Blcak Duck выбрала технологию Docker в качестве лучшего решения для виртуализации серверов. Экосистема Docker продолжает расширяться, вместе с несколькими проектами, в том числе спонсируемыми Red Hat и Capital One.
  • Рост открытого сотрудничества — Учитывая успех Facebook и Skype для личного обмена сообщениями, было реализовано много подобных решений для офиса. Таких как GoToMeeting или Slack. Теперь запатентованные решения сталкиваются с серьезной конкуренцией со стороны программ с открытым исходным кодом, которые предоставляют те же функции, но полностью открыты.
  • Использование искусственного интеллекта — мы можем быть очень далеко от действительно умных машин, но за глубокими методами обучения, с помощью которых компьютер может научиться путем обработки данных и моделирования нейронных систем, наше будущее.

Rocket.Chat

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

У RocketChat есть собственные приложения для Linux, Windows, MacOS, а также мобильные приложения для Android и iOS. Здесь даже есть собственное приложения для FirefoxOS, для настольных и мобильных устройств. А поскольку это Open Source проект, то это отличный выбор для разработчиков, жалеющих строить и развивать собственную платформу чата.

Mattermost

Другой отличной альтернативой для Slack есть Mattermost, ее история началась с компании — разработчика игр для HTML 5. Изначально это был игровой портал и приложение для обмена сообщениями, цель которого была найти геймеров за пределами Facebook. В итоге программа была переделана в решение для совместной работы в пределах компании, для таких случаев, когда компания не хочет, чтобы ее данные были получены провайдером. На данный момент — это отличная альтернатива Slack с открытым исходным кодом написанная на React и Go.

Mattermost объединяет все задачи коммуникации в одном месте, через удобный и интуитивно понятный интерфейс, удобный для поиска и доступный везде. Пользователи могут обмениваться сообщениями и файлами с помощью своих компьютеров и смартфонов, сохраняя всю важную информацию внутри ИТ инфраструктуры. Интерфейс Mattermost совместим с Slack и обеспечивает работу программного обеспечения разработанного для Slack. Есть две версии программы — одна рассчитана на работу с командами до 50 человек, а другая позволяет организовывать коммуникации между сотнями и тысячами пользователей.

Hubl.in

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

Hubl.in — свободное решение с открытым исходным кодом, для организации видеоконференций от компании Linagora, создателя платформы для совместной работы — OpenPaaS. Hubl.in поднимает связь в реальном времени на новый уровень, позволяя использовать браузер для организации видеоконференций, даже без каких либо плагинов.

Если вы читаете эту страницу, то вы можете попробовать Hubl.in прямо сейчас. Он основан на WebRTC, что позволяет реализовать децентрализованную связь между браузерами. Это значит, что ваша конференция не передается на Hubl.in никаким способом, это повышает безопасность и обеспечивает еще один уровень секретности.

MXNet

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

MXNet — это легкая библиотека машинного обучения, созданная DMLC разработчиками CXXNet, Minerva, и Purine2. Здесь применен опыт, полученный в этих проектах, а также смешан императивный и символический стиль программирования. MXNet использует планировщик динамических зависимостей, который автоматически паралеллизует как символические, так и императивные операции на лету. Уклон в сторону оптимизации делает MXNet быстрым и потребляющим немного памяти. Библиотека портативная и легкая, она легко масштабируется даже для нескольких машин. Можно даже использовать для таких задач, как распознавание образов на смартфоне. Группа DMLC хочет сделать открытое программное обеспечение широкодоступным. Проект MXNet тоже содержит набор руководств и схем для построения систем машинного обучения.

Bazel

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

Bazel стремится ускорить процесс сборки и повысить надежность за счет общего хранилища кода, в котором все программное обеспечение находится в состоянии открытого исходного кода. Здесь автоматизировано тестирование и релизы, используется как параллельность, так и кеширование, чтобы ускорить обработку. Особенно подходит для проектов с крупными базами кода, на основе нескольких языков программирования или для различных платформ. Основная особенность Bazel — тщательное тестирование в сложных условиях работы в Google. Текущая версия поддерживает Linux, OS X, но не Windows.

React Native

Разработчики мобильных приложений сталкиваются с трудным выбором: разрабатывать приложения для iOS или Android с помощью собственных инструментов, или воспользоваться кроссплатформенными. С одной стороны, родные приложения быстрее и предлагают лучший пользовательский интерфейс. Однако разработка такого приложения, означает — написать его, по крайней мере, два раза на самых разных языках программирования. Кроссплатформенные инструменты, такие как JavaScript позволяют им писать программу только раз, но эти приложения часто работают плохо и выглядят не очень красиво.

React Native — это OpenSource проект с открытым исходным кодом, поддерживаемый Facebook. Он позволяет двигаться сразу в двух направлениях. Создавая свои приложения с помощью библиотеки JavaScript React вы сохраняете логику работы приложений JavaScript, а также пользовательский интерфейс полностью нативный для обоих оболочек iOS и Android. Для разработчиков React Native представляет собой новый подход к написанию мобильных приложений — учиться раз, писать везде.

Kontena

Docker-контейнеры — революционный способ для развертывания приложений. Но многие организации все еще борются за решение для управления контейнерами.

Kontera — проект с открытым исходным кодом, для управления контейнерами. Kontera имеет много новых технологий и возможностей для ускорения развертывания. Здесь есть поддержка нескольких хостов, мульти-AZ контейнеры, сетевая технология Weave, VPN доступ к контейнерам, а также интуитивно понятный мастер развертывания. У Kontera есть все что компании может понадобиться для разработки, развертывания и контроля контейнерных систем. Она может быть установлена в любой облачной инфраструктуре. Поскольку это открытый исходный код, она скоро выйдет за рамки Docker и будет поддерживать контейнеры Windows, CoreOS PKT и другие контейнерные технологии.

Nulecule

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

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

InSpec

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

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

Hygieia

Технологические гиганты не одиноки в инвестировании в свободное программное обеспечение. В этом году Capital One попытались найти панель инструментов для разработчиков, и небыли обнаружены ни коммерческие решения ни OpenSource проекты. Поэтому компания создала собственную — Hygieia. Панель выпущена в прошлом году и ее исходный код опубликован на GitHub.

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

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

Glucosio

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

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

Vault

Компания из Сан-Франциско HashiCorp известна своим инструментом для создания и настройки легкой, портативной среды разработки — Vagrant. Новый проект с открытым исходным кодом этой компании — Vault, инструмент для безопасного управления секретами. Здесь могут находиться ключи, API, пароли, сертификаты, учетные данные сотрудников, и другая секретная информация. У HashiCorp отличные Open Source проекты, можно сказать — так держать.

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

Rancheros

Rancher Labs разработала высокоэффективную технологию запуска контейнеров — операционную систему в миниатюре, со всем необходимым для запуска контейнеров, но ничего больше. RancherOS — это дистрибутив Linux, размером 20 Мб, специально разработанный для простого способа запуска и управления контейнерами Docker. Идея заключается в том, что он похож на CoreOS, Но с одной особенностью — все здесь работает через Docker контейнеры, даже сама операционная система.

В RancherOS Docker работает непосредственно поверх ядра Linux и распределяет все сервисы пользовательского пространства как контейнеры Docker. Экземпляр системы Docker инициализирует все системные службы (Udev, DHCP, TTY) каждая из которых работает в отдельном контейнере. Экземпляр пользователя Docker создает отдельные контейнеры для всех пользователей, в пределах основного контейнера пользователя. RancherOS также обеспечивает обновление через контейнеры и может использовать различные системы управления контейнерами.

OWASP Security Knowledge Framework

OWASP Foundation (Проект Open Web Application Security) — это некоммерческое сообщество, которое предоставляет ресурсы и средства для обеспечения безопасности веб-приложений, которые разрабатывают OpenSource проекты. Многие разработчики не знают о рисках безопасности уязвимостей, с которыми они сталкиваются. С этой целью OWASP SKF (Security Knowledge Framework) обеспечивает свободный инструмент с открытым исходным кодом для обеспечения безопасности веб-приложений. Он также может служить учебным пособием, которое научит основам безопасности в веб-приложениях.

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

Выводы

Это были все новые Open Source проекты, отмеченные премией Black Duck. Награждение происходит каждый год, поэтому новые Open Source проекты за 2020 год мы увидим только в 2020.

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

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

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

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

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

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

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

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

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

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

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

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

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

Мастер Йода рекомендует:  Настройка плагина W3 Total Cache расширенные настройки минимизации кода

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

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

Например, у проекта 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. Да и само ядро довольно компактное (в сравнении с «нормальными» ОС), поэтому разбираться проще. Хвастался этим на собеседовании, насколько помогло (или наоборот) — не знаю.

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

Сергей Бронников

В компании Odin с 2005 года, начинал как тестировщик Parallels Desktop for Mac, потом с нуля организовал тестирование Virtuozzo и отвечал за тестирование этого продукта последние пять лет. Помимо этого занимался тестированием и выпусков таких продуктов как Containers for Windows и Parallels Server for Mac. В настоящее время занимаюсь открытыми серверными проектами компании Parallels Inc.

Лучшие Open Source проекты по машинному обучению. Часть 1

С каждым годом искусственного интеллекта становится всё больше. Это связано с тем, что машинное обучение открыло новые возможности и перспективы для самых разных областей: от распознавания лиц и голоса до обработки языка, изображений, кинофильмов и т. д. Итак, предлагаем вашему вниманию 20 наиболее известных опенсорсных проектов по Machine Learning.

TensorFlow

TensorFlow — открытая библиотека для создания и тренировки нейронных сетей. Предоставляет API для облачной, мобильной, десктопной и веб-разработки. Поначалу создавалась командой Google Brain для внутреннего использования. Имеет интерфейсы для Swift и Javascript. Последняя версия поддерживает высокоуровневый API Keras, который написан на Python и работает поверх CNTK, TensorFlow и Theano.

Scikit-learn

Эту библиотеку разработали во время реализации проекта Google Summer of Code. Она предоставляет пользователям простые, но достаточно эффективные инструменты, предназначенные для глубокого анализа данных. А за счёт простоты и удобства Scikit-learn не уступает по популярности TensorFlow.

MXNet

Фреймворк Deep learning от Apache. Создавался с упором на гибкость и продуктивность, поэтому позволяет комбинировать императивное и символическое программирование.

PyTorch

Очень популярная библиотека среди фанатов Machine Learning. Создана на базе Torch, развивается в стенах Facebook. По сути, это пакет Python, поддерживающий тензорные вычисления с GPU-ускорением и работу с нейросетями через систему autograd.

Magenta

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

Style2Paints

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

Image-to-image translation in PyTorch

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

Deep voice conversion

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

StarGAN in PyTorch

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

Face detection

Библиотека используется не только для распознавания лиц, но и для определения пола и эмоций изображённых людей, делая это в реальном времени. Для работы применяются датасеты fer2013/IMDB, библиотека компьютерного зрения OpenCV, сверхточная нейросесть Keras.

Продолжение здесь! Также ждём ваших комментариев!

Форум русскоязычного сообщества Ubuntu

Хотите сделать посильный вклад в развитие Ubuntu и русскоязычного сообщества?
Помогите нам с документацией!

Автор Тема: Open-source проекты (Прочитано 4048 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Страница сгенерирована за 0.072 секунд. Запросов: 24.

© 2012 Ubuntu-ru — Русскоязычное сообщество Ubuntu Linux.
© 2012 Canonical Ltd. Ubuntu и Canonical являются зарегистрированными торговыми знаками Canonical Ltd.

18 open source проектов для практики программирования

С помощью open source проектов можно усовершенствовать свои навыки, исправляя чужие ошибки и создавая что-то новое. Можно найти проект, который будет полезен и для собственного бизнеса, например, в медицине или e-commerce. Кроме того, как говорят практикующие программисты, один из лучших способов мотивировать себя на занятия программированием — это работа с open source проектами. Специально для читателей блога Geekbrains мы собрали список таких проектов из разных сфер деятельности:

Пакет программного обеспечения для работы с медицинскими изображениями. 3D Slicer доступен на нескольких платформах, в числе которых Windows, Linux и OS X.

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

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

Coder (для Raspberry Pi)

Экспериментальный проект для Raspberry Pi, созданный небольшой группой сотрудников Google в Нью-Йорке. Это бесплатная часть программного обеспечения, которое превращает Raspberry Pi в простой личный веб-сервер и веб-среду для разработки — только то, что нужно для крафта HTML, CSS, Javascript, когда вы учитесь программировать. Установка для начала работы займет не больше десяти минут.

Платформа для управления контентом, на которой работают миллионы веб-сайтов и приложений.

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

Свободная операционная система типа Unix.

Офисный пакет для совместной разработки с функционалом, как у Microsoft Office или OpenOffice.org.

Система для создания курсов. Бесплатное веб-приложение, которое преподаватели могут использовать для создания эффективных Интернет-сайтов для обучения. Moodle стала очень популярной среди педагогов по всему миру в качестве инструмента для создания динамических веб-сайтов для своих студентов.

ПО для создания и управления обучающим аудио и видео контентом.

Мультиплатформенная система управления корпоративным контентом написанная на Java. Работает с несколькими базами данных (в том числе MySQL, Oracle, PostgreSQL, SQLLite, и другие), а также поддерживает несколько методов аутентификации.

Софт для создания частных и общественных облаков.

Сервис позволяет создавать опросы и делиться с контактами на сайте. Удобный способ собирать данные для их последующего анализа.

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

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

  • создание отчетов
  • анализ
  • сбор Данных
  • платформа бизнес-аналитики

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

Модульная open source система управления цифровыми данными.

Бесплатный софт для e-commerce.


Библиотека для быстрого фильтрования и сортировки больших коллекций — до 100000 элементов в браузере.

Языки c open source

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

R — открытый язык программирования и программная среда для статистических расчетов и графики. Язык R широко используется среди статистов для разработки статистического программного обеспечения и анализа данных.

Где найти больше open source проектов?

Один из самых крупных веб-сервисов для совместной разработки IT-проектов. Абсолютно бесплатен для open source проектов. Девиз сервиса “Social coding” можно перевести, как “Кодим вместе”.

Предназначен популяризовать open source проекты. С помощью инструментов, которые там предоставлены, разработчики создали мощное программное обеспечение в более чем 430,000 проектах; на ресурсе более 3,7 млн зарегистрированных пользователей. Популярный каталог объединяет более 41,8 млн клиентов с проектами open source и обслуживает более 4800000 скачиваний в день.

Цель Fossdroid — продвигать open source приложения на Android с помощью проекта F-Droid. Fossdroid берет свои данные из F-Droid и организует приложения в порядке, похожем на Google Play, с возможностью просмотра их по популярности.

Как узнать является ли ПО open source и каковы правила его использования?

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

Тем, кто хочет стать программистом, рекомендуем профессию «Веб-разработчик».

С помощью open source проектов можно усовершенствовать свои навыки, исправляя чужие ошибки и создавая что-то новое. Можно найти проект, который будет полезен и для собственного бизнеса, например, в медицине или e-commerce. Кроме того, как говорят практикующие программисты, один из лучших способов мотивировать себя на занятия программированием — это работа с open source проектами. Специально для читателей блога Geekbrains мы собрали список таких проектов из разных сфер деятельности:

Пакет программного обеспечения для работы с медицинскими изображениями. 3D Slicer доступен на нескольких платформах, в числе которых Windows, Linux и OS X.

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

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

Coder (для Raspberry Pi)

Экспериментальный проект для Raspberry Pi, созданный небольшой группой сотрудников Google в Нью-Йорке. Это бесплатная часть программного обеспечения, которое превращает Raspberry Pi в простой личный веб-сервер и веб-среду для разработки — только то, что нужно для крафта HTML, CSS, Javascript, когда вы учитесь программировать. Установка для начала работы займет не больше десяти минут.

Платформа для управления контентом, на которой работают миллионы веб-сайтов и приложений.

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

Свободная операционная система типа Unix.

Офисный пакет для совместной разработки с функционалом, как у Microsoft Office или OpenOffice.org.

Система для создания курсов. Бесплатное веб-приложение, которое преподаватели могут использовать для создания эффективных Интернет-сайтов для обучения. Moodle стала очень популярной среди педагогов по всему миру в качестве инструмента для создания динамических веб-сайтов для своих студентов.

ПО для создания и управления обучающим аудио и видео контентом.

Мультиплатформенная система управления корпоративным контентом написанная на Java. Работает с несколькими базами данных (в том числе MySQL, Oracle, PostgreSQL, SQLLite, и другие), а также поддерживает несколько методов аутентификации.

Софт для создания частных и общественных облаков.

Сервис позволяет создавать опросы и делиться с контактами на сайте. Удобный способ собирать данные для их последующего анализа.

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

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

  • создание отчетов
  • анализ
  • сбор Данных
  • платформа бизнес-аналитики

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

Модульная open source система управления цифровыми данными.

Бесплатный софт для e-commerce.

Библиотека для быстрого фильтрования и сортировки больших коллекций — до 100000 элементов в браузере.

Языки c open source

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

R — открытый язык программирования и программная среда для статистических расчетов и графики. Язык R широко используется среди статистов для разработки статистического программного обеспечения и анализа данных.

Где найти больше open source проектов?

Один из самых крупных веб-сервисов для совместной разработки IT-проектов. Абсолютно бесплатен для open source проектов. Девиз сервиса “Social coding” можно перевести, как “Кодим вместе”.

Предназначен популяризовать open source проекты. С помощью инструментов, которые там предоставлены, разработчики создали мощное программное обеспечение в более чем 430,000 проектах; на ресурсе более 3,7 млн зарегистрированных пользователей. Популярный каталог объединяет более 41,8 млн клиентов с проектами open source и обслуживает более 4800000 скачиваний в день.

Цель Fossdroid — продвигать open source приложения на Android с помощью проекта F-Droid. Fossdroid берет свои данные из F-Droid и организует приложения в порядке, похожем на Google Play, с возможностью просмотра их по популярности.

Как узнать является ли ПО open source и каковы правила его использования?

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

Тем, кто хочет стать программистом, рекомендуем профессию «Веб-разработчик».

Не web’ом единым: в каких крупных проектах применяется Python

11 августа, 2020 |

Екатерина Шипилова

«Я учусь программировать на Python, что мне с этими знаниями делать дальше», спрашиваете вы. А мы рассказываем в ответ, как используют Python известные компании и проекты.

Екатерина Шипилова
Получайте новые статьи на e‑mail

Пишем о будущем, технологиях и стартапах

Ещё по теме

Не web’ом единым: в каких крупных проектах применяется Python

Как я поборола страх перед программированием

В новом учебном сезоне мы запускаем пятый поток курса «Разработчик на Python». Нас часто спрашивают: «Хорошо, я освою Python. Что дальше? Где именно я смогу применить навыки?». В этом материале мы собрали обзор известных компаний и проектов, которые используют Python в работе.

Часто именно Python рекомендуют начинающим разработчикам в качестве первого языка для изучения, и это вполне объяснимо. Фишка Python — читабельность кода. Именно она обеспечила ему уважение программистов от Токио до Мытищ. Про то, как вообще выбирают язык программирования (и чем так крут Python), мы рассказывали в материале «Python или нет?».

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

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

Python — универсальный язык. На нём можно написать практически что угодно — от игр до систем управления жизнеобеспечением. На руку популярности Python играет сообщество «пайтонистов» со своей особой философией. Звание участников сообщества носят не только индивидуальные разработчики и небольшие компании, но и целые IT-гиганты.

Например, Python активно используют:

  • Google;
  • Dropbox (святая святых Python-программистов. В компании работает и сам создатель языка Гвидо ван Россум);
  • Netscape;
  • Facebook;
  • Yandex;
  • Microsoft;
  • Intel.

А что насчет крутых проектов и игр, написанных на Python

Попробуем вспомнить известные проекты, в создании которых задействован этот ассемблер:

  • Большая часть кодовой базы самого известного видеохостинга YouTube написана на Python.
  • Начальная версия поискового паука Google — на Python.
  • Десктопный клиент Dropbox — полностью детище Python.

И это ещё не все. На Python написаны:

  • Spotify;
  • Mozilla;
  • Pinterest;
  • Paypal;
  • И даже Instagram.

Также на Python написана Mercurial — система контроля версий, очень серьезная штука.

В Abaqus, системе расчета на прочность, Python применяется как язык для пользователей — чтобы они могли полностью задействовать возможности программы или же автоматизировать расчеты.

Кроме того, большая часть Civilistation IV написана на Python. Использован Python и в Battlefield. Также есть игры, в которых Python задействован для моддинга — создания дополнений к игре сторонними разработчиками или самими игроками. Это, например, Sims IV, World of Tanks. Список можно продолжать.

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

Звучит здорово, но о чем это говорит? Крупные корпорации — значимые для рынка — уверены в жизнеспособности Python и готовы строить вокруг него бизнес. А потому проблема с поиском работы вряд ли возникнет перед теми, кто освоил разработку на Python.

Если вы прониклись скромным обаянием Python или заинтересовались широтой открывающихся возможностей, ждём на курсе «Разработчик на Python». Вы получите навыки web-разработки на всех этапах — от идеи до поддержки уже работающего продукта.

Полный Python Developer в 2020 году: c нуля до мастера

Курс: «Полный Python Developer в 2020 году: c нуля до мастера» . Крутой и свежий материал по изучению Python с нуля. Материал идеально подойдет для новичков. Отзывы отличные! Материал полностью на английском языке + субтитры (которые легко перевести). Описание материала на русском языке (было переведено через переводчик). Материал прислал анонимный пользователь без комментариев.

Материал может быть удален по запросу правообладателя!

Описание курса:

Станьте разработчиком Python 3 и получите работу! Создайте более 12 проектов, узнайте больше о веб-разработке, машинном обучении и многом другом! Присоединяйтесь к живому онлайн-сообществу, в котором более 100 000 разработчиков, и к курсам, проводимым экспертом отрасли, который фактически работал в Силиконовой долине и Торонто. Это совершенно новый курс Python, только что запущенный в сентябре 2020 года! Выпускники курсов Андрея сейчас работают в Google, Amazon, Apple, IBM, JP Morgan, Facebook и других ведущих технологических компаниях.

Изучайте Python с нуля, нанимайтесь на работу и получайте удовольствие от самого современного, современного курса Python по Udemy. Этот курс ориентирован на эффективность: никогда больше не тратьте время на запутанные, устаревшие, неполные учебники по Python. Этот всесторонний и основанный на проекте курс познакомит вас со всеми современными навыками разработчика Python (Python 3), и по пути мы создадим более 12 реальных проектов для добавления в ваше портфолио (вы получите доступ ко всем код из 12+ проектов, которые мы создаем, чтобы вы могли сразу же разместить их в своем портфолио)!

Учебная программа будет очень практической, так как мы начнем с того, чтобы стать профессиональным разработчиком Python. Мы начнем с самого начала, обучая вас основам Python и основам программирования, а затем перейдем к углубленным темам и различным областям карьеры в Python, чтобы вы могли получить практические навыки и быть готовыми к реальному миру.

Темы этого курса:

  • Основы программирования
  • Основы Python
  • Структуры данных
  • Объектно-ориентированное программирование на Python
  • Функциональное программирование на Python
  • лямбды
  • декораторы
  • генераторы
  • Тестирование на Python
  • отладка
  • Обработка ошибок
  • Обычные выражения
  • Понимания
  • Модули
  • Виртуальные среды
  • Среды для разработчиков (PyCharm, Jupyter Notebooks, VS Code, Sublime Text + еще)
  • Обработка файлов: изображение, CSV, PDF, текст + еще
  • Веб-разработка с Python
  • Машинное обучение с Python
  • Наука о данных с Python
  • Автоматизация с Python и Selenium
  • Сценарии с Python
  • Соскребание с помощью Python и BeautifulSoup
  • Обнаружение изображения
  • Визуализация данных
  • Kaggle, Pandas, NumPy, scikit-Learn
  • Электронная почта и SMS с Python
  • Работа с API (Twitter Bot, Password Checker, Translator)

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

Вот истина: большинство курсов обучают вас Python и делают именно это. Они показывают вам, как начать. Но дело в том, что вы не знаете, куда идти и как создавать свои собственные проекты.

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

Для кого этот курс:

  • Тот, кто хочет освоить Python 3;
  • Тот, кто хочет научиться кодировать;
  • Любой желающий повысить свои навыки и овладеть новым языком программирования;
  • Любой, кто хочет попасть в: веб-разработку, машинное обучение, науку о данных и другие горячие рынки труда.

Если Вы не видите ссылку для скачивания материала — отключите блокиратор рекламы и добавьте наш сайт в список исключений. Если Вы против рекламы на нашем сайте — покупайте контент напрямую у авторов.

Лучшие Open Source проекты по машинному обучению. Часть 1

С каждым годом искусственного интеллекта становится всё больше. Это связано с тем, что машинное обучение открыло новые возможности и перспективы для самых разных областей: от распознавания лиц и голоса до обработки языка, изображений, кинофильмов и т. д. Итак, предлагаем вашему вниманию 20 наиболее известных опенсорсных проектов по Machine Learning.

TensorFlow

TensorFlow — открытая библиотека для создания и тренировки нейронных сетей. Предоставляет API для облачной, мобильной, десктопной и веб-разработки. Поначалу создавалась командой Google Brain для внутреннего использования. Имеет интерфейсы для Swift и Javascript. Последняя версия поддерживает высокоуровневый API Keras, который написан на Python и работает поверх CNTK, TensorFlow и Theano.

Scikit-learn

Эту библиотеку разработали во время реализации проекта Google Summer of Code. Она предоставляет пользователям простые, но достаточно эффективные инструменты, предназначенные для глубокого анализа данных. А за счёт простоты и удобства Scikit-learn не уступает по популярности TensorFlow.

MXNet

Фреймворк Deep learning от Apache. Создавался с упором на гибкость и продуктивность, поэтому позволяет комбинировать императивное и символическое программирование.

PyTorch

Очень популярная библиотека среди фанатов Machine Learning. Создана на базе Torch, развивается в стенах Facebook. По сути, это пакет Python, поддерживающий тензорные вычисления с GPU-ускорением и работу с нейросетями через систему autograd.

Magenta

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

Style2Paints

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

Image-to-image translation in PyTorch

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

Deep voice conversion

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

StarGAN in PyTorch

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

Face detection

Библиотека используется не только для распознавания лиц, но и для определения пола и эмоций изображённых людей, делая это в реальном времени. Для работы применяются датасеты fer2013/IMDB, библиотека компьютерного зрения OpenCV, сверхточная нейросесть Keras.

Продолжение здесь! Также ждём ваших комментариев!

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

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

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

Анестезиолог Кон Коливас разработал собственную версию планировщика задач для ядра 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. Да и само ядро довольно компактное (в сравнении с «нормальными» ОС), поэтому разбираться проще. Хвастался этим на собеседовании, насколько помогло (или наоборот) — не знаю.

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

Сергей Бронников

В компании Odin с 2005 года, начинал как тестировщик Parallels Desktop for Mac, потом с нуля организовал тестирование Virtuozzo и отвечал за тестирование этого продукта последние пять лет. Помимо этого занимался тестированием и выпусков таких продуктов как Containers for Windows и Parallels Server for Mac. В настоящее время занимаюсь открытыми серверными проектами компании Parallels Inc.

Страница поста от канала С# Start 1.0

Обращаем внимание, что мы не несем ответственности за содержимое(content) того или иного канала размещенный на нашем сайте так как не мы являемся авторами этой информации и на сайте она размещается в автоматическом режиме

Пожаловаться

Обращаем внимание, что мы не несем ответственности за содержимое(content) того или иного канала размещенный на нашем сайте так как не мы являемся авторами этой информации и на сайте она размещается в автоматическом режиме

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

Если вы интересуетесь жизнью Open Source сообщества и хотите к нему присоединиться, то эта серия подборок придётся вам как нельзя кстати, ведь в ней собраны лучшие проекты с открытым исходным кодом на C#.

Nancy — это легковесный фреймворк для создания HTTP-сервисов на .NET Framework/Core и Mono. Целью фреймворка является как можно более «незаметное» обеспечение взаимодействий в приложений.

Nancy способна обрабатывать запросы DELETE , GET , HEAD , OPTIONS , POST , PUT и PATCH и снабжена простым и элегантным языком Domain Specific Language (DSL). Вот пример приложения:

Репозиторий corefx содержит реализацию .NET Core. Она включает в себя System.Collections, System.IO, System.Xml и другие компоненты. Больше информации можно найти в документации. Сопутствующий репозиторий .NET Core Runtime содержит реализацию среды выполнения CoreCLR для .NET Core.

Roslyn предоставляет C#- и Visual Basic-компиляторы с API для анализа кода, аналогичными инструментам Visual Studio.

DotNetty — это порт Netty, фреймворка для работы с асинхронными сетевыми приложениями и высокопроизводительными протоколами серверов и клиентов.

Cake (C# Make) — это система автоматизации сборки с C# DSL, предназначенная для компиляции кода, копирования файлов и папок, запуска юнит-тестов, сжатия файлов и сборки NuGet-пакетов.

OpenTK — это быстрая низкоуровневая C#-связка OpenGL, OpenGL ES и OpenAL. Она работает на всех основных платформах.

NUnit — это фреймворк для юнит-тестирования для всех языков .NET. Изначально он являлся портом JUnit, но текущая версия была переписана с нуля.

XUnit — это фреймворк, аналогичный предыдущему. Работает с ReSharper, CodeRush, TestDriven.NET и Xamarin.

Json.NET — это персональный проект, целью которого было создание лучшего JSON-сериализатора для .NET.

Topshelf — это фреймворк для хостинга сервисов, написанных на .NET. Создание сервисов упрощено, что позволякет разработчикам создавать простых консольных приложения, которые можно установить в виде сервиса, используя Topshelf. Разумеется, консольные приложения отлаживать куда проще.

MassTransit — это фреймворк для разработки распределённых приложений.

SimpleInjector — библиотека для внедрения зависимостей.

Dapper — это простой маппер объектов в виде NuGet-пакета, которые расширяет интерфейс IDbConnection.

Путь Python’иста: 5 ресурсов успеха

19 декабря, 2020 |

Николай Аникин

Как быстрее стать профессиональным разработчиком: советы от гуру Python Никиты Соболева.

Николай Аникин
Получайте новые статьи на e‑mail

Пишем о будущем, технологиях и стартапах

Ещё по теме

Как я поборола страх перед программированием

Не web’ом единым: в каких крупных проектах применяется Python

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

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

Никита Соболев — профессиональный разработчик, в портфолио которого Python-проекты для Logibox и Idea-Logic; основатель студии wemake.services:

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

  • Знать математику на уровне школьной программы;
  • Уверенно владеть компьютером;
  • Уметь формулировать мысли;
  • Иметь большое количество свободного времени.

Если вы не знаете, как обращаться с функциями, полгода живёте с уведомлением о сбое активации MS Office Word и боитесь спрашивать, то в большом и жёстком мире разработчиков вам будет сложно.

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

1. Общайтесь профессионально

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

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

Если вы учитесь разработке на Python, вам стоит обязательно посетить:

2. Настройте ваши подписки

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

3. Используйте для обучения сервисы

Мир придумал множество сервисов для изучения программирования — Code-, html- и другие с префиксом «Academy». Каждый выбирает что-то своё. Например, я курсы по Python на Coursera пройти не смог. Зато там есть неплохая подборка программ Стэнфорда и Йеля.

Кому-то нравится читать, а кому-то — смотреть видео. Есть сервисы с игровыми механиками. На мой взгляд, лучше всего для тренировки навыков программирования подходит CodeFights: если я вижу, что кто-то сделал код быстрее или интереснее, у меня азарт просыпается. Ещё есть сервис CodeCombat, мобильные приложения: Code School, CodeHS, Free Code Camp и так далее.

4. Программируйте в режиме 24/7

Думать, что достаточно сходить на курс, и всему научишься, — это заблуждение. Я трачу на программирование 12 часов в день. За счёт этого могу оттачивать навыки и осваивать новое. Нужно быть готовым посвящать все вечера и часть выходных практике, отказавшись, к примеру, от пустых встреч или походов в кино. Если вы хотите достичь результатов в сфере разработки, то надо пахать по крайней мере в течение нескольких месяцев.

У меня есть любимая фраза в тему: «Когда пожарник приходит домой, он не тушит пожары. Но когда программист приходит домой, он продолжает программировать». В IT-отрасли разделение на работу и личную жизнь условно: дома вы просто открываете файлы с другим кодом и пишете для себя.

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

Вот мотивирующая ссылка на мой гитхаб: github.com/sobolevn.

5. Нарабатывайте портфолио в open source-проектах

Те, кто только пробует себя в сфере разработки, вряд ли смогут сразу же зарабатывать фрилансом. (Разве что кто-то знакомый порекомендует их в помощь проекту). — Нужно портфолио. Попробуйте участвовать в open source-проектах. Да, это бесплатно. Но так вы повышаете свою квалификацию, получаете навык реальной работы. Open source-разработка полезна и для репутации. Вас научат взаимодействовать с менеджерами проектов, писать коммиты, направлять пулл-реквесты.

Примеры open source-проектов:

Следите за запуском нового потока курса «Разработчик на Python». Освоив все ключевые навыки разработки, выпускники курса смогут писать на Python программы, приложения, web-проекты, скрипты для серверов, управляя всем процессом от формирования идеи до финальных версий работающего продукта.

Занятия можно будет посещать лично в центре Москвы или онлайн. Смотрите подробно программу курса.

Новые Open Source проекты

Открытое программное обеспечение стало двигателем инноваций. И в этой статье вы убедитесь в этом. Мы рассмотрим лучшие проекты OpenSource по версии премии Black Duck Open Source Rookies.

Это восьмой выпуск Black Duck Open Source Rookies. Каждый год, Black Duck рассматривает мир свободного программного обеспечения и находит лучшие новые Open Source проекты, которые были реализованы в этом году.

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

Как правило, у лауреатов премии наблюдается три тенденции в отрасли:

  • Использование контейнеров Docker — в предыдущем году, Blcak Duck выбрала технологию Docker в качестве лучшего решения для виртуализации серверов. Экосистема Docker продолжает расширяться, вместе с несколькими проектами, в том числе спонсируемыми Red Hat и Capital One.
  • Рост открытого сотрудничества — Учитывая успех Facebook и Skype для личного обмена сообщениями, было реализовано много подобных решений для офиса. Таких как GoToMeeting или Slack. Теперь запатентованные решения сталкиваются с серьезной конкуренцией со стороны программ с открытым исходным кодом, которые предоставляют те же функции, но полностью открыты.
  • Использование искусственного интеллекта — мы можем быть очень далеко от действительно умных машин, но за глубокими методами обучения, с помощью которых компьютер может научиться путем обработки данных и моделирования нейронных систем, наше будущее.

Rocket.Chat

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

У RocketChat есть собственные приложения для Linux, Windows, MacOS, а также мобильные приложения для Android и iOS. Здесь даже есть собственное приложения для FirefoxOS, для настольных и мобильных устройств. А поскольку это Open Source проект, то это отличный выбор для разработчиков, жалеющих строить и развивать собственную платформу чата.

Mattermost

Другой отличной альтернативой для Slack есть Mattermost, ее история началась с компании — разработчика игр для HTML 5. Изначально это был игровой портал и приложение для обмена сообщениями, цель которого была найти геймеров за пределами Facebook. В итоге программа была переделана в решение для совместной работы в пределах компании, для таких случаев, когда компания не хочет, чтобы ее данные были получены провайдером. На данный момент — это отличная альтернатива Slack с открытым исходным кодом написанная на React и Go.

Mattermost объединяет все задачи коммуникации в одном месте, через удобный и интуитивно понятный интерфейс, удобный для поиска и доступный везде. Пользователи могут обмениваться сообщениями и файлами с помощью своих компьютеров и смартфонов, сохраняя всю важную информацию внутри ИТ инфраструктуры. Интерфейс Mattermost совместим с Slack и обеспечивает работу программного обеспечения разработанного для Slack. Есть две версии программы — одна рассчитана на работу с командами до 50 человек, а другая позволяет организовывать коммуникации между сотнями и тысячами пользователей.

Hubl.in

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

Hubl.in — свободное решение с открытым исходным кодом, для организации видеоконференций от компании Linagora, создателя платформы для совместной работы — OpenPaaS. Hubl.in поднимает связь в реальном времени на новый уровень, позволяя использовать браузер для организации видеоконференций, даже без каких либо плагинов.

Если вы читаете эту страницу, то вы можете попробовать Hubl.in прямо сейчас. Он основан на WebRTC, что позволяет реализовать децентрализованную связь между браузерами. Это значит, что ваша конференция не передается на Hubl.in никаким способом, это повышает безопасность и обеспечивает еще один уровень секретности.

MXNet

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

MXNet — это легкая библиотека машинного обучения, созданная DMLC разработчиками CXXNet, Minerva, и Purine2. Здесь применен опыт, полученный в этих проектах, а также смешан императивный и символический стиль программирования. MXNet использует планировщик динамических зависимостей, который автоматически паралеллизует как символические, так и императивные операции на лету. Уклон в сторону оптимизации делает MXNet быстрым и потребляющим немного памяти. Библиотека портативная и легкая, она легко масштабируется даже для нескольких машин. Можно даже использовать для таких задач, как распознавание образов на смартфоне. Группа DMLC хочет сделать открытое программное обеспечение широкодоступным. Проект MXNet тоже содержит набор руководств и схем для построения систем машинного обучения.

Bazel

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

Bazel стремится ускорить процесс сборки и повысить надежность за счет общего хранилища кода, в котором все программное обеспечение находится в состоянии открытого исходного кода. Здесь автоматизировано тестирование и релизы, используется как параллельность, так и кеширование, чтобы ускорить обработку. Особенно подходит для проектов с крупными базами кода, на основе нескольких языков программирования или для различных платформ. Основная особенность Bazel — тщательное тестирование в сложных условиях работы в Google. Текущая версия поддерживает Linux, OS X, но не Windows.

React Native

Разработчики мобильных приложений сталкиваются с трудным выбором: разрабатывать приложения для iOS или Android с помощью собственных инструментов, или воспользоваться кроссплатформенными. С одной стороны, родные приложения быстрее и предлагают лучший пользовательский интерфейс. Однако разработка такого приложения, означает — написать его, по крайней мере, два раза на самых разных языках программирования. Кроссплатформенные инструменты, такие как JavaScript позволяют им писать программу только раз, но эти приложения часто работают плохо и выглядят не очень красиво.

React Native — это OpenSource проект с открытым исходным кодом, поддерживаемый Facebook. Он позволяет двигаться сразу в двух направлениях. Создавая свои приложения с помощью библиотеки JavaScript React вы сохраняете логику работы приложений JavaScript, а также пользовательский интерфейс полностью нативный для обоих оболочек iOS и Android. Для разработчиков React Native представляет собой новый подход к написанию мобильных приложений — учиться раз, писать везде.

Kontena

Docker-контейнеры — революционный способ для развертывания приложений. Но многие организации все еще борются за решение для управления контейнерами.

Kontera — проект с открытым исходным кодом, для управления контейнерами. Kontera имеет много новых технологий и возможностей для ускорения развертывания. Здесь есть поддержка нескольких хостов, мульти-AZ контейнеры, сетевая технология Weave, VPN доступ к контейнерам, а также интуитивно понятный мастер развертывания. У Kontera есть все что компании может понадобиться для разработки, развертывания и контроля контейнерных систем. Она может быть установлена в любой облачной инфраструктуре. Поскольку это открытый исходный код, она скоро выйдет за рамки Docker и будет поддерживать контейнеры Windows, CoreOS PKT и другие контейнерные технологии.

Nulecule

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

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

InSpec

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

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

Hygieia

Технологические гиганты не одиноки в инвестировании в свободное программное обеспечение. В этом году Capital One попытались найти панель инструментов для разработчиков, и небыли обнаружены ни коммерческие решения ни OpenSource проекты. Поэтому компания создала собственную — Hygieia. Панель выпущена в прошлом году и ее исходный код опубликован на GitHub.

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

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

Glucosio

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

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

Vault

Компания из Сан-Франциско HashiCorp известна своим инструментом для создания и настройки легкой, портативной среды разработки — Vagrant. Новый проект с открытым исходным кодом этой компании — Vault, инструмент для безопасного управления секретами. Здесь могут находиться ключи, API, пароли, сертификаты, учетные данные сотрудников, и другая секретная информация. У HashiCorp отличные Open Source проекты, можно сказать — так держать.

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

Rancheros

Rancher Labs разработала высокоэффективную технологию запуска контейнеров — операционную систему в миниатюре, со всем необходимым для запуска контейнеров, но ничего больше. RancherOS — это дистрибутив Linux, размером 20 Мб, специально разработанный для простого способа запуска и управления контейнерами Docker. Идея заключается в том, что он похож на CoreOS, Но с одной особенностью — все здесь работает через Docker контейнеры, даже сама операционная система.

В RancherOS Docker работает непосредственно поверх ядра Linux и распределяет все сервисы пользовательского пространства как контейнеры Docker. Экземпляр системы Docker инициализирует все системные службы (Udev, DHCP, TTY) каждая из которых работает в отдельном контейнере. Экземпляр пользователя Docker создает отдельные контейнеры для всех пользователей, в пределах основного контейнера пользователя. RancherOS также обеспечивает обновление через контейнеры и может использовать различные системы управления контейнерами.

OWASP Security Knowledge Framework

OWASP Foundation (Проект Open Web Application Security) — это некоммерческое сообщество, которое предоставляет ресурсы и средства для обеспечения безопасности веб-приложений, которые разрабатывают OpenSource проекты. Многие разработчики не знают о рисках безопасности уязвимостей, с которыми они сталкиваются. С этой целью OWASP SKF (Security Knowledge Framework) обеспечивает свободный инструмент с открытым исходным кодом для обеспечения безопасности веб-приложений. Он также может служить учебным пособием, которое научит основам безопасности в веб-приложениях.

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

Выводы

Это были все новые Open Source проекты, отмеченные премией Black Duck. Награждение происходит каждый год, поэтому новые Open Source проекты за 2020 год мы увидим только в 2020.

Полный Python Developer в 2020 году: c нуля до мастера

Anonymous (afe129)

Гость

Станьте разработчиком Python 3 и получите работу! Создайте более 12 проектов, узнайте больше о веб-разработке, машинном обучении и многом другом! Присоединяйтесь к живому онлайн-сообществу, в котором более 100 000 разработчиков, и к курсам, проводимым экспертом отрасли, который фактически работал в Силиконовой долине и Торонто. Это совершенно новый курс Python, только что запущенный в сентябре 2020 года! Выпускники курсов Андрея сейчас работают в Google, Amazon, Apple, IBM, JP Morgan, Facebook и других ведущих технологических компаниях.

Изучайте Python с нуля, нанимайтесь на работу и получайте удовольствие от самого современного, современного курса Python по Udemy. Этот курс ориентирован на эффективность: никогда больше не тратьте время на запутанные, устаревшие, неполные учебники по Python. Этот всесторонний и основанный на проекте курс познакомит вас со всеми современными навыками разработчика Python (Python 3), и по пути мы создадим более 12 реальных проектов для добавления в ваше портфолио (вы получите доступ ко всем код из 12+ проектов, которые мы создаем, чтобы вы могли сразу же разместить их в своем портфолио)!

Учебная программа будет очень практической, так как мы начнем с того, чтобы стать профессиональным разработчиком Python. Мы начнем с самого начала, обучая вас основам Python и основам программирования, а затем перейдем к углубленным темам и различным областям карьеры в Python, чтобы вы могли получить практические навыки и быть готовыми к реальному миру.

Темы этого курса:

  • Основы программирования
  • Основы Python
  • Структуры данных
  • Объектно-ориентированное программирование на Python
  • Функциональное программирование на Python
  • лямбды
  • декораторы
  • генераторы
  • Тестирование на Python
  • отладка
  • Обработка ошибок
  • Обычные выражения
  • Понимания
  • Модули
  • Виртуальные среды
  • Среды для разработчиков (PyCharm, Jupyter Notebooks, VS Code, Sublime Text + еще)
  • Обработка файлов: изображение, CSV, PDF, текст + еще
  • Веб-разработка с Python
  • Машинное обучение с Python
  • Наука о данных с Python
  • Автоматизация с Python и Selenium
  • Сценарии с Python
  • Соскребание с помощью Python и BeautifulSoup
  • Обнаружение изображения
  • Визуализация данных
  • Kaggle, Pandas, NumPy, scikit-Learn
  • Электронная почта и SMS с Python
  • Работа с API (Twitter Bot, Password Checker, Translator)

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

Вот истина: большинство курсов обучают вас Python и делают именно это. Они показывают вам, как начать. Но дело в том, что вы не знаете, куда идти и как создавать свои собственные проекты.

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

Для кого этот курс:

  • Тот, кто хочет освоить Python 3;
  • Тот, кто хочет научиться кодировать;
  • Любой желающий повысить свои навыки и овладеть новым языком программирования;
  • Любой, кто хочет попасть в: веб-разработку, машинное обучение, науку о данных и другие горячие рынки труда.

СКАЧАТЬ КУРС:

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