تخيّل أنك شغال على مشروع، وفجأة قررت تعمل تحديث لمكتبة بتستخدمها...كل حاجة كانت شغالة تمام، لكن بمجرد ما عملت التحديث، المشروع كله ضرب وحلف ما يشتغل.
علشان كده لازم تكون فاهم الـ Semantic Versioning كويس، وهي دي اللي بتخلّيك تفهم التغييرات اللي حصلت في أي إصدار جديد قبل ما تعمل التحديث والدنيا تبوظ منك.
تعال نفهم الموضوع ببساطة...
📌 يعني إيه Semantic Versioning؟
الـ Semantic Versioning مش مجرد أرقام زي 1.2.3، لكنها طريقة منظمة لتسمية الإصدارات (versions) بتساعدك تعرف هل الإصدار الجديد آمن ولا لا، وهل التغييرات اللي حصلت بسيطة ولا جذرية.
وكمان لو حبيت تغير إصدار المشروع نفسه تبقى فاهم هل التغيرات اللي عملتها تبع أي قسم في الـ Semantic Versioning
وده شكل الـ Semantic Versioning:
MAJOR.MINOR.PATCH
📍 الـ MAJOR: يعني تغيير كبير بيكسر التوافق مع الإصدارات القديمة (breaking changes).
📍 الـ MINOR: يعني إضافة features جديدة بس بدون ما نكسر التوافق.
📍 الـ PATCH: يعني إصلاح bugs أو تحسينات صغيرة بدون أي تغيير في الـ features.
📌 تعال نفهم كل جزء بالتفصيل:
✅ الـ PATCH:
لو عندك إصدار 1.2.3 وطلع فيه bug صغير واتصلّح، الرقم هيبقى كده:
1.2.4
مثال: لو مكتبة بتحسب الضرائب وكانت بتغلط في الحسبة، التغيير هنا ما بيأثرش على حد بيستخدم المكتبة بشكل عام، ده يعتبر Patch.
✅ الـ MINOR:
لو أضفت feature جديدة بس من غير ما تغيّر حاجة في الـ features اللي كانت شغالة قبل كده، الرقم هيبقى:
1.3.0
مثال: لو المكتبة بتاعت الضرائب أضافت خاصية جديدة لحساب الضرائب الدولية، ده تغيير بيضيف ميزة جديدة بس مش هيكسر الكود.
✅ الـ MAJOR:
لو حصل تغيير كبير بيأثر على الناس اللي بيستخدموا المكتبة، الرقم هيبقى كده:
2.0.0
مثال: لو قررت تغيّر الـ API تمامًا وتطلب من الناس يكتبوا الكود بتاعهم بشكل مختلف عشان المكتبة تشتغل، ده يعتبر Breaking Change.
📌 ليه نستخدم الـ Semantic Versioning؟
توضيح التغييرات: لما تشوف الإصدار الجديد، تقدر بسهولة تعرف هل التغيير بسيط ولا كبير.
تسهيل التحديث: لو عرفت إن التحديث مجرد Patch أو Minor، هتكون مطمن إن مفيش حاجة هتتكسر لما تعمل update.
إدارة الشغل مع فريقك: لما تلتزم بـ Semantic Versioning، بيكون سهل على كل الفريق يتابع التغييرات اللي بتحصل.
📌 نصائح وإرشادات مهمة:
التزم بالقواعد: متزودش رقم MAJOR عشان تضيف ميزة صغيرة! خلي الأرقام تعبر فعلًا عن التغييرات اللي بتحصل.
اختبر كويس: لو هتعمل تغيير MAJOR، لازم تتأكد إنك مجرب كل حاجة عشان الناس اللي هيستخدموا الكود مش يعانوا.
اكتب changelog: خلي فيه توثيق واضح عن إيه اللي اتغير في كل إصدار.
وفقكم الله لكل خير 🌿