سلام و عرض ادب خدمت همه بزرگواران

 

یکی از سوالاتی که تقریبا همیشه در پرستاشاپ با آن مواجه هستیم این است که آیا قالب یا ماژولی که برروی فروشگاه استفاده میکنیم با پرستاشاپ منتشر شده سازگار است یا خیر !؟ این پرسش آنقدر تکرار میشود که به این فکر افتادیم تا در مورد روش نسخه بندی (نسخه گذاری) پرستاشاپ این مقاله را منتشر نماییم.

مطالعه این مقاله کمک خواهد کرد تا بدانید ماژول و قالب پرستاشاپی که استفاده میکنید چه وضعیتی را در نسخه های دیگر پرستاشاپ خواهد داشت و در زمان نصب یا ارتقا پرستاشاپ با اطلاعات بیشتری اقدام نمایید.اگر چه باز هم نمیتوانیم قاطعانه به این پرسش پاسخ دهیم اما به راحتی میتوانیم در بیشتر مواقع این موضوع را حدس بزنیم!

روش‌های نسخه بندی یا نسخه گذاری

در دنیایی که قرار است یک شی یا یک محصول تکامل پیدا کند و هر بار نسخه بهتری از آن تولید شود ، ناگزیر به استفاده از روشی برای نام گذاری و شناخت بیشتر و بهتر آن محصول خواهیم بود.به عنوان مثال میگوییم فلان خودرو ساخت 2017 یا 1397 یا مواردی از این دست. سال ساخت این خودرو در واقع یکی از روش های نسخه بندی این مدل از خودرو است ، خودرویی که تکامل پیدا میکند و هر سال امکان و آپشنی جدید را در خود خواهد داشت.

در نرم افزارها نیز به همین ترتیب با این موضوع مواجه هستیم به خصوص اینکه هر چقدر نرم افزار گسترده تر و بزرگتر میشود و همچنین ارتباطات و وابستگی بیشتری را با نرم افزارهای کوچک و بزرگ دیگری خواهد داشت این موضوع مهمتر خواهد بود.

نسخه بندی نرم افزار هیچ قانون مشخصی ندارد و هر شرکت یا توسعه دهنده از روشی برای نسخه بندی محصولات خود استفاده میکند مثلا مایکروسافت آفیس بر اساس سال انتشار آن مشخص میشود مثلا آفیس 2013 یا آفیس 2017

یا سیستم عاملی مثل ویندوز اگر چه یک نسخه بندی عددی در پس زمینه خود دارند اما معمولا با اسم رمز یا نام مشخص میشود مثلا ویندوز xp ، ویندوز me و ویندوز ویستا که البته این اواخر به اعداد مانند ویندوز 7 – 8 یا 10 نیز مشخص شده است.

همچنین در اندروید همانطور که نسخه های عددی نیز داریم مثلا اندروید 6 برای هر نسخه یک اسم رمز بر اساس شیرینی و دسر انتخاب میشود و هر اسم انتخاب شده بر اساس  به ترتیب حروف الفبای انگلیسی میباشد مثلا اندروید 6 با حرف M که اسم رمز مارشمالو بوده و اندروید 7 با حرف بعدی آن یعنی N و به اسم رمز شیرینی نوقا میباشد!

در لینوکس ابونتو این نسخه گذاری بر اساس ترکیبی از شماره سال و شماره ماه منتشر شده میباشد مثلا Ubuntu 16.04 که در سال 2016 و ماه آوریل منتشر شده البته اوبونتو اسم رمز بر اساس یک صفت و نام حیوان را نیز برروی نسخه های خود قرار میدهد!

semVer روش نسخه بندی پرستاشاپ

پرستاشاپ از نسخه 1.6.1.0 به بعد از روش نسخه بندی معنایی ( semVer ) در نسخه های خود پیروی میکند! این روش از آنجا بسیار مفید است که اطلاعات زیادی را در مورد نسخه و همچنین سازگاری ها و ناسازگاری های پرستاشاپ بیان میکند! به عبارت ساده تر باید بگوییم اعداد منتشر شده در نسخه پرستاشاپ صرفا چند عدد تصادفی پشت سر هم نبوده بلکه بر اساس یک قاعده و قانونی این اعداد قرار داده شده تا بتواند بیشترین اطلاعات را در مورد ویرایش های انجام شده منتقل نماید!

وبسایت رسمی semVer در مقدمه خود مشکل بی قاعدی در نسخه بندی را اینگونه معرفی می کند :

نسخه بندی معنایی ...

در دنیای مدیریت نرم‌افزار مکان مخوفی به نام «جهنم وابستگی» (dependency hell) وجود دارد. هر چه سیستم شما بزرگتر باشد و بسته‌های (package) بیشتری با نرم‌افزار شما یکپارچه شده باشند، احتمال بیشتری وجود دارد که روزی خود را دراین گودال ناامیدی بیابید.

در سیستم‌هایی با وابستگی‌های زیاد، انتشار بستهٔ جدید به زودی می‌تواند تبدیل به یک کابوس شود. اگر ویژگی‌های وابستگی‌ها بسیار جزئی‌نگرانه باشد، در خطر قفل نسخه (version lock) خواهید بود (ناتوانی برای بروزرسانی یک بسته، بدون اجبار جهت انتشار نسخه‌های جدید همهٔ بسته‌های وابسته). اگر وابستگی‌ها بسیار ضعیف مشخص شده باشند، به ناچار زخم بی‌قاعدگی نسخه را خواهید خورد (به فرض سازگاری بیش از حد معقول با نسخه‌های آتی‌تر). جهنم وابستگی آنجایی است که قفل نسخه و یا بی‌قاعدگی نسخه از پیشرفت رو به جلوی آسان و امن پروژهٔ شما جلوگیری می‌کند.

نسخه بندی معنایی چطور و چگونه ؟!

نسخه بندی بر اساس روش semVer بسیار ساده و البته کاربردی است! در این روش انواع تغییرات به سه دسته کلی تقسیم شده اند  که در هنگام نمایش عددی طبق ترتیب زیر نمایش داده خواهند شد :

Major . Minor . Patch

این دسته ها به را میتوان تغییرات از نوع اصلی (major) ، جزئی ( minor) و اصلاحیه (patch ) دانست! که این قسمتها با نقطه از همدیگر جدا میشوند! البته در پرستاشاپ نسخه بندی به 4 قسمت تغییر کرده که ریشه در تاریخ نسخه بندی پرستاشاپ و سیاست آنها دارد اما مفهوم کلی همین خواهد بود :

بنابر این آنها را اینگونه تعریف مینماییم :

  1. نسخه‌های Major :
    هر بار که تغییرات اعمال شده ناسازگار با نسخه های دیگر باشد یک عدد به این قسمت اضافه میشود مثلا 1.6.0.0 و نسخه های 1.7.0.0 که عددهای 1.6 و 1.7 در واقع نسخه های اصلی یا همان major ها هستند. در نسخه های اصلی ممکن است ناسازگاری هایی در قالبها و ماژولها مشاهده شود چرا که تغییرات آن با نسخه های قبلی سازگار نبوده و حتما باید در هنگام ارتقا از توسعه دهنده قالب یا ماژول خود نسخه هماهنگ را بخواهید!
  2. نسخه‌های Minor :
    در نسخه های منتشر شده از نوع جزئی یا Minor امکانات جدیدی به سیستم و نرم افزار اضافه میگردد اما حتما باید این امکانات و قابلیتها سازگاری عقبرو ( Backward compatibility ) خود را حفظ نمایند!
    سازگاری عقبرو به این معنی است که نسخه ی منتشر شده با اینکه امکانات و قابلیت جدیدی را دارد اما با نسخه های قبلی منتشر شده سازگار بوده و تغییرات و ویرایش ها با رعایت اصول  و قواعدی برای سازگار بودن انجام شده است.
    به عنوان مثال نسخه های پرستاشاپ 1.6.0.0 یا 1.6.1.0 که دو عدد قرمز رنگ مشخص شده نسخه های Minor بوده و طبق این نسخه جدیدتر با نسخه Minor قبلی سازگاری عقبرو را حفظ کرده است.
    میتوان این طور نتیجه گرفت که قالب یا ماژول ها به احتمال زیاد با نسخه های Minor منتشر شده از همان نسخه اصلی سازگار بوده و انتظار میرود که بدون مشکل بتوان از آن استفاده نمود. البته برای اطمینان بهتر است از طراح قالب یا توسعه دهنده ماژول خود این مورد را نیز مطمئن گردید!
  3.  نسخه‌های اصلاحیه Patch :
    هر نسخه که منتشر میشود ممکن است نیاز به رفع مشکلات و رفع باگهایی داشته باشد و در واقع صرفا اصلاحیه بوده و هیچ تغییر و امکان جدیدی را شامل نمیشود. نسخه های اصلاحیه زمانی افزایش پیدا میکند یک مشکل یا باگ برطرف شده و نسخه جدیدی منتشر میگردد! انتظار میرود که هر نسخه patch با نسخه های دیگر کاملا سازگار باشد. به عنوان مثال نسخه های 1.6.1.16 و 1.6.1.17 نسخه هایی از نوع patch یا اصلاحیه هستند که هر کدام ممکن است باگ ها یا مشکلاتی گزارش شده ای را برطرف کرده باشند.
    بنابر این انتظار میرود تمام قالبها و ماژولهای منتشر شده و سازگار با نسخه های همان Minor کاملا سازگار و بدون مشکل باشند!

نکته : عددهای هر قسمت به صورت افزایشی مانند اعداد صحیح  غیر منفی بوده و میتواند از 0 تا بی نهایت را شامل گردد و مانند اعشار نباید آنها را در نظر گرفت!

اگر میخواهید در مورد Semantic Versioning یا همان نسخه بندی معنایی بیشتر بدانید میتوانید این مقاله را که به فارسی ترجمه شده را کامل مطالعه نمایید.

همچنین توصیه میکنیم این مقاله را در ویکی‌پدیا در مورد نسخه بندی نرم افزارها مطالعه نمایید.

سخن آخر  …

در نهایت امیدواریم با مطالعه این مقاله و منابع معرفی شده بتوانید اطلاعات کافی در مورد نسخه بندی نرم افزارها و به خصوص نسخه بندی پرستاشاپ و چرایی آن کسب کرده تا بتوانید به راحتی اطلاعات مفیدی را از نسخه منتشر شده کسب نموده و تصمیم مناسبی در هنگام انتشار هر نسخه جدید اتخاذ نمایید!

 

با احترام فراوان

تیم توسعه پرستافا