تاریخ و فلسفه¶
پروژه BeeWare با یک سؤال ساده آغاز شد: چرا ابزارهایی که ما بهعنوان توسعهدهندگان پایتون استفاده میکنیم، با همان سرعتی که سایر فناوریهای روزمره ما پیشرفت میکنند، بهبود نمییابند؟
پایتون خود را بهعنوان یک زبان بسیار توانمند اثبات کرده است - برای تازهکاران قابلدسترس، اما در دستان متخصصان قدرتمند. پایتون بهسرعت در حال تبدیلشدن به بخش عمدهای از حوزه تحلیل داده، محاسبات علمی و توسعه وب است. و ابتکاراتی مانند Django Girls نشان دادهاند که با استفاده از پایتون میتوان دورههای آموزشی یکروزهای برگزار کرد که افراد بدون تجربه برنامهنویسی را با پایتون آشنا میکند؛ و در پایان یک روز، شرکتکنندگان یک وبسایت پویا با پشتیبانی پایگاه داده را توسعه و روی یک سرور عمومی قابل مشاهده مستقر میکنند.
با این حال، تجربهٔ توسعهدهنده برای کسی که با پایتون کار میکند گاهی بیشتر حال و هوای اوایل دههٔ ۹۰ میلادی را دارد تا هزارهٔ جدید. محیط توسعهٔ پیشفرض پایتون هنوز یک پنجرهٔ کنسول ۸۰×۲۵ است. برای کاربرانی که از محیط ویندوز یا اپل میآیند و به رابطهای گرافیکی بسیار دقیق و خوشطرح عادت دارند، این بازگشت سیساله میتواند تجربهای کاملاً بیگانه باشد.
و بله، ابزارهای توسعه یکپارچه (IDEها) وجود دارند که تجربهای بومی از اپلیکیشن برای نوشتن کد فراهم میکنند. اما این ابزارها از شما میخواهند که بهطور کامل روش IDE برای نگاه کردن به پروژه را بپذیرید. آنها اغلب به اندازهٔ مشکلاتی که حل میکنند، سردرد ایجاد میکنند.
و بدین ترتیب، با یک شکاف جالب بین «روش قدیمی» توسعه یونیکس در یک پنجره کنسول و «روش جدید» محیطهای توسعه یکپارچه (IDEها) مواجه میشویم.
فلسفه یونیکس¶
با این حال، لازم نیست اینطور باشد. اصل بنیادین فلسفه یونیکس این است که «هر ابزار یک کار را بهخوبی انجام میدهد». این فلسفه بسیار قدرتمند است و با گردآوری مجموعهای از ابزارهای بسیار متمرکز و مستقل، امکان تشکیل زنجیرههای ابزاری فوقالعاده قدرتمند را فراهم میکند.
متأسفانه بیشتر ابزارهای یونیکس این موضوع را طوری پیچیدهاند که گویی «همه ابزارها باید از رابط کنسول استفاده کنند». اما در فلسفه یونیکس هیچ چیزی وجود ندارد که بگوید ابزارها باید از رابط کنسول استفاده کنند؛ صرفاً چنین شده است.
پروژه BeeWare با این فرض آغاز شد که میتوانیم از هر دو دنیا بهترینها را داشته باشیم. میتوانیم زنجیرهای از ابزارهای قابل ترکیب داشته باشیم که هر یک یک کار را بهخوبی انجام میدهند. اما آن ابزارها همچنین میتوانند قابلیتهای خود را از طریق یک رابط کاربری گرافیکی غنی در دسترس قرار دهند.
بیشتر از صرفاً کد¶
اما موضوع فراتر از صرفاً کد است. یک پروژه نرمافزاری موفق به مستندات، مهارتهای طراحی، بازخورد و گزارشهای باگ نیاز دارد. جامعه BeeWare تصدیق میکند که تمام مشارکتها مهم هستند – نه فقط آنهایی که بهصورت درخواست کشش (pull request) در گیتهاب ارسال میشوند.
حتی در آن صورت هم آسان است که یک پروژه را در خلأ تصور کنیم، بهعنوان مجموعهی تمام مشارکتها. اما این هرگز صادق نیست. یک پروژهی متنباز دربارهی جامعه است.
تنوع و شمول¶
یک جامعهٔ متنوع، جامعهای قوی است. این بدان معناست که افراد با هر میزان تجربه، از هر پیشینه، هر نژاد، هر باور، هر گرایش و هر شیوهٔ بیان را بپذیریم. پروژهٔ BeeWare متعهد به ایجاد و حفظ یک جامعهٔ فراگیر، متنوع و پذیرا است.
برای اثبات این موضوع، ما یک پیشنهاد باز برای راهنمایی هر کسی که بخواهد بهعنوان مشارکتکننده درگیر شود داریم و یک مجموعه اصول رفتار که بهطور دقیق اجرا میشود. هر گزارشی از نقض آن اصول رفتار – حتی توسط اعضای ارشد جامعه – با احترام بررسی شده و بهطور مناسب اقدام خواهد شد.
سالم و پایدار¶
همچنین مهم است که اطمینان حاصل شود جامعه قابل دسترسی و پایدار باشد. متأسفانه این موضوع به بخشی پذیرفتهشده از فرهنگ متنباز تبدیل شده است که پروژههای «واقعی» متنباز باید بهطور کامل توسط داوطلبان توسعه یابند. این امر برای بسیاری از گروهها مانعی برای ورود ایجاد میکند؛ تنها کسانی میتوانند وقت آزاد خود را به داوطلبی اختصاص دهند که واقعاً وقت آزاد دارند.
این موضوع همچنین اغلب منجر به فرسودگی شغلی و سایر مشکلات سلامت روان در میان مشارکتکنندگان میشود. اینکه افسردگی، اضطراب و فرسودگی شغلی در جوامع توسعه نرمافزار اینقدر رایج هستند، نباید بهعنوان نشان افتخار یا نمایشی از تعهد یک تیم توسعه تلقی شود. این مشکلی است که باید مستقیماً با آن مقابله کرد و همانند یک باگ نرمافزاری به آن رسیدگی نمود - با راهحلهای فوری و برنامههای بلندمدت برای حذف علت سیستمی مشکل.
در حالی که ما برای مشارکتهای داوطلبان ارزش فوقالعادهای قائل هستیم، میدانیم که تلاشهای داوطلبانه به تنهایی راهی برای ایجاد یک جامعه سالم و پایدار نیست. به همین دلیل، پایداری مالی یک ملاحظه کلیدی در اداره پروژه BeeWare است. ما به عنوان یک جامعه، نقشی را که پول در فراهم کردن منابعی که به افراد امکان میدهد مشارکت را آغاز و به آن ادامه دهند، نادیده نمیگیریم. ما به عنوان یک جامعه، سازوکارهای پذیرفتهشدهای را برای افراد فراهم خواهیم کرد تا بتوانند به شیوههای معنادار از کار خود کسب درآمد کنند و تا حد امکان، به ازای کارشان به افراد دستمزد پرداخت شود - بدون آنکه آرمانهای توسعه متنباز به خطر بیفتد.
هدف¶
هدف نهایی پروژه BeeWare: انجام همان کاری که Django برای نرمافزارهای وب انجام داده است، برای نرمافزارهای موبایل و دسکتاپ که مستقیماً با کاربر سروکار دارند – قرار دادن مجموعهای از ابزارها و کتابخانهها در دست کاربران که به آنها امکان میدهد رابطهای کاربری غنی و بومی بسازند و آنها را روی دستگاههای خود مستقر کنند. این شامل موارد زیر است:
- ابزارهایی برای اجرای پایتون روی دستگاههای مختلف
- ابزارهایی برای بستهبندی یک پروژه پایتون تا روی آن دستگاهها اجرا شود.
- کتابخانههایی برای دسترسی به ویجتها و قابلیتهای بومی دستگاهها
- ابزارهایی برای کمک به توسعه، اشکالزدایی، تحلیل و این پروژهها.
هدف این است که این مجموعه ابزارها بهاندازهای ساده باشد که حتی تازهواردان کامل بتوانند در محیطی شبیه Django Girls از آن استفاده کنند؛ اما در عین حال بهاندازهای قدرتمند باشد که بتوان از آن برای راهاندازی اینستاگرام، پینترست یا دیسکاس بعدی بهره برد.
مهمتر از همه، هدف آن است که همهٔ اینها را بهعنوان یک جامعهٔ متنباز انجام دهد. فرآیند توسعهٔ متنباز ثابت کرده است که قابلاعتمادترین روش برای تولید نرمافزاری مستحکم و قابلاعتماد است، و این واقعیت که هر کسی میتواند به نرمافزار دسترسی داشته باشد، به این معناست که همه میتوانند با همان مجموعهٔ عالی ابزارها شروع کنند، چه متخصص باشند چه علاقهمند آماتور.
پایتون همهجا¶
یک پروژهٔ محاسباتی مدرن نمیتواند بزرگترین تحول در حوزهٔ محاسبات در ده سال گذشته را نادیده بگیرد. پایتون به اینکه یک زبان چندسکویی است، افتخار میکند. ده سال پیش، چندسکویی بودن به معنای در دسترس بودن برای ویندوز، مکاواس و لینوکس بود. امروزه محاسبات موبایلی بسیار مهمتر است. با این حال، گزینههای خوب برای برنامهنویسی پایتون روی پلتفرمهای موبایلی اندک است و کدنویسی چندسکویی موبایلی هنوز دستنیافتنی است.
BeeWare پلتفرمهای موبایل و سایر پلتفرمهای نوظهور (مانند ساعتها و دستگاههای گیرنده تلویزیون) را بهعنوان شهروند درجه یک اکوسیستم محاسباتی در آغوش میگیرد – چون اگر مردم این دستگاهها را دارند، چرا نباید بتوانند برای آنها با پایتون نرمافزار بنویسند؟
بومی همهجا¶
استفاده از تمها برای دستیابی به چندسکویی آسان است. با این حال، تشخیص اپلیکیشنهایی که با تم ساخته شدهاند آسان است – آنها همانهایی هستند که کاملاً مانند هیچ اپلیکیشن دیگری رفتار نمیکنند. ویجتها چندان درست به نظر نمیرسند، یا در یک اپلیکیشن OS X نوار منویی روی یک پنجره دیده میشود. تمها میتوانند تا حد زیادی نزدیک شوند – اما همیشه نشانههای آشکاری وجود دارد.
علاوه بر این، ویجتهای بومی همیشه سریعتر از یک ویجت عمومی تمدار هستند. در نهایت، شما از قابلیت بومی سیستم استفاده میکنید که تنظیم و بهینهسازی شده است، نه یک موتور ترسیم که روی یک ویجت عمومی قرار گرفته باشد.
تمها همچنین بسیاری از مزایای دسترسیپذیری پلتفرمهای بومی را از دست میدهند. سازندگان سیستمعاملهای مدرن زمان زیادی را صرف تنظیم امکانات برای افرادی میکنند که دچار اختلال حرکتی، بینایی یا شناختی هستند. اگر از ویجتهای بومی استفاده کنید، معمولاً این امکانات بهصورت رایگان در اختیار شما قرار میگیرند. اگر ویجتها را با یک تم بازسازی کنید، باید امکانات را نیز مجدداً پیادهسازی کنید.
BeeWare به جای استفاده از رویکرد مبتنی بر تم در توسعهٔ اپلیکیشن، از ویجتها و قابلیتهای بومی استفاده میکند.
بومی پایتون¶
BeeWare همچنین یک چارچوب بیپردهپوشی است که «پایتون در اولویت» را دنبال میکند.
ما پایتون را دوست داریم. ما ظاهر و نحوهٔ کارکرد آن را دوست داریم. اگر پایتون
بهعنوان یک گزینهٔ درجهٔ یک در پلتفرمی خاص در دسترس نباشد، هر کاری که لازم باشد
انجام میدهیم تا پایتون بهعنوان زبان توسعه در دسترس قرار گیرد. و هرگاه فرصتی
برای بهکارگیری شیوههای پایتون در یک رابط برنامهنویسی کاربردی (API) یا طراحی
داشته باشیم، دقیقاً همین کار را خواهیم کرد. این بدان معناست که ما از ژنراتورها،
مدیران زمینه (context managers)، فراخوانیهای غیرهمزمان yield from و موارد
دیگر استفاده خواهیم کرد تا بهترین رابط برنامهنویسی کاربردی بومی پایتون را برای
توسعه اپلیکیشنهای چند سکویی فراهم کنیم.
ما همچنین به آینده نگاه میکنیم - این بدان معناست که ما منحصراً از پایتون ۳ پشتیبانی میکنیم.
تجربه بومی¶
تجربهٔ استفاده از هر ابزاری با فرایند نصب آغاز میشود. بخشی از فلسفه «بومی همهجا»ی BeeWare، بهکارگیری مکانیزمهای بومی مناسب برای نصب است. اگر از ابزاری در فضای کاربر استفاده میکنید، باید بهصورت بستهای به شما ارائه شود که همانطور که هر ابزار دیگری را نصب میکنید—چه از طریق فروشگاه اپلیکیشن، چه با استفاده از نصبکننده یا یک بسته اجرایی ساده—نصب شود. کاربران نهایی نباید بدانند که شما برنامه را با پایتون نوشتهاید.