پرستاشاپ پس از 1.7
{این مقاله در ۲۳ آذر ۱۴۰۰ به زبان انگلیسی در اینجا منتشر شده و در تاریخ ۱۸ اسفند ۱۴۰۱ ترجمه شده است!}
پنج سال پیش پرستاشاپ 1.7 با معرفی Symfony، قالب کلاسیک و امکان قالب فرزند، بهبودهای رابط و کلی تغییر دیگر منتشر شد. با هر هشت نسخه مینوری که در ادامه منتشر شد، 1.7 هم از لحاظ امکانات و هم از لحاظ پایداری رشد کرد. بلوغ این نسخه با موفقیتش شناخته میشود: با بیش از 170,000 فروشگاه شناسایی شده در زمان نوشتن این مقاله (به زبان اصلی در تاریخ ۲۳ آذر ۱۴۰۰) این نسخه محبوبترین نسخه پرستاشاپ در وب است.
پرستاشاپ 1.7 با یک تغییر فنی جسورانه به سمت چیزی که ما به آن «معماری آینده» میگوییم حرکت کرد. سال گذشته ما در مورد برخی ایدههای مستحکم به منظور کمک به پیشرفت پروژه در آن مسیر گفتگو کردیم، که بعضی از آنها همان موقع در حال پیاده سازی در نسخه 1.7 بودند. همانطور که در آن مقاله گفتیم، رویای دگرگونی {transformation} پرستاشاپ در یک تصویر واحد نمیگنجد – کار زیادی پیش رو داریم و این زمانبر است.
در سال ۲۰۱۸، ما گفتیم که قصد تکمیل مهاجرت بخش مدیریت پرستاشاپ به سمفونی را در طول عمر 1.7 داریم که نسخه ماژور بعدی بر یک بنیان تمیز ساخته شود. اگر چه با حرکت پروژه به سمت جلو، مهاجرت ثابت کرد که به طور قابل ملاحظهای پیچیدهتر از تصور بود. همچنین با وجود پیشرفت بزرگی که در پنج سال صورت گرفت، هنوز کار زیادی برای انجام باقی مانده است.
اگرچه مهاجرت به صورت پیوسته به جلو حرکت میکند، تعداد زیادی از پروژههای بازطراحی {refactoring} (که بعضی از آنها برای حل مشکلات قدیمی مورد نیاز بودند) بیشتر و بیشتر به آینده موکول میشود و در انتظار نسخه ماژور بعدی میمانند. آیا با عقل جور در میآید که آن پروژهها را برای پنج سال دیگر به تعویض انداخت تا مهاجرت تکمیل شود؟
به علاوه، نگهداری یک نسخه نرمافزار، بدون معرفی تغییرات ناسازگار-بانسخقبلی {backward-incompatible} دشوار است و به مرور زمان بدتر هم میشود. هر ساله با انتشار نسخههای جدید PHP (و رها شدن نسخههای قبلی)، کتابخانهها مجبور به تکامل شده تا عقب نمانند. سیمفونی 3.4 هم به پایان زندگی خود رسیده است. پرستاشاپ نمیتواند ریسک استفاده از کتابخانههای منسوخ و رها شده را بپذیرد و در نتیجه باید به روز باقی بماند.
همانطور که سال قبل گفتیم، فکر میکنیم یکی از چالشهای کلیدی ما برای دست یافتن به دگرگونی فنی پرستاشاپ در پیدا کردن سرعت مناسب نهفته است، به نحوی که هم قابل پیش بینی بوده و هم به تدریج اتفاق بیافتد. ما باور داریم که بهترین پاسخ برای این هدف هدایت پروژه به سمت چرخههای تکرار شونده از نسخههای کوچکتر، متمرکزتر و زودبهزودتر است – که هر کدام بر پایه کارهای انجام گرفته در نسخه قبلی ساخته میشود.
معرفی یک نقشه راه جدید
در کنوانسیون Semantic Versioning (SemVer) تنها اجازه معرفی تغییرات ناسازگار-بانسخقبلی در نسخههای ماژور داده شده است. یعنی برای تقویت دگرگونی فنی پرستاشاپ، نسخههای ماژور باید زودتر از هر پنج سال یکبار منتشر شوند. در همین حال، جامعه [پرستاشاپ] نیاز به زمان برای سازگاری با تغییرات دارد، چرا که این اتفاق برای صاحبان فروشگاه و توسعهدهندگان هزینه دارد. آنها نیاز به دیدی دارد تا بدانند منتظر چه تغییراتی باید باشند، چه زمانی با آنها روبرو میشوند و در نهایت، سرمایهگذاری آنها چقدر دوام میآورد تا مجدد نیاز به سازگاری پیدا کنند.
این نیاز به یک تعادل حساس دارد: تغییر بیش از حد آرام، باعث منسوخ شدن پروژه میشود؛ تغییر بیش از حد سریع هم هزینه بالایی بر جامعه تحمیل میکند. با توجه به این، پیشنهاد ما این است.
نقشه راه جدید انتشار بیشتر به تعریف SemVer پایبند خواهد بود: زمانی یک نسخه «ماژور» در نظر گرفته میشود که تغییر اساسی {breaking changes} معرفی شود، در حالیکه نسخه مینور تنها امکاناتی را به شیوه سازگارپذیری {retrocompatible} اضافه میکند. با دنبال کردن سختگیرانه این اصول، ارتقای از یک نسخه ماژور به نسخه مینور بعد از آن، به آسانی ارتقا به یک نسخه پچ {Patch} خواهد بود، چرا که انتظار میرود همه چیز به همان نحو کار کند. با توجه به این موضوع، یک نسخه ماژور لزوماً به معنی تغییرات بزرگ نیست و فقط بعضی تغییرات را شامل میشود.
از انتشار بعدی، پرستاشاپ تغییر بین نسخههای ماژور را به منظور تمرکز بر بازطراحی و پیشرفت فناوری، و نسخههای مینور را برای تمرکز بر امکانات جدید و بهبودیافته ارائه خواهد کرد. یعنی انتشار بعدی پرستاشاپ یک نسخه ماژور خواهد بود که به دنبال آن یک نسخه مینور خواهد آمد و سپس یک نسخه ماژور و بعد یک نسخه مینور و به همین ترتیب ادامه خواهد یافت.
هدف این است که هر ۶ تا ۹ ماه یک انتشار صورت گیرد. از آنجا که هر یک نسخه در میان، نسخه ماژور خواهد بود، جامعه میتواند هر ۱۲ تا ۱۸ ماه انتظار یک نسخه ماژور را داشته باشد.
حالا بیاید در مورد پشتیبانی صحبت کنید. در حال حاضر، نسخههای پچ حداکثر ۶ هفته بعد از لحظهای که نگهدارندهها {maintainers} تصمیم میگیرند که یک باگ، انتشار یک نسخه پچ را توجیه میکند، منتشر میشوند. از آنجا که پچها فقط برای آخرین نسخه منتشر میشوند، این بدان معنی است که پشتیبانی یک نسخه مینور مشخص از پرستاشاپ عموماً به محض انتشار نسخه مینور بعدی به پایان میرسد (مثلاً پشتیبانی نسخه 1.7.7.9 در زمان انتشار نسخه 1.7.8.0 به پایان رسید). این در نقشه راه جدید انتشار هم صادق است.
اگرچه، ما متوجه سختی ارتقا به یک نسخه ماژور نسبت به ارتقا به یک نسخه مینور یا پچ هستیم، و اینکه مردم ممکن است به محض انتشار یک نسخه ماژور به آن ارتقا ندهند. به همین دلیل، ما تصمیم گرفتیم که تا ۱۲ ماه بعد از انتشار نسخه ماژور بعدی، انتشارهای مینور به منظور رفع باگهای امنیتی و حیاتی برای نسخه ماژور فعلی را پشتیبانی کنیم.
اینجا یک نقشه راه ایدهآل از انتشار و پشتیبانی ما را میتوانید مشاهده کنید:
به طور خلاصه:
- یک انتشار هر ۶ تا ۹ ماه
- نسخههای مینور و ماژور یکی در میان
- در صورت نیاز، نسخه پچ بین نسخههای مینور/ماژور
- تا یک سال اضافه برای رفع مشکلات حیاتی برای نسخههای مینور
به پرستاشاپ 8 سلام کنید
انتشار بعدی، پرستاشاپ ۸، شروع ساده سازی شمای نسخه بندی پروژه است. آن «1» ابتدای نسخههای قبلی، ارثی که هیچ بار معنایی همراه نداشت، دیگر در نسخههای آتی وجود نخواهد داشت.
سازگاری با استاندارد 3-بخشی شمای نسخه، معرفی نسخه پرستاشاپ را سادهتر میکند و همچنین باعث تقویت امکان همکاری با نرمافزارهای شخص ثالث مثل Composer (که به نسخههای استاندارد نیاز دارند) را فراهم میکند.
یک انتشار تکاملی، نه انقلابی
همانطور که توضیح داده شد، کنوانسیون SemVer یک نسخه را با توجه به سازگاری-بانسخقبلی تعریف میکند، نه تغییرات «بزرگ» و «کوچک». یعنی یک نسخه ماژور لزوماً معرفی تغییرات بزرگ و انقلابی نیست بلکه فقط به معنی این است که بعضی چیزها دقیقاً به همان صورت قبلی کار نخواهند کرد، همین.
با توجه به این موضوع، پرستاشاپ ۸ به کار دگرگون سازی ادامه داده و سرعت آن را بیشتر کرده و به سمت معماری آینده که با 1.7 شروع شد حرکت میکند، اما با یک دید عملگرایانهتر و متمرکزتر (که در یک مقاله اختصاصی جداگانه بررسی میشود).
این نسخه جدید روی دو ابتکار تمرکز خواهد کرد:
۱. پاکسازی و بهروزرسانی فناوری
علاوه بر کتابخانههای بهروزشده (شامل Guzzle 7) و یک فریمورک ارتقا یافته Symfony 4.4، پرستاشاپ ۸ سازگاری با جدیدترین نسخه PHP 8 را معرفی خواهد کرد. ما همچنین از این موقعیت استفاده کرده تا کدهای قدیمی و منسوخ شده را که با کامپوننتهایی در 1.7 جایگزین شدهاند را حذف کنیم.
۲. صفحه محصول جدید
صفحه محصول تماماً جدید در بخش مدیریت که به صورت آزمایشی در 1.7.8.0 معرفی شده بود، به صورت کامل در پرستاشاپ ۸ یکپارچه خواهد شد. این صفحه جدید برای صاحب فروشگاه یک تجربه کاربری تقویت شده و عملکرد بهبودیافته فراهم میکند، به خصوص زمانی که با تعداد زیادی ترکیب سر و کار دارند. توسعهدهندگان هم از یک صفحه که تماماً بر پایه سیمفونی بنا شده، با فرمهای قابل گسترش و کوئریها و دستورات قابل استفاده مجدد، بهره خواهند برد.
یک پروژه عاری از شرکت [تجاری پرستاشاپ]
پرستاشاپ یک پروژه متن باز وابسته به جامعه است که به هر کسی آزادی دانلود، استفاده و ویرایش با توجه به نیاز را میدهد. در طول چند سال گذشته، کارهای زیادی انجام شده تا تفاوت یک پروژه متن باز مثل پرستاشاپ با یک «محصول فریمیوم» روشن شود.
تیم نگهدارنده متعهد به تقویت ماهیت ساختهشده-توسطجامعه پروژه است. سال گذشته، پروژه پذیرای دو نگهدارنده بود که ارتباطی با شرکت PrestaShop SA نداشتند. در سال ۲۰۲۱، به منظور تفکیک کردن پروژه از شرکتی که در اصل آن را ساخته بود، پروژه صاحب یک سایت برای خودش شد: prestashop-project.org.
در سال ۲۰۲۲، تفاوت بین پروژه متن باز و شرکت همنام آن، با حذف تمام محصولات و خدمات مربوط به شرکت پرستاشاپ از پروژه، بیش از پیش عیان میشود: پرستاشاپ ۸ نه دیگر با مارکتپلیس Addons همراه {bundled} خواهد بود، نه به صورت خودکار محصولاتی از PrestaShop SA را دانلود خواهد کرد و نه وابسته به منابع بارگذاری شده از API های prestashop.com خواهد بود. این نشان از یک قدم رو به جلوی بزرگ در بیطرفی پروژه دارد.
البته، PrestaShop SA به تهیه محصولات و خدمات – برای نسخههای قبلی و جدید – ادامه خواهد داد، اما به صورت متفاوتی در بستههای جداگانه منتشر میشوند. اینها احتمالاً در محصولات آتی باندل میشوند، که بیشتر شبیه توزیعهای لینوکس، از پروژه متن باز اصلی مستقل خواهند ماند.
خیالتان راحت باشد که بر خلاف بقیهی شرکتها، که تصمیم گرفتهاند پلتفرم متن باز خود را رها کنند و با آن مثل اسپینآف توسعههای شخصیشان رفتار کنند، PrestShop SA پشتیبانی از پروژه متن باز را ادامه (و افزایش) خواهد داد و محصولات آتی آن بر پایه پروژه [پرستاشاپ] ساخته خواهند شد – و نه برعکس.
برای 1.7 چه اتفاقی میافتد؟
پرستاشاپ 1.7.8 همان مسیر پشتیبانی توصیف شده در نقشه راه بالا را طی خواهد کرد، به این معنی که:
- برطرف کردن باگ تا زمان انتشار پرستاشاپ ۸
- برطرف کردن مشکلات حیاتی و امنیتی، در صورت نیاز، تا یک سال بعد از آن.
ارتقا از 1.7.8 به 8.0 به طور قابل ملاحظهای نسبت به ارتقا از 1.6 به 1.7 سادهتر خواهد بود. قالبهای موجود برای 1.7 کاملاً با این نسخه جدید سازگار خواهند بود. در حالیکه خیلی از ماژولها که با 1.7.8 کار میکنند باید بدون هیچ تغییری با پرستاشاپ ۸ کار کنند، برخی از آنها ممکن است نیاز به بهروزرسانی داشته باشند، به طور خاص آن ماژولهایی که تحت تاثیر بهروزرسانی کتابخانههای هسته یا سازگاری با PHP 8 باشند.
کلام پایانی
هدف فعلی برای feature freeze پرستاشاپ ۸ فروردین ۱۴۰۱ (آپریل ۲۰۲۲) و انتشار نسخه نهایی در اواسط ۲۰۲۲ است. شما میتوانید بهروزرسانیها را در این issue در گیتهاب دنبال کنید.
ما واقعاً برای ساختن آینده پرستاشاپ با شما هیجان زدهایم! نظر خود را با ما در بخش دیدگاهها به اشتراک بگذارید، یا در Slack با ما گفتگو کنید.
نویسنده این مقاله Pablo Borowicz با سمت VP of Core Engineering در شرکت PrestaShop SA است.