Senior Web · 9-sinf · 3-hafta

SemVer, GitHub Releases va Open Source Hamkorlik

Professional dasturchilar dastur versiyalarini qanday boshqaradi? Git Tags orqali muzlatilgan versiyalar, CHANGELOG yuritish va MIT, Apache 2.0 hamda GPL ochiq manbali litsenziyalarining huquqiy kuchi.

📦 SemVer 2.0.0 🏷️ Git Tags 🚀 GitHub Releases ⚖️ MIT / Apache / GPL
Dasturiy Tartibsizlik

"final_v2_fixed_NEW.zip" Sindromi va Dependency Hell

❌ Standartsiz tartibsizlik (Havaskor usul):
  • Fayllar tasodifiy nomlanadi: app_v1, app_test, app_new.
  • Yangi kod eski ma'lumotlar bazasiga mosmi yoki yo'q — hech kim bilmaydi.
  • Kutubxona tunda yangilandi — 10,000 mijozning sayti bir zumda quladi!
✅ Korporativ standart: SemVer 2.0.0:
  • Yagona xalqaro 3 raqamli triada: MAJOR . MINOR . PATCH.
  • Har bir raqam qat'iy texnik va me'moriy kafolat beradi.
  • Paket menejerlari (npm, pip) nimalarni avtomatik yangilash xavfsizligini biladi.
SemVer 2.0.0 Anatomiyasi

Open Source Olamini Boshqaruvchi 3 Raqam

MAJOR
v 2 . 0 . 0

Buzuvchi o'zgarishlar (Breaking change)! Eski kod ishlamaydi. Yangitdan yozish shart.

MINOR
v 1 . 5 . 0

Yangi imkoniyatlar qo'shildi. Eski kodlar buzilmay, bekamu-ko'st ishlayveradi (orqaga mos).

PATCH
v 1 . 4 . 8

Xatolar va xavfsizlik kamchiliklari tuzatildi. API o'zgarmagan, yangi funksiya yo'q.

⚠️ Havaskorlarning eng katta xatosi:

SemVer o'nli kasr emas! `1.9.0` dan keyingi yangi imkoniyat versiyasi `1.10.0` bo'ladi (`2.0.0` emas!). `2.0.0` faqat eski kod bilan nomuvofiqlik (breaking change) yuz bergandagina qo'yiladi.

Buzuvchi O'zgarishlar

Dasturchi Qachon MAJOR Raqamni Oshirishi Shart?

1-misol: Funksiya imzosi va parametrlarining o'zgarishi
// v1.4.0 (Eski versiya): function login(user, password) { ... } // v2.0.0 (Yangi breaking change): // Endi obyekt va token talab qilinadi! function login({ email, password, mfaToken }) { ... }

Eski chaqiruvlar `undefined` yoki xato beradi. Bu 100% Breaking Change!

2-misol: Eski metodlarni butunlay o'chirib tashlash
// v1.x da ogohlantirish berilgan edi: deprecated: 'Use api.request() instead' // v2.0.0 da metod butunlay yo'q: // window.CyberApp.oldMethod() -> Uncaught TypeError!

Katta kompaniyalar MAJOR chiqarmasdan avval oylar davomida ogohlantirish beradi.

Paket Boshqaruvi

Package.json Sirlari: Caret (^) va Tilde (~)

Caret (^) — zamonaviy standart ^1.2.3

MINOR va PATCH yangilanishlarini avtomatik qabul qiladi, lekin MAJOR ga ruxsat bermaydi.

"^1.2.3" qabul qiladi: 1.2.4, 1.3.0, 1.9.9 "^1.2.3" BLOKLAYDI: 2.0.0 (Xavfli!)
Tilde (~) — ultra-konservativ ~1.2.3

Faqat PATCH (xato tuzatish)ni qabul qiladi. Hatto MINOR yangi imkoniyatlarni ham rad etadi.

"~1.2.3" qabul qiladi: 1.2.4, 1.2.9 "~1.2.3" BLOKLAYDI: 1.3.0 va 2.0.0
Git Tags

Git Tags: Tarixga Toshga O'yilgan Belgilar

Branch va Tag o'rtasidagi farq nima?
  • Branch (Tarmoq): Harakatlanuvchi ko'rsatkich. Har yangi kommit bilan oldinga siljiydi.
  • Tag (Yorliq): Toshga o'yilgan doimiy kommit. Hech qachon o'zgarmaydi va siljimaydi!
Git Tag yaratish buyruqlari:
# 1. Izohli (annotated) teg yaratish: git tag -a v1.0.0 -m "Production Release 1.0.0" # 2. Teglarni ko'rish: git tag -l # 3. Masofaviy serverga (GitHub) yuborish: git push origin v1.0.0
GitHub Releases

Rasmiy GitHub Release va Professional CHANGELOG

GitHub Release sahifasi qanday elementlardan iborat?
  • Tag ref: Muzlatilgan Git tegi (masalan: v1.0.0).
  • Release Notes: Yangiliklar, tuzatilgan xatolar, mualliflar ro'yxati.
  • Assets: Avtomatik Source code.zip va tayyor fayllar.
"Keep a Changelog" xalqaro standarti:
## [1.0.0] - 2026-09-24 ### Added - Jonli valyuta konverteri va qorong'i rejim ### Fixed - iOS Safari brauzerida overflow xatoligi tuzatildi ### Security - API kalitlari .env fayliga ko'chirildi
Litsenziyalar

Ochiq Manba Litsenziyalari: MIT, Apache 2.0 va GPL v3

Litsenziya Tijoriy foydalanish Patent himoyasi Copyleft (Kodni ochish sharti)
MIT ✅ Ruxsat berilgan ❌ Maxsus shart yo'q ❌ Kodni yopib, tijoriy sotish mumkin
Apache 2.0 ✅ Ruxsat berilgan ✅ Kuchli patent kafolati ❌ Kodni yopish mumkin (Google, Kubernetes)
GPL v3 ✅ Ruxsat berilgan ✅ Patent himoyasi bor ⚠️ Majburiy ochiq kod! (Linux, Blender, Git)
💡 Agar GitHub repoda `LICENSE` fayli bo'lmasa — bu kod qonunan ochiq emas ("All rights reserved"). Boshqalar undan foydalanishga haqli emas!
Hujjatlar Standarti

README.md va Jamoaviy Nizom Standartlari

README.md

Loyihaning vizitkasi: skrinshotlar, CI build badjlari (Passing), 3 qadamda ishga tushirish (Quick Start) yo'riqnomasi.

CONTRIBUTING.md

Boshqa dasturchilar uchun qoidalar: forking, testlarni yurgizish, PR yuborish va nomlash qoidalari.

CODE_OF_CONDUCT.md

Jamoaviy etika qoidalari: o'zaro hurmat, professional muloqot va konstruktiv kod ko'rigi talablari.

Katta Zanjir

Katta IT Kompaniyalardagi To'liq Tsikl

1. Kod & Branch

git checkout -b feature/pay
Kichik, aniq kommitlar va shaxsiy testlar.

2. PR & Review

GitHub Pull Request ochiladi, jamoa a'zolari kodni ko'rib chiqadi va tasdiqlaydi.

3. CI Avto-Test

GitHub Actions robotlari linter va barcha Jest testlarini toza Linuxda yurgizadi.

4. Tag & Release

SemVer bo'yicha tag qo'yiladi (v1.0.0) va production serverga deploy qilinadi.

🎯 3-hafta xulosasi: Siz oddiy kod yozuvchidan haqiqiy Middle/Senior darajadagi jamoaviy muhandisga aylandingiz!
Amaliy Laboratoriya

Release Boshqaruv Markazi: Birinchi v1.0.0 Relizi

Laboratoriya vazifalari:
  1. Brauzerda lab/index.html trenajyorini oching.
  2. 3 ta muhandislik keysi bo'yicha to'g'ri SemVer turini toping.
  3. Loyihaga mos litsenziyani tanlang (MIT, Apache, GPL).
  4. CHANGELOG.md ni to'ldiring va "Rasmiy Release" tugmasini bosing!
Konsol buyruqlarini tekshirish:
$ git tag -a v1.0.0 -m "v1.0.0 Release" $ git push origin v1.0.0 $ gh release create v1.0.0 --notes-file CHANGELOG.md ✔ Release published on GitHub Releases!

Trenajyorda virtual reliz paketi va yuklab olish oynasi hosil bo'ladi.

Xulosa va Mezon

10 Ballik Baholash Mezoni va 3-Hafta Xulosasi

9 – 10 Ball: Senior Reliz
  • SemVer qoidalari 100% to'g'ri aniqlangan.
  • Git Tag va push buyruqlari xatosiz yozilgan.
  • Litsenziyalar farqi tahlil qilingan.
  • Varaqa to'liq to'ldirilgan.
7 – 8 Ball: Yaxshi Natija
  • SemVer hisoblashda 1 ta xatolik bor.
  • Release notes va Git Tag tushunchasi to'g'ri.
  • Varaqa 80% to'ldirilgan.
5 – 6 Ball: Qoniqarli
  • Faqat nazariy savollarga qisman javob berilgan.
  • Buyruqlar to'ldirilmagan.
🎉 Tabriklaymiz! Git, GitHub, Code Review, CI/CD va Release moduli muvaffaqiyatli yakunlandi!