В одній із статей серії Програміст Початківець я згадував про ОпенСорс як хорошу можливість набути свою першу реальну практику. Так от, у цьому пості розкажу трохи більше про те, що таке цей OpenSource, чому варта спробувати себе у ньому та як це зробити.
Я сам являюсь контріб’ютором Plone CMS, дописував патчі до Django та Python, а також регулярно комічу код в додатки до цих систем, і розробляю власні, які також публікую як OpenSource.
Що таке OpenSource
В цій статті є дуже класно та детально описано, що таке OpenSource код і як його публікувати та використовувати у власних проектах.
Але якщо коротко, OpenSource проект – це проект з відкритим вихідним кодом, доступним публічно. Ви можете брати існуючі OpenSource проекти, читати їхній код, змінювати його, використовувати, та публікувати власні зміни знову ж таки під відповідними OpenSource ліцензіями. Більше про ліцензії OpenSource код читайте тут.
Також власний код можете відкривати для зовнішнього світу зазначаючи, що це OpenSource та пробувати збирати аудиторію зацікавлених навколо нього.
Для чого він нам потрібен?
Для чого нам взагалі може бути цікава ідея відкритого вихідного коду та OpenSource проектів?
1. Навчання
Для початківця, опенсорс – це впершу чергу можливість набути практики в реальному проекті. OpenSource – це хороше місце знайти допомогу в обмін на власний час присвячений проекту.
В наш час початківець має необмежений постійний доступ до безлічі OpenSource проектів (на тому ж github.com), з яких може безпосередньо навчатись. Прочитання кількох рядочків коду принесе значно більше користі, ніж прочитання 500-ста сторінок підручника по програмуванню.
OpenSource – це хороша можливість повчитись у кращих програмуванню читаючи їхній код. Ви виступаєте волонтером, безплатно надаючи свій час, а взамін отримуєте знання, досвід, і експертизу спеціалістів.
2. Допомога Іншим
OpenSource початково придумали для того, щоб допомагати один одному. Програмісти та компанії, які публікують свої OpenSource проекти шукають допомоги ззовні, для підтримки власного проекту. А з іншої сторони вони надіються, що їхній продукт буде корисний і іншим.
Якщо програміст використовує існуючий опенсорс проект у власних цілях, тоді є шанси, що він захоче певним чином покращити даний проект і поділиться своїми напряцюваннями з оригінальними розробниками та іншими програмістами. Таким чином корисний код “обростає” аудиторією зацікавлених сторін (розробники, замовники і т.д.).
3. Кар’єра
Для вже сформованого спеціаліста OpenSource також може зіграти важливу роль.
Якщо ви приймаєте участь в популярному OpenSource проекті, або самі опублікували код, що набув популярності, ви автоматично стаєте експертом та авторитетом серед відповідної аудиторії розробників.
Це дає змогу легше знаходити вище оплачувані позиції. Якщо ви фрілансер – тоді, це допомагає знаходити дорожчих клієнтів.
Буває навіть так, що ваш черговий опенсорс додаток стає на стільки популярний, що ви починаєте надавати преміум підтримку вашим клієнтам та жити за рахунок цього єдиного крутого плагіна, який усі хочуть використовувати. Приклад WordPress SEO плагін – Yoast.
4. Тусовка
Навколо популярних опенсорс проектів формуються великі спільноти цікавих людей. Ось кілька причин, чому варта бути активним у таких спільнотах:
- задоволення від спілкування з людьми із спільними інтересами;
- можливість навчатися у кращих за вас;
- можливість знайти партнерів, заповників, працівників для вашої чергової крутої ідеї;
- можливість подорожувати (конференції, спринти, локальні події наколо опенсорс проекта дозволять покататись по світу; я свого часу таким чином відвідав Брістоль та Вашингтон будучи на конференції по Plone CMS).
5. Бути в курсі Подій та Новинок
ОпенСорс завжди асоціюється із новизною, експериментами, швидкими та частими змінами, опробовуванням останніх техніх та технологій.
Тому будучи активним учасником опенсорс проектів ви завжди будете в курсі останніх новин у світі програмування. Зможете бачити куди рухається велика спільнота однодумців та перебирати останні круті практики у свої повсякденні робочі проекти.
Також опенсорс дає можливість поекспериментувати з новими технологіями та фішками, коли основний проект на роботі трохи набрид, та хочеться спробувати чогось нового.
Надіюсь тепер ви погодитесь, що розглянути OpenSource проекти все таки варто 😉
Як почати?
Тепер трошки більше до дій. Детальна покрокова інструкція з чого варто починати:
- Вибираємо мову. Мабуть ту як знаєте, або можливо хочете освоїти нову.
- Вибираємо проект. Краще обирати проект, який вам потрібно для власних буденних задач.Наприклад я, розробяючи веб ресурси з допомогою Plone CMS, Python та Django фреймворка є контріб’ютором у дані проекти. Дописую патчі, едони та пропоную новий функціонал. Завжди стараюся або в уже існуючий опенсорсний плагін/бібліотеки додати свій код, або, при можливості, напряму в ядро системи.Одним словом, в залежності від вашої причини (див. попередню секцію) обираєте підходящий проект. Наприклад: хочете бути частиною класної тусовки? – обирайте проект з великою спільнотою фанів, де часто оргінізовуються події, спринти та конференції. Хочете почати з якомога простіших технічних завдань? – проста невеличка, але популярна бібліотека вам підійде.Проекти можна шукати ось тут https://openhatch.org. Там ви можете приєднатися до існуючого проекту, або почати власний і спробувати назбирати довкола нього зацікавлениих людей. Проект OpenHatch.org спеціально призначений для полегшення життя розробникам, які роблять свої перші кроки у світі ОпенСорсу.
Також тут мозіла пропонує різноманітні опенсорсні проекти залежно від мови та технології, які вас цікавлять.
Ну і звичайно усім відомий github.com. Там ви знайдете безліч бібліотек, фреймворків, едонів з відкритим кодом. Можна шукати по технологіях, мовах програмування, популярності, активності розробки. Я свої опенсорс проекти тримаю саме там.
- Починаємо з багфіксів. Починати з простих невеликих завдань, як от ремонт поломок в проекті, є одним з найкращих способів познайомитися з кодом проекту, його спільнотою та набратися практики.Більшість популярних опенсорс проектів мають свою систему обліку відкритих завдань, де ми можемо знайти потрібні нам задачки та почати працювати над ними.Наприклад на github.com кожен проект має закладку Issues (це список завдань, проблем та відкритих питань по проекту). Заходите туди та обираєте завдання те, яке вам до душі, призначаєте його собі і починаєте роботу. В процесі роботи можна проблемку обговорювати там в коментарях та отримувати поради від спеціалістів задіяних у проекті.Але тут є одна проблема. Далеко не у кожному проекті можна легко зрозуміти, який баг є тривільним, а який складним. Нам, як початківцям важливо вміти та знати як відрізнити складне завдання від простого.
Наприклад в Plone CMS проекті розробники спеціально маркують малі, тривіальні тікети міткою greenbelt. Таким чином ви можете знайти саме таке завдання і бути впевненим, що воно вам не буде занадто складним.
Нажаль, не у всіх проектах є таке маркування простих та складних завдань, тому приходиться обирати в сліпу. В будь-якому випадку рекомендую посмикати кількох людей із спільноти проекту, щоб дали кілька рекомендацій і вказали на потрібні вам завдання. Частина проектів має IRC канали (онлайн чати), де можна з ними напряму поспілкуватися.
В наступній секції ми оглянемо кілька опенсорс проектів.
- Йдемо до більших завдань. Коли успішно завершили простіші завдання та баги, варто братися за більш серйозні завдання в проекті. Це може бути розбудова нового функціоналу, повний рефакторинг якогось існуючого модуля. Також ви можете запропонувати власні ідеї для розгляду. Зазвичай такі ідеї обговорюються в спільноті і вирішується разом чи варта дану зміну вводити в ядро проекту чи ні.
- До цього моменту ви вже познайомитеся з масою людей, що крутяться навколо проекту. Тому далі рекомендую відвідати найближчу подію присвячену обраному проекту. Це може бути конференція, спринт, локальна зустріч користувачів та розробників. Зустріти вживу людей, з якими взаємодіяв лише онлайн, є дуже класним досвідом та можливістю краще відчути атмосферу і цінності обраного вами опенсорсного проекту.
Наступні кроки вже на ваш розсуд 😉
Приклади OpenSource Проектів
І на завершення невеличкий огляд кількох популярних опенсорсних проектів:
Mozilla
Почати контріб’ютити у даний проект є досить просто. Існує кілька варіантів як почати:
1. Що я можу зробити для Мозіли?
Цей сайт порадить вам проект під ваші вміння та навички. Ви розказуєте, що ви вмієте і отримуєте наприкінці підходящий вам проект.
2. Bugs Ahoy!
Цей ресурс особливо класний для тих, хто вперше волонтерить для мозіли. Там ви можете знайти масу проблемок, що чекають вашої уваги. Класно те, що він категоризує завдання на Прості та Складні. Також він дозволяє вам відфільтрувати баги по потрібній вам мові програмування та технології.
3. Додаткові Сторінки
Також Mozilla підготувала велику кількість документації та сторінок, що пояснюють процеси дописування коду, документації, як почати, де і кого контактувати. Ось невеликий список потрібних вам сторінок:
- Як почати з DevTools
- Як почати з Mozilla.org
- Як почати з Addons
- Як почати в Mozillians
- Як почати в SUMO (супорт)
Wikipedia
Більшість людей на планеті чули про вікіпедію. Wikipedia підтримується Фундацією Wikimedia. Вони маркують власні прості завдання міткою ‘easy’. Кілька лінків для початку будуть корисними:
- Як почати
- Як стати MediaWiki Hacker
- Інсталяція Mediwiki на локальній машині
- IRC канал #mediawiki
- Невеликі баги
Apache
Організація Apache підтримує та розробляє одночасно кілька проектів. На projects.apache.org ви можете знайти більше, ніж 140 проектів! Ви можете обрати будь-який з них.
Тут є сторінка для початківців, а тут деталі, про те як працювати з Apache Фундацією.
Python
Щоб почати з мовою Python просто переходіть за оцим лінком. Це путівник розробника самої мови Пітон. Він починаються із клонування репозиторію із сорсом мови і проведе вас аж до моменту, де покаже як знаходити прості існуючі завдання. Рекомендовано починати з документаційних завдань, тоді переходити до прости баг фіксів. Далі:
Django
Django – це веб-фреймворк написаний на мові програмування Python та використовуваний деякими досить великими компаніями, як Disqus, Instagram, Transifex, і т.д.
Щоб почати дописувати у даний фреймворк ознайомтесь з оцією документацією. Тут можна знайти деталі, контакти, IRC канали, лінки на списки помилок та задач проекту.
Як і більшість інших проектів, Django також надає список простих завдань для новачків. Тут можна його переглянути, також трохи отут.
Також Django підтримує сторінку з порадами для новачків: https://docs.djangoproject.com/en/1.6/internals/contributing/new-contributors/
***
Думаю тепер у вас предостатньо необхідної інформації, прикладів та інструкцій для наступних дій, щоб з головою поринути у світ відкритого коду!
А ви уже задіяні в якомусь із опенсорсних проектів? Яка ваша причина номер один працювати над опенсорс проектом? Діліться своїми успіхами у коментарях!
…чому вартO спробувати себе…
…також регулярно комічу код в додатки до цих систем[-,-] і розробляю власні,…
В цій статті [-Є-] дуже класно та детально описано,..
Також власний код можете відкривати для зовнішнього світу зазначаючи, що це OpenSource[,] та пробувати збирати аудиторію зацікавлених навколо нього.
Для початківця[-,-] опенсорс – це[,] В Першу чергу[,] можливість набути практики в реальному проекті. OpenSource – це хороше місце знайти допомогу в обмін на власний час[,] присвячений проекту.
OpenSource – це хороша можливість повчитись у кращих програмуванню[,] читаючи їхній код.
Програмісти та компанії, які публікують свої OpenSource проекти(треба: OpenSource-проекти)[,] шукають допомоги ззовні[-,-] для підтримки власного проекту. А з іншої сторони[,] вони надіються, що їхній продукт буде корисний і іншим.
опенсорс[-]проект …і поділиться своїми напрАцюваннями…
Якщо ви приймаєте участь в популярному OpenSource проекті [-,-] або самі опублікували код…
… ваш черговий опенсорс додаток(треба: опенсорс-додаток) стає на стільки(треба: настільки) популярний, що…
Ось кілька причин, чому вартO бути активним…
…можливість знайти партнерів, заMовників,..
… локальні події наВколо опенсорс[-]проекта дозволять покататись по світу; я свого часу таким чином відвідав Брістоль та Вашингтон[,] будучи на конференції по Plone CMS).
І ще дуже багато помилок на кожному кроці, якщо це вам цікаво. Готова безкоштовно допомогти вам в редагуванні ваших матеріалів, якщо забажаєте. Колись мені казали, що в інтернеті прийнято писати з помилками. Це дуже печально.
Добрий день, Віталій. Я, для практики, написав свій проект на Django.
Я маю багато облікових записів на сервісах, які не впровадили OpenID з тої, чи іншої причини. Пам’ятати усі логіни/паролі – напряжно, бо сервісів більше десятка, а на деяких маю кілька облікових записів. Ясна річ – паролі усюди різні, тому з’явилась проблема їх запам’ятовувати чи зберігати. Спеціалізованим сервісам по збереженню паролей в інтернеті я не довіряю(привіт, параноя). Тому написав свій:
1. Десь на VPS, по секретній адресі, на секретному порті висить мій додаток з двох сторінок: авторизації та вводу/виводу даних
2. Користувач в системі, ясна річ, один – один.
3. На сторінці з даними є формочка для додавання своїх даних: сервіс, логін до нього, пароль, імейл, телефон. Так як з’єднання шифроване, ніяких маніпуляцій на клієнті з даними не проводимо.
4. На сервері проганяємо отримані данні через AES(симетричний) алгоритм і зберігаємо в SQLite. Таємний ключ знаєте ви і сервер.
5. Віддаємо дані на ту ж саму сторінку. Увага, дані відправляються в зашифрованому вигляді. На клієнті верстаємо файну табельку і замість довгого набору символів шифротексту показуємо зірочки ********.
6. Тиснемо на сервіс, дані якого ми хочемо продивитись, вводимо ключ, CryptoJS розшифровує дані, показує їх і за 5 секунд ховає їх.
Ось така параноїдальна ідея. Це те, що я вже зробив. У планах: backup за допомогою Celery. Бекапити базу планую кудись в “хмару”.
Для повноти параної – можна шифрувати усе на клієнті навіть при HTTPS.
Як ви вважаєте, така ідея як Open Source проканає?
Щодо сервісі для зберігання то я використовую два:
* локальну програму Gorilla
* онлайн сервіс passpack
проблем до сих пір з ними не мав.
Дану ідею я вже десь бачив серед опенсорс проектів імплементовану. Пошукай на github, або просто погугли.
Як опенсорс “все проканає”, важливо що ти хочеш тим досягнути. Якщо набути практики – тоді по-любому корисно буде, якщо ж популярності проекту – проведи дослідження чи то дійсно потрібна річ серед розробників, і чи існують вже рішення подібні.
Може трішки не в тему, але було б цікаво почитати статтю про використання GIT, тобто такий собі “швидкий старт”.
ага, це у мене в календарі є 😉