Історія та філософія¶
Проєкт BeeWare розпочався з простого запитання: чому інструменти, якими ми користуємося як розробники Python, не вдосконалюються такими ж темпами, як решта технологій, що ми використовуємо щодня?
Python зарекомендував себе як надзвичайно функціональна мова — доступна для початківців, але потужна в руках експертів. Python стрімко стає важливою складовою сфери аналізу даних, наукових обчислень та веб-розробки. А такі ініціативи, як Django Girls, продемонстрували, що за допомогою Python можна провести одноденний навчальний курс, який знайомить людей без досвіду програмування з Python; і вже наприкінці дня учасники розробляють та розгортають динамічний веб-сайт на базі бази даних, розміщений на загальнодоступному сервері.
Однак досвід розробки для тих, хто пише на Python, іноді більше нагадує початок 90-х років, ніж нове тисячоліття. Стандартним середовищем розробки для Python досі залишається консольне вікно розміром 80x25. Для користувачів, які перейшли з середовища Windows або Apple, де вони звикли до детальних, добре продуманих графічних інтерфейсів, цей «повернення в минуле» на 30 років може стати абсолютно незвичним досвідом.
І, так, існують IDE (інтегровані середовища розробки), які забезпечують досвід роботи з нативними додатками під час написання коду. Але ці інструменти вимагають від вас повного прийняття підходу IDE до роботи з проєктом. Часто вони створюють у процесі розробки стільки ж проблем, скільки й вирішують.
Отже, ми маємо цікавий розкол між «старим підходом» до розробки під Unix у консольному вікні та «новим підходом» — універсальними інтегрованими середовищами розробки (IDE).
Філософія Unix¶
Однак це не обов'язково має бути саме так. Основний принцип філософії Unix полягає в тому, що «кожен інструмент виконує одну задачу — і робить це добре». Це дуже потужна філософія, яка дозволяє створювати надзвичайно ефективні ланцюжки інструментів шляхом об'єднання набору вузькоспеціалізованих, незалежних інструментів.
На жаль, більшість утиліт UNIX перекрутили це так, що тепер це також означає: «усі утиліти повинні використовувати консольний інтерфейс». Однак у філософії UNIX немає нічого, що б передбачало обов’язкове використання консольного інтерфейсу — просто так склалося.
Проєкт BeeWare розпочався з ідеї, що ми можемо поєднати найкраще з обох світів. Ми можемо створити ланцюжок модульних інструментів, кожен з яких якісно виконує одну конкретну функцію. Водночас ці інструменти можуть надавати доступ до своїх функцій за допомогою багатофункціонального графічного інтерфейсу користувача.
Більше, ніж просто код¶
Однак справа не лише в коді. Для успішної реалізації програмного проекту необхідні документація, навички проектування, відгуки та звіти про помилки. Спільнота BeeWare визнає, що всі внески є важливими — не лише ті, що надходять у вигляді pull-запитів на GitHub.
Навіть у такому випадку легко уявити собі проект у відриві від реального контексту, як суму всіх внесків. Але це ніколи не так. Суть проєкту з відкритим кодом — у спільноті.
Різноманітність та інклюзивність¶
Різноманітне співтовариство — це сильне співтовариство. Це означає прийняття людей з будь-яким рівнем досвіду, з будь-яким походженням, будь-якої раси, віросповідання, орієнтації та способу самовираження. Проєкт BeeWare прагне розвивати та підтримувати інклюзивне, різноманітне та гостинне співтовариство.
На підтвердження цього ми пропонуємо відкриту можливість наставництва для всіх, хто бажає долучитися до проекту як учасник, а також Кодекс поведінки, дотримання якого суворо контролюється. Будь-які повідомлення про порушення цього Кодексу поведінки — навіть з боку досвідчених членів спільноти — розглядатимуться з повагою, і щодо них вживатимуться відповідні заходи.
Здоровий та сталий¶
Також важливо забезпечити доступність та стійкість спільноти. На жаль, у культурі відкритого програмного забезпечення вже стало загальноприйнятим, що «справжні» проекти з відкритим кодом мають розроблятися виключно силами волонтерів. Це створює бар’єр для вступу багатьох груп — адже єдині люди, які можуть присвячувати свій вільний час волонтерській діяльності, — це ті, у кого є вільний час.
Це також часто призводить до вигорання та інших проблем із психічним здоров’ям серед учасників. Той факт, що депресія, тривога та вигорання є настільки поширеними в спільнотах розробників програмного забезпечення, не слід розглядати як знак честі чи доказ відданості команди розробників. Це проблема, яку потрібно вирішувати рішуче, так само, як вирішують програмні помилки — за допомогою негайних тимчасових рішень та довгострокових планів щодо усунення системної причини проблеми.
Хоча ми надзвичайно цінуємо внесок волонтерів, ми також усвідомлюємо, що лише волонтерських зусиль недостатньо для розвитку здорової та стійкої спільноти. Саме тому фінансова стійкість є ключовим фактором у діяльності проєкту BeeWare. Як спільнота, ми не ігноруємо роль, яку відіграють кошти у забезпеченні ресурсів, що дозволяють людям розпочинати та продовжувати робити свій внесок. Ми, як спільнота, забезпечимо загальноприйняті механізми, що дозволять окремим особам отримувати дохід від своєї роботи у значущий спосіб, і, де це можливо, винагороджувати людей за їхню працю — без шкоди для ідеалів розробки з відкритим кодом.
Мета¶
Кінцева мета проєкту BeeWare: зробити для мобільного та настільного програмного забезпечення, призначеного для користувачів, те саме, що Django зробив для веб-програмного забезпечення, — надати користувачам набір інструментів та бібліотек, які дозволять їм розробляти багатофункціональні нативні користувацькі інтерфейси та розгортати їх на своїх пристроях. Це включає:
- Інструменти, що дозволяють запускати Python на різних пристроях,
- Інструменти для створення дистрибутива проекту на Python, щоб його можна було запускати на цих пристроях,
- Бібліотеки для доступу до вбудованих віджетів та можливостей пристроїв,
- Інструменти, що допомагають у розробці, налагодженні та аналізі цих проєктів.
Мета полягає в тому, щоб цей набір інструментів був достатньо простим у використанні для абсолютних новачків у рамках таких заходів, як Django Girls, але водночас достатньо потужним, щоб на його основі можна було створити наступний Instagram, Pinterest чи Disqus.
Найголовніше, що все це планується реалізувати в рамках спільноти з відкритим кодом. Процес розробки з відкритим кодом зарекомендував себе як найнадійніший спосіб створення стабільного та надійного програмного забезпечення, а те, що доступ до нього має кожен, означає, що всі — як експерти, так і захоплені аматори — можуть розпочати роботу з однаковим набором чудових інструментів.
Python скрізь¶
Сучасний ІТ-проект не може ігнорувати найважливіше досягнення в галузі обчислювальної техніки за останні 10 років. Python пишається тим, що є кросплатформовою мовою. 10 років тому кросплатформовність означала доступність для Windows, macOS та Linux. Сьогодні ж мобільні технології відіграють набагато важливішу роль. Незважаючи на це, хороших варіантів для програмування на Python на мобільних платформах небагато, а міжплатформове мобільне програмування досі залишається недосяжним.
BeeWare розглядає мобільні та інші нові платформи (такі як смарт-годинники та телевізійні приставки) як повноправних учасників обчислювальної екосистеми — адже якщо у людей є ці пристрої, чому б їм не мати можливості писати для них програмне забезпечення на Python?
Скрізь як вдома¶
За допомогою тем легко досягти кросплатформовості. Однак додатки, створені з використанням тем, легко розпізнати — це ті, що поводяться не зовсім так, як інші додатки. Віджети виглядають не зовсім правильно, або у вікні додатка для OS X з’являється панель меню. Теми можуть забезпечити досить близький результат — але завжди є характерні ознаки.
Крім того, нативні віджети завжди працюють швидше, ніж універсальні віджети з тематичним оформленням. Адже ви використовуєте нативні системні можливості, які були налагоджені та оптимізовані, а не механізм малювання, накладений поверх універсального віджета.
Теми також не мають багатьох переваг нативних платформ у плані доступності. Розробники сучасних ОС приділяють багато часу налаштуванню афордансів для людей з обмеженими фізичними можливостями, порушеннями зору або когнітивних функцій. Якщо ви використовуєте нативні віджети, ці афорданси зазвичай надаються автоматично. Якщо ж ви перепрограмовуєте віджети за допомогою теми, вам доведеться також перепрограмувати й афорданси.
BeeWare використовує вбудовані віджети та вбудовані функції, а не підхід до розробки додатків на основі тем.
Вбудований у Python¶
BeeWare — це також фреймворк, який беззастережно дотримується принципу «Python first». Нам подобається Python. Нам подобається, як він виглядає і як працює. Якщо Python недоступний як повноцінний варіант на певній платформі, ми зробимо все необхідне, щоб зробити Python доступним як мову розробки. А коли у нас з’явиться можливість застосувати ідіоми Python для API чи дизайну, ми саме так і зробимо. Це означає, що ми будемо використовувати генератори, менеджери контексту, асинхронні виклики yield from та інші засоби, щоб забезпечити найкращий нативний для Python API для розробки кросплатформних додатків.
Ми також дивимося в майбутнє — це означає, що ми підтримуємо виключно Python 3.
Досвід корінних жителів¶
Досвід користування будь-яким інструментом починається з процесу встановлення. Частиною філософії BeeWare «Native everywhere» є використання відповідних нативних механізмів для встановлення. Якщо ви використовуєте інструмент у просторі користувача, він має надаватися вам у вигляді пакета, який встановлюється так само, як і будь-який інший інструмент — чи то через магазин додатків, інсталятор, чи простий виконуваний пакет. Кінцеві користувачі не повинні знати, що ви написали програму на Python.