لا يهم حقًا إذا كانت مكتبة أو تطبيقًا أكبر. تعمل مخططات الإصدارات الدلالية بشكل جيد جدًا للتطبيقات الكبيرة. يمكن استخدامها حتى لمجموعة من التطبيقات المجمعة في منصة، ولكن هنا يصبح الأمر صعبًا للغاية.
السؤال الرئيسي هو ما إذا كنت ستسلك طريق الإهمال المدعوم في إصدار واحد وإزالته فقط في الإصدار الرئيسي التالي. يمكن أن يتطلب وجود وظائف مهملة ولكن مدعومة جهدًا كبيرًا. عندما تقوم بإجراء تغييرات على نموذج البيانات المستمر الخاص بك، غالبًا ما يصبح الإهمال مستحيلًا. إذا حدث ذلك، فلا يمكنك حتى إجراء إصدار ثانوي بوظائف مهملة، وتقفز فورًا إلى إصدار رئيسي تالٍ. هذا هو الجزء الذي تواجه فيه التطبيقات الكبيرة عادةً مشاكل. تنتقل من 3.0.0 إلى 3.0.1 إلى 4.0.0 لأنك لا تستطيع توفير التوافق مع الإصدارات السابقة. إذا كان لديك تغييرات متكررة تكسر التوافق، فإن الالتزام بـ semver يضيف قيمة قليلة.
مع ذلك. أفضل بكثير هذا البناء لأنه يتواصل بوضوح أكبر مع المطورين أنه ستكون هناك تغييرات تكسر التوافق. مخطط YYYY.N لا يخبرني شيئًا كمطور، ولا شيئًا كمسؤول.
إذًا، السؤال هو، ماذا تريد أن تتواصل به مع الإصدار؟ إذا كنت تريد إجراء 6 إصدارات ميزات (قد تكون أو لا تكون متوافقة مع الإصدارات السابقة)، وكل إصدار سادس سيتم دعمه لفترة أطول مع التصحيحات؛ ولا تريد إصدار أرقام الإصدارات التصحيحية. عندها يكون X.Y مخططًا مناسبًا حيث Y=0 هو الإصدار المدعوم لفترة أطول. سيكون X مجرد رقم. المشكلة هي عندما يكون X هو السنة، فإن Y يرتبط بسرعة بالشهر. لذا، هل سيتم إصدار الإصدارات الأحدث المدعومة لفترة أطول في يناير؟ يجب أن أبحث دائمًا عن إصدار Ubuntu الذي هو LTS، وهذا يزعجني.
إذًا، ماذا لو استمر Discourse ببساطة مع الإصدار الرئيسي الحالي. الإصدار المدعوم لفترة أطول هو 4.0؛ ثم نحصل على 4.1 إلى 4.5 كإصدارات ميزات؛ يليه 5.0 وهو أحدث إصدار مدعوم لفترة أطول.
عندها لن يكون لديك هذا الموقف المحرج حيث يتأخر إصدار بسبب مشكلة رئيسية.
يمكنك اختياريًا إضافة رقم “تصحيح” إذا كنت تخطط لإصدار تصحيحات صراحةً (بدلاً من وجود إصدارات تصحيحية متجددة). “ولكن بعد ذلك لديك x.y.z وهو semver”. حسنًا، لا، يبدو مثل semver، ولكنه ليس كذلك. كل إصدار “ثانوي” جديد يمكن أن يكسر التوافق. لذا أقترح فقط الالتزام بمخطط X.Y كرقم إصدار مع Y=0 → LTS.
بصرف النظر عن سلسلة الإصدارات. أنا حقًا أحب خطة الإصدار الجديدة.