سجل التغييرات
التغييرات المهمة في الكتاب وأدواته. أحدث الإدخالات في الأعلى. تستخدم التواريخ صيغة ISO 8601 (YYYY-MM-DD).
[Unreleased]
Changed
- الهولندية (
nl-nl): ترجمة العناوين الإنجليزية المتبقية وأسماء ملفات المواضيع 9.0 و9.3 و9.4 (bijlagenوcontrolelijstenوsjablonen). - الويلزية (
cy-001وcy-gb): مواءمة المصطلحات مع TermCymru:risg(المخاطرة، بدلًا منperygl، مع توافق الجنس النحوي)، وcyfnewidiad(المفاضلة)، وdangosydd rhagfynegiوdangosydd ôl-fynegi(المؤشر الاستباقي والمتأخر، بدلًا منhwyrfrydig)، وcynhwysedd(السعة)، وdosraniad(التوزيع)، وcydberthynas(الارتباط)، وallbwnللناتج في الموضوع 1.3، وcyfradd gadael staff(معدل ترك الموظفين). وأُعيدت تسمية أربعة من أسماء ملفات المواضيع لتطابقها. - الموقع: ترقية
@lilydesignsystem/svelte-picker-barإلى 0.2.0، التي تضيف أداة اختيار بحث إلى شريط الرأس؛ وهي ترسل إلى بحث الموقع القائم/?<query>. - إضافة
scripts/generate-sitemap.mjs، يُشغَّل في نهايةpnpm build، ويكتبsitemap.xmlمن الصفحات المُعدّة مسبقًا (روابط اللغات المعتمدة فقط، بلا نسخ مكررة للأسماء المستعارة من حرفين) ليعمل سطرSitemap:فيrobots.txt. - صار
AGENTS.mdفهرسًا قصيرًا؛ وانتقلت التفاصيل إلىAGENTS/layout.mdوstyle.mdوlocales.mdوworkflow.md. - مراجعة شاملة للتوثيق: تحديث
AGENTS.mdوindex.mdونص اللغات المولَّد في README وspec/index.mdوspec/locales.mdوAGENTS.mdوREADME الخاصين بالموقع لتعكس 27 لغة وأسماء أدلة الأقسام لكل لغة والأدوات الجديدة؛ وإضافةCLAUDE.md(مؤشر إلىAGENTS.md)؛ وتصحيح مساراتdocs/القديمة في المهارتين الوكيلتين وجعلskills/النسخة المعتمدة من.claude/skills/(تفحصها الاختبارات). - إضافة
llms.txtوllms.json(فهرس لوكلاء الذكاء الاصطناعي لكل لغة ومواضيعها المخدومة) إلىstatic/في الموقع، يولّدهماtools/gen_llms.py(just llms) وتفحصهما الاختبارات. - الصفحة الرئيسية للموقع: صارت قائمة “الأجزاء التسعة” ذات المربعات قائمة “المحتويات” متداخلة لكل الأجزاء والمواضيع، وأُزيل قسم “قانون غودهارت، في كل مكان”.
- أُعيدت صياغة “chapter” إلى “topic” في نثر الكتاب كله في كل
لغة (مثل “الموضوع 2.1” و”مواضيع هذا الجزء”)، باستخدام كلمة كل
لغة الخاصة بالموضوع (
temaوsujetوThemaوтемаو主題، وهكذا)، وفي المواصفات والنص المولَّد من الأدوات وسلاسل واجهة الموقع. أسماء الملفات وعناوين URL ومفاتيح الأقسام لم تتغير. - ترجمة اسم كل دليل قسم تحت
locales/: صارchapters/الآنtopics/(وترجمته في كل لغة أخرى، مثلtemas/وsujets/وthemen/)، وصارexamples/فيes-001هوejemplos/. الأسماء تقيم فيspec/section-names.json؛ وتقرؤها الأدوات والاختبارات ومزامنة محتوى الموقع من هناك، وعناوين URL في الموقع لم تتغير.
Changed
- مراجعة اللغتين الويلزيتين (
cy-001وcy-gb، محفوظتان متطابقتين) مقابل قائمة مصطلحات TermCymru لحكومة ويلز:llesiantللرفاه، وcynhyrchiantللإنتاجية، وgwendid/gwendidauللثغرة، وllywodraethiantللحوكمة، وcydberthynasللارتباط، وôl-groniadلـ backlog (التي كانت تُترك بالإنجليزية سابقًا)، وcost a buddللتكلفة والمنفعة، وdeallusrwydd artiffisial (AI)عند أول ذكر للذكاء الاصطناعي في كل موضوع.
Added
- ترجمة أقسام المقدمة والأمثلة والمساهمة والمشروع (14 ملفاً، إضافة إلى سجل التغييرات والصفحة الرئيسية وجدول المحتويات) إلى هذه اللغة، بأسماء مجلدات مترجمة.
- إضافة الألمانية (
de-001) بوصفها اللغة المترجمة الكاملة رقم 26: كل المواضيع الـ 63 مع ملفات.locale-peer-idالمطابقة، متطابقة المحتوى معde-de. موصولة بالموقع ومخدومة على/de-001/(الاسم المستعار/de/). - إضافة البرتغالية (
pt-001) بوصفها اللغة المترجمة الكاملة رقم 25: كل المواضيع الـ 63 مع ملفات.locale-peer-idالمطابقة، متطابقة المحتوى معpt-pt. موصولة بالموقع ومخدومة على/pt-001/(الاسم المستعار/pt/). - إكمال ترجمة يدوية كاملة من الصفر لكل المواضيع الـ 63 إلى
الأردية (
ur-001، من اليمين إلى اليسار)، اللغة المترجمة الكاملة رقم 24، مع ملفات.locale-peer-idالمطابقة. ترجم كل موضوع مباشرة من المصدر الإنجليزي، ويعيد الفهرس (الموضوع 9.7) ربط كل رابط داخلي باسم الملف الأردي، ودليل القسم هوموضوعات. موصولة بالموقع ومخدومة على/ur-001/(الاسم المستعار/ur/). - إكمال ترجمة يدوية كاملة من الصفر لكل المواضيع الـ 63 إلى
الإندونيسية (
id-001)، مع ملفات.locale-peer-idالمطابقة. لم توجد لغة إندونيسية سابقة لبناء الترجمة عليها، فتُرجم كل موضوع مباشرة من المصدر الإنجليزي، ويعيد الفهرس (الموضوع 9.7) ربط كل رابط داخلي باسم الملف الإندونيسي. موصولة بالموقع ومخدومة على/id-001/(الاسم المستعار/id/). - إضافة الروسية (
ru-001) والصينية (zh-001) بوصفهما اللغتين المترجمتين الكاملتين رقم 21 و22: كل المواضيع الـ 63 لكل منهما، مع ملفات.locale-peer-idالمطابقة، متطابقتا المحتوى معru-ruوzh-cn. موصولتان بالموقع ومخدومتان على/ru-001/و/zh-001/(الاسمان المستعاران/ru/و/zh/). - إضافة الفرنسية (
fr-001) بوصفها اللغة المترجمة الكاملة رقم 20: كل المواضيع الـ 63 مع ملفات.locale-peer-idالمطابقة، متطابقة المحتوى معfr-fr. موصولة بالموقع ومخدومة على/fr-001/(الاسم المستعار/fr/). - إضافة البنغالية (
bn-001) بوصفها اللغة المترجمة الكاملة رقم 19: كل المواضيع الـ 63 مع ملفات.locale-peer-idالمطابقة، متطابقة المحتوى معbn-bd. موصولة بالموقع ومخدومة على/bn-001/(الاسم المستعار/bn/). - إضافة العربية (
ar-001) بوصفها اللغة المترجمة الكاملة رقم 18: كل المواضيع الـ 63 مع ملفات.locale-peer-idالمطابقة، متطابقة المحتوى معar-eg. موصولة بالموقع ومخدومة على/ar-001/(الاسم المستعار/ar/). - إضافة الويلزية، بريطانيا العظمى (
cy-gb) بوصفها اللغة المترجمة الكاملة رقم 17: كل المواضيع الـ 63 مع ملفات.locale-peer-idالمطابقة، متطابقة المحتوى معcy-001(العلاقة نفسها بينhi-idوhi-001). موصولة بـSERVED_LOCALE_CODESفي الموقع ومخدومة على/cy-gb/. - إكمال ترجمة يدوية كاملة من الصفر لكل المواضيع الـ 63 إلى
الهولندية، هولندا (
nl-nl)، مع ملفات.locale-peer-idالمطابقة ونجاحjust test. لم توجد لغة هولندية سابقة لبناء الترجمة عليها، فتُرجم كل موضوع مباشرة من المصدر الإنجليزي. ويعيد الفهرس (الموضوع 9.7) ربط كل رابط موضوع داخلي باسم الملف الهولندي، على نهجar-egوbn-bdوko-krوes-esوpt-ptوja-jpوru-ruوfr-frوsv-se. غير موصولة بالموقع بعد. - إكمال ترجمة يدوية كاملة من الصفر لكل المواضيع الـ 63 إلى
السويدية، السويد (
sv-se)، مع ملفات.locale-peer-idالمطابقة ونجاحjust test. لم توجد لغة سويدية سابقة لبناء الترجمة عليها، فتُرجم كل موضوع مباشرة من المصدر الإنجليزي. ويعيد الفهرس (الموضوع 9.7) ربط كل رابط موضوع داخلي باسم الملف السويدي، على نهجar-egوbn-bdوko-krوes-esوpt-ptوja-jpوru-ruوfr-fr. غير موصولة بالموقع بعد. - إكمال ترجمة يدوية كاملة من الصفر لكل المواضيع الـ 63 إلى
الفرنسية، فرنسا (
fr-fr)، مع ملفات.locale-peer-idالمطابقة ونجاحjust test. لم توجد لغة فرنسية سابقة لبناء الترجمة عليها، فتُرجم كل موضوع مباشرة من المصدر الإنجليزي. ويعيد الفهرس (الموضوع 9.7) ربط كل رابط موضوع داخلي باسم الملف الفرنسي، على نهجar-egوbn-bdوko-krوes-esوpt-ptوja-jpوru-ru. غير موصولة بالموقع بعد. - إكمال ترجمة يدوية كاملة من الصفر لكل المواضيع الـ 63 إلى
الروسية، روسيا (
ru-ru)، مع ملفات.locale-peer-idالمطابقة ونجاحjust test. لم توجد لغة روسية سابقة لبناء الترجمة عليها، فتُرجم كل موضوع مباشرة من المصدر الإنجليزي. ويعيد الفهرس (الموضوع 9.7) ربط كل رابط موضوع داخلي باسم الملف الروسي، على نهجar-egوbn-bdوko-krوes-esوpt-ptوja-jp. غير موصولة بالموقع بعد. - إكمال ترجمة يدوية كاملة من الصفر لكل المواضيع الـ 63 إلى
اليابانية، اليابان (
ja-jp)، مع ملفات.locale-peer-idالمطابقة ونجاحjust test. لم توجد لغة يابانية سابقة لبناء الترجمة عليها، فتُرجم كل موضوع مباشرة من المصدر الإنجليزي. ويعيد الفهرس (الموضوع 9.7) ربط كل رابط موضوع داخلي باسم الملف الياباني، على نهجar-egوbn-bdوko-krوes-esوpt-pt. غير موصولة بالموقع بعد. - إكمال ترجمة يدوية كاملة من الصفر لكل المواضيع الـ 63 إلى
البرتغالية، البرتغال (
pt-pt)، مع ملفات.locale-peer-idالمطابقة ونجاحjust test. لم توجد لغة برتغالية سابقة لبناء الترجمة عليها، فتُرجم كل موضوع مباشرة من المصدر الإنجليزي. ويعيد الفهرس (الموضوع 9.7) ربط كل رابط موضوع داخلي باسم الملف البرتغالي، على نهجar-egوbn-bdوko-krوes-es. غير موصولة بالموقع بعد. - إضافة الإسبانية، إسبانيا (
es-es) بوصفها لغة مترجمة كاملة، كل المواضيع الـ 63، بالبدء من نسخة الترجمة الإسبانية القائمة (es-001) (التي تبيّن عند الفحص أنها محايدة نحويًا أصلًا، ومفرداتها تميل في معظمها إلى إسبانيا) ثم تطبيق مراجعة مصطلحية مستهدفة على الاستخدامات الأقلية المتبقية، وأبرزها “incidente” إلى “incidencia” في مجال مقاييس الحوادث لهذا الكتاب، مع إصلاحات توافق الجنس المقابلة في كل مكان. غير موصولة بالموقع بعد. - إكمال ترجمة يدوية كاملة لكل المواضيع الـ 63 إلى الكورية، كوريا
(
ko-kr)، مع ملفات.locale-peer-idالمطابقة ونجاحjust test. ويعيد الفهرس (الموضوع 9.7) ربط كل رابط موضوع داخلي باسم الملف الكوري، على نهجar-egوbn-bd. غير موصولة بالموقع بعد. - إضافة الهندية، الهند (
hi-id) بوصفها لغة مترجمة كاملة، كل المواضيع الـ 63، بنسخ الترجمة الهندية القائمة (hi-001) حرفيًا تحت رمز اللغة الموسوم بالبلد، إذ ليس للهندية المعيارية صيغة خاصة بالهند لترجمتها يدويًا على حدة. غير موصولة بالموقع بعد. - إكمال ترجمة يدوية كاملة لكل المواضيع الـ 63 إلى البنغالية،
بنغلاديش (
bn-bd)، مع ملفات.locale-peer-idالمطابقة ونجاحjust test. غير موصولة بالموقع بعد. - إكمال ترجمة يدوية كاملة لكل المواضيع الـ 63 إلى العربية، مصر
(
ar-eg)، مع ملفات.locale-peer-idالمطابقة ونجاحjust test. غير موصولة بالموقع بعد. - إكمال ترجمة يدوية كاملة لكل المواضيع الـ 63 إلى الألمانية، ألمانيا
(
de-de)، مع ملفات.locale-peer-idالمطابقة ونجاحjust test. غير موصولة بالموقع بعد. - إكمال ترجمات يدوية كاملة لكل المواضيع الـ 63 إلى ثلاث لغات:
الويلزية (
cy-001) والصينية (zh-cn) والهندية (hi-001)، لكل منها ملفات.locale-peer-idالمطابقة ونجاحjust test. - إضافة لغتين مترجمتين مخططتين أخريين، الويلزية - بريطانيا العظمى
(
cy-gb) والصينية (zh-001)، إلىspec/locales-for-global-sharing-with-svelte/locales.tsvوspec/locales.md(ثلاث عشرة لغة مخططة الآن، بعد أن كانت إحدى عشرة)، وحسم اسمzh-cnالذاتي الذي كان غير محسوم بـ 中文. واكتسبتLOCALE_LABELSفي الموقع إدخالات مطابقة (cy-gb: “Cymraeg (Prydain Fawr)”، وzh-001: “中文”، وzh-cn: “中文 (中国)”). لا تزال بنية تحتية فقط: لا لغة منها لها دليلlocales/<code>/ولا أي محتوى مترجم بعد. - نشر الكتاب بأربع لغات تحت
locales/:en-gb-oxendict(الإنجليزية البريطانية، الإملاء الأكسفوردي؛ المصدر المكتوب يدويًا)، وen-001(الإنجليزية الدولية)، وen-gb(الإنجليزية البريطانية السائدة)، وen-us(الإنجليزية الأمريكية). وتُشتقen-001وen-gbوen-usآليًا منen-gb-oxendictبواسطةtools/localize.pyالجديدة؛ انظرspec/locales.md. لم يعدdocs/موجودًا؛ وكل إحالة إليه فيspec/وAGENTS.mdوtests/validate.pyوtools/gen_nav.pyوtools/stats.pyتشير الآن إلىlocales/<locale>/. - إضافة مهارتين لـ Claude Code،
software-engineering-metrics-skill(للقراء الذين يطبقون إرشادات الكتاب على فريقهم) وsoftware-engineering-metrics-maintainer-skill(للمساهمين الذين يضيفون المواضيع أو يحررونها)، تحتskills/ومنسوختان في.claude/skills/. - نقل مصدر الموقع المنشور إلى هذا المستودع باسم
software-engineering-metrics.github.io/، وكان مستودعًا منفصلًا سابقًا. وهو يقرأ الآنlocales/مباشرة من جذر المستودع بدلًا من نسخة شقيقة. ويتحقق.github/workflows/deploy.ymlفي الجذر من أن الموقع لا يزال يُبنى عند كل دفع إلىmain، ثم يرسلrepository_dispatchإلى مستودعsoftware-engineering-metrics.github.io(الذي أُبقي قشرة نشر رفيعة، لأن GitHub Pages لا يخدم ذلك النطاق العاري إلا من مستودع يحمل ذلك الاسم تمامًا)، فيسحب هذا المستودع الأحادي، ويبني الموقع، وينشره. - إضافة بنية تحتية للغات المترجمة (لا المشتقة بالإملاء فحسب)، وفق
المواصفة الفرعية الجديدة
spec/locales-for-global-sharing-with-svelte/: يسندtools/gen_locale_peer_ids.pyلكل ملف محتوى ملف.locale-peer-idجانبيًا، متطابقًا عبر اللغات، تستطيع لغة مترجمة مستقبلية (بأسماء ملفاتها الأصلية بحروفها) استخدامه لحل “هذه الصفحة، في اللغة X” بدلًا من المطابقة على اسم الملف؛ ويفحصtests/validate.pyأن كل ملف جانبي موجود ومطابق. وتوثقspec/locales.mdعشر لغات مترجمة مخططة (العربية والبنغالية والويلزية والإسبانية والفرنسية والهندية والإندونيسية والبرتغالية والروسية والأردية والصينية - الصين)؛ ولا يوجد دليلlocales/<code>/لأي منها بعد، إذ لم تُترجم بعد. وفي الموقع، اكتسبscripts/locales.mjsالدالتينLOCALE_LABELS/localeLabel()(اسم عرض لكل لغة مخططة، جاهز قبل التوجيه) وsortedLocaleEntries()(ترتيب الفرز الذي ينبغي أن تستخدمه قائمة لغات مستقبلية)، واستخرجsrc/lib/i18n.jsسلاسل واجهة الموقع (التنقل والشريط الجانبي والترقيم والمنتقي والتذييل ورابط التخطي) التي كان كل مكوّن.svelteيثبتها سابقًا بالإنجليزية، ومرّرها عبرui(locale)، مع الرجوع إلى الإنجليزية لأي لغة بلا ترجمات خاصة بها. - استُبدل عنصر التحكم في الرأس المبني يدويًا للغة فقط في الموقع بـ
@lilydesignsystem/svelte-picker-barمن Lily Design System: منتقي سمة حقيقي (فاتح/داكن، عبرstatic/assets/themes/{light,dark}.cssالجديدين)، ومنتقي لغة حقيقي (موصول بتوجيه الموقع القائم على URL بدلًا من سلوكه الافتراضي الذي يقتصر على lang/dir)، ومنتقي حجم النص (سلم Lily ذو الخطوات السبع)، ومنتقي مشاركة (البريد الإلكتروني وMastodon ونسخ الرابط). وثُبّت@lilydesignsystem/svelte-{theme,locale,text-size,share}-pickerعلى^0.1.2و@lilydesignsystem/svelte-headlessعلى^0.2.0عبر تجاوزاتpnpm-workspace.yaml، لتجاوز خلل منشور حقيقي في نطاقات اعتماداتsvelte-picker-bar0.1.0 نفسها (انظرCHANGELOG.mdلكل منتقٍ، “0.1.2”، وAGENTS.md الخاص بهذا الموقع). - أُزيل صف الإحصاءات من الصفحة الرئيسية (الأجزاء/المواضيع/“Free Always”) وقسم “How to read it” فيها، واستُبدلت شبكة بطاقات “Browse the nine parts” بقائمة نقطية بسيطة.
Changed
- إضافة
scripts/generate-sitemap.mjs، يُشغَّل في نهايةpnpm build، ويكتبsitemap.xmlمن الصفحات المُعدّة مسبقًا (روابط اللغات المعتمدة فقط، بلا نسخ مكررة للأسماء المستعارة من حرفين) ليعمل سطرSitemap:فيrobots.txt. - إضافة الموضوع 2.8، مقاييس سلسلة القيمة في Lean (زمن التقدّم، وزمن المعالجة، وزمن الدورة، ونسبة المكتمل والدقيق، وزمن takt من خرائط سلسلة القيمة الكلاسيكية في Lean، إضافة إلى حساب العائد الإجمالي للإنتاجية)، بعد نظرية الطوابير. وانتقلت مقاييس طلبات الدمج ومراجعة الكود من 2.8 إلى 2.9، وانتقل موضوع مقاييس DORA من 2.9 إلى 2.10. وحُدّثت كل إحالة متأثرة في أنحاء الكتاب.
- أُعيدت تسمية الجزء 2 من “Delivery and Flow Metrics” إلى “Flow Metrics” وأُعيد تنظيمه حول إطار التدفق لـ Mik Kersten. وأُضيفت أربعة مواضيع جديدة: 2.1 إطار التدفق، و2.2 عناصر التدفق (الميزات والعيوب والمخاطر والدين)، و2.3 سرعة التدفق وتوزيع التدفق، و2.4 زمن التدفق وحمل التدفق. ودُمجت مواضيع مقاييس DORA الأربعة المنفردة (تكرار النشر، وزمن التقدّم، ومعدل فشل التغيير، وزمن التعافي) في موضوع مرجعي واحد، 2.9 إطار مقاييس DORA، نُقل إلى نهاية الجزء. وأُعيد ترقيم كفاءة التدفق والعمل قيد التنفيذ إلى 2.5، وأُعيدت تسمية وترقيم موضوع نظرية الطوابير (كان 2.9) إلى 2.7 نظرية الطوابير. ويحتفظ زمن الدورة (2.6) ومقاييس طلبات الدمج ومراجعة الكود (2.8) بأرقامها. وحُدّثت كل إحالة في أنحاء الكتاب، والمسرد، ومرجع الصيغ، والتقييم الذاتي للنضج، والمقدمات لتطابق ذلك.
Added
- الإصدار الأول: 45 موضوعًا جوهريًا في 8 أجزاء، إضافة إلى المقدمات وملحق من 7 مواضيع (الجزء 9)، تغطي إطاري DORA وSPACE، ومقاييس الكود والجودة، ومقاييس المنتج والأعمال، ومقاييس الموثوقية والأمن، وأثر الذكاء الاصطناعي التوليدي على مقاييس الهندسة.
- بنية المستودع التحتية المنسوخة من المشروع الشقيق
software-engineering-guide:spec/قائم على المواصفات (الفهرس والبنية والاصطلاحات والإملاء الأكسفوردي وخارطة الطريق)، وحزمة تحقق فيtests/validate.py، ومولّد تنقل فيtools/gen_nav.py، وjustfile، وAGENTS.mdمع أدلة المساهمين تحتdocs/contributing/، وCONTRIBUTING.md، وهذا السجل. spec/structure.md، بيان المواضيع المعتمد الذي تفحص الاختبارات الملفات مقابله.- مثالان عمليان في
docs/examples/: ميثاق مقاييس مكتمل ومواصفات لوحة معلومات.
التاريخ
بُني الكتاب من المواصفات إلى الخارج: أُعلنت البنية ذات الأجزاء التسعة
في spec/structure.md أولًا، ثم أُلّف كل موضوع
وفق القالب المشترك في docs/contributing/chapter-template.md، مع
فرض tests/validate.py للبنية والأسلوب طوال الوقت.
اصطلاحات هذا الملف
- جمّع التغييرات تحت Added أو Changed أو Fixed أو Removed أو Deprecated.
- اجعل الإدخالات قصيرة ومحددة. سطر واحد لكل منها حيثما أمكن.
- لا تستخدم الشرطات الطويلة هنا أيضًا؛ فالاختبارات تفحص هذا الملف كذلك.