ہر چھوڑا ہوا ریپوزٹری (repository) کبھی رات کے 2 بجے کا جنون تھا۔ آپ یہ تال جانتے ہیں۔ آدھی رات کے قریب خیال آتا ہے۔ آپ کی کافی ٹھنڈی ہونے سے پہلے ہی آپ ریپوزٹری کا ڈھانچہ (scaffold) تیار کر لیتے ہیں۔ گیارہ دنوں تک آپ اس جنونی توانائی کے ساتھ کوڈ پش کرتے ہیں جیسے آپ نے آخر کار کوئی بڑا مسئلہ حل کر لیا ہو۔ پھر اسپرنٹ (sprint) ختم ہو جاتا ہے۔ یا کوئی چیز خراب ہو جاتی ہے۔ یا پھر آپ محض ایک منگل کی شام کوڈ کھولتے ہیں اور وہ جوش و خروش ختم ہو چکا ہوتا ہے۔
زیادہ تر ڈویلپرز اس بوجھ کو محسوس کرتے ہیں۔ یہ مکمل طور پر پچھتاوا نہیں ہے، بلکہ 'کاش ایسا ہوتا' کی ایک خاموش فہرست کی طرح ہے۔ آپ کا GitHub پروفائل اچھے ارادوں کا ایک آرکائیو بن جاتا ہے۔ Side Project Cemetery کے تخلیق کار نے کچھ ایسا بنایا ہے جو براہ راست اس مسئلے کا سامنا کرتا ہے۔ ان کا ٹول آپ کے پبلک پروفائل کو چاندنی میں نہائے ہوئے ایک قبرستان میں بدل دیتا ہے جہاں ہر پرانے ریپوزٹری کو ایک ہیڈ اسٹون (headstone)، موت کی تاریخ، اور کبھی کبھار ایک مزاحیہ جملہ ملتا ہے۔
قبرستان بڑھتا چلا جاتا ہے
سائیڈ پروجیکٹس معمولی وجوہات کی بنا پر ختم ہو جاتے ہیں۔ آپ کو ایک نیا فریم ورک سیکھنا تھا، اس لیے آپ نے ایک CLI ٹول بنایا۔ آپ ایک اسپریڈ شیٹ کو خودکار بنانا چاہتے تھے، اس لیے آپ نے ایک Python wrapper لکھا۔ پروٹو ٹائپ آپ کا مسئلہ حل کرنے کے لیے کافی تھا، اور بس یہیں سب ختم ہو گیا۔ وہاں کوئی صارف انتظار نہیں کر رہا تھا، کوئی ڈیڈ لائن کا دباؤ نہیں تھا، اور نہ ہی کوئی مینیجر اسٹیٹس اپ ڈیٹ مانگ رہا تھا۔ بیرونی دباؤ کے بغیر، تمام تر بوجھ تحریک (motivation) پر ہوتا ہے۔ جب تحریک کم ہوتی ہے، تو پروجیکٹ رک جاتا ہے۔
کسی عام ڈویلپر کا GitHub دیکھیں اور آپ کو یہی پیٹرن نظر آئے گا۔ ایک ریپوزٹری کے لیے زنگ آلود رنگ کا کنٹری بیوشن گراف۔ ایک README جو "TODO: write tests" پر ختم ہوتا ہے۔ ایک کمٹ ہسٹری (commit history) جو چھ ماہ پہلے اچانک ختم ہو گئی۔ ہم ان ریپوزٹریز کو شرمناک یادگاروں کی طرح سمجھتے ہیں۔ ہم انہیں تیزی سے نظر انداز کر دیتے ہیں، جیسے ادھورا کوڈ کوئی چھپانے والی چیز ہو۔ Side Project Cemetery اس کے برعکس موقف اپناتا ہے۔ یہ کہتا ہے: انہیں مناسب طریقے سے دفنائیں۔ انہیں تسلیم کریں۔ پھر، اگر آپ چاہیں، تو کسی ایک کو دوبارہ زندہ کریں۔
قبرستان کیسے کام کرتا ہے
انٹرفیس سادہ اور واضح ہے۔ آپ کوئی بھی GitHub یوزر نیم ٹائپ کرتے ہیں۔ ایپ GitHub REST API سے معلومات حاصل کرتی ہے، تمام پبلک ریپوزٹریز نکالتی ہے، اور ان کو فلٹر کرتی ہے جن میں گزشتہ ایک سو اسی دنوں میں کوئی پش (push) نہیں کیا گیا۔ ہر نتیجہ ایک قبر بن جاتا ہے۔ آپ پیدائش کا سال، موت کا سال، اور ریپوزٹری کی تفصیلات سے تیار کردہ ایک عبارت (epitaph) دیکھتے ہیں۔
کچھ عبارتیں نرم انداز میں ہوتی ہیں:
- JavaScript میں لکھا گیا۔ callback کی تھکن سے دم توڑ گیا۔
دوسری عبارتیں تاریخ کا زیادہ فراخ دلانہ انداز پیش کرتی ہیں:
- مردہ نہیں ہے۔ بس 2025 سے شدت سے التوا میں ہے۔
اگر آپ مزید شخصیت چاہتے ہیں، تو آپ اختیاری Gemini انٹیگریشن کو فعال کر سکتے ہیں۔ AI ریپوزٹری کی زبان اور سیاق و سباق کو پڑھتا ہے تاکہ ایسی مخصوص عبارتیں تیار کر سکے جو ٹیمپلیٹ شدہ محسوس نہ ہوں۔ اس میں ایک اختیاری ElevenLabs انٹیگریشن بھی ہے جو تعزیتی کلمات کو بلند آواز میں پڑھتی ہے، جو ایک دکھاوے کی طرح لگتا ہے جب تک کہ آپ اپنے ہی چھوڑے ہوئے API wrapper کو ایک سنجیدہ راوی کی آواز میں نہ سن لیں۔ اس مقام پر، یہ مضحکہ خیز صورتحال آپ کے احساسِ جرم کو ختم کر دیتی ہے، اور وہی احساسِ جرم تھا جس نے ریپوزٹری کو دفن کر رکھا تھا۔
Rekindle: بوجھ سے بچنے کے لیے ایک بٹن
قبرستان تو صرف آدھا مقصد ہے۔ اصل فیچر ہر ہیڈ اسٹون کے نیچے چھپا ہے: ایک Rekindle بٹن۔ اس پر کلک کریں، اور ایپ آپ کا README پڑھے گی۔ یہ پروجیکٹ کے مقصد کے بارے میں آپ کی لکھی ہوئی باتوں کا تجزیہ کرے گی، اسے موجودہ کوڈ کے ساتھ جوڑے گی، اور ایک مختصر پیچ (pitch) لکھے گی تاکہ آپ کو یاد دلایا جا سکے کہ آپ نے شروع میں اس پر توجہ کیوں دی تھی۔ پھر یہ ایک چھوٹے اور ٹھوس عمل کے ساتھ ختم ہوتا ہے جو آپ آج رات کر سکتے ہیں۔ کوئی روڈ میپ نہیں۔ کوئی ریفیکٹر (refactor) پلان نہیں۔ صرف ایک کام۔ پانچ منٹ کی محنت۔
یہ اس لیے اہم ہے کیونکہ کسی پرانے پروجیکٹ کی طرف واپسی کا مشکل ترین حصہ کوڈنگ نہیں ہے۔ بلکہ یہ یاد رکھنا ہے کہ آپ کہاں تھے اور خود کو رک جانے پر معاف کرنا ہے۔ ایک بہت پرانا پروجیکٹ بہت بڑا محسوس ہوتا ہے۔ آپ سمجھتے ہیں کہ صرف اس کے آرکیٹیکچر (architecture) کو دوبارہ سمجھنے کے لیے آپ کو تین گھنٹے درکار ہوں گے۔ Rekindle بٹن اس مفروضے کو ایک چھوٹے سے کام (todo) میں بدل دیتا ہے۔ مقصد یہ ہے کہ آپ کا اگلا کمٹ (commit) صرف پانچ منٹ کی دوری پر محسوس ہو، کیونکہ ایک بار جب ہسٹری میں ایک چھوٹا سا فرق (diff) آ جاتا ہے، تو رفتار (momentum) خود بخود واپس آنے لگتی ہے۔
اسٹیک کو اتنا سادہ کیوں رکھا جائے
تکنیکی طور پر، یہ پروجیکٹ وہی کرتا ہے جس کی یہ تبلیغ کرتا ہے۔ یہ سادہ HTML، CSS، اور JavaScript کے ساتھ بنایا گیا ہے۔ یہ GitHub REST API استعمال کرتا ہے۔ اس میں کوئی سرور، کوئی بلڈ اسٹیپس (build steps) یا برقرار رکھنے کے لیے کوئی نیا فریم ورک نہیں ہے۔ آپ اسے GitHub Pages پر ہوسٹ کر کے چھوڑ سکتے ہیں۔
وہ کم سے کم از کمیت (minimalism) ایک فیچر ہے، سستی نہیں۔ پرانے کوڈ کو دوبارہ زندہ کرنے والے ٹول کو خود ایک کمزور ڈیپینڈنسی ٹری (dependency tree) پر انحصار نہیں کرنا چاہیے۔ اگر تخلیق کار چھ ماہ کے لیے Side Project Cemetery کو چھوڑ بھی دے، تو یہ قبرستان اپنے ہی قبرستان کا ایک اور رہائشی نہیں بن جائے گا۔ کوڈ پڑھنے کے قابل رہے گا۔ نہ webpack کنفیگریشنز کو اپ ڈیٹ کرنے کی ضرورت ہوگی، نہ ہی Docker امیجز کو پیچ (patch) کرنے کی۔ یہ ٹولنگ میں احتیاط کے حق میں ایک خاموش دلیل ہے: کبھی کبھی ایک اسٹیٹک سائٹ اور ایک API کی (key) ہی کافی ہوتی ہے۔
جب بٹن واقعی کام کرتا ہے
ڈویلپر کا اعتراف ہے کہ ڈویلپمنٹ کے دوران ان کے اپنے ہی مردہ پروجیکٹس نے انہیں پکارا تھا۔ ایک خاص طور پر ایک ایسا پروجیکٹ تھا جو رات بھر کا جنون تھا، جو جوش و خروش کی کیفیت میں لکھا گیا اور پھر بھول گیا۔ انہوں نے اس پر 'Rekindle' بٹن کا استعمال کیا۔ ایپ نے README کو پڑھا، اس کے بنیادی تصور کو یاد کیا، اور اسے مکمل کرنے کے لیے ایک حقیقی کام واپس دے دیا۔ یہ کام کر گیا۔ انہوں نے اسی ہفتے وہ ادھورا حصہ مکمل کر کے ریلیز کر دیا۔
یہی اس ٹول کا بنیادی مقصد ہے۔ جنون مرتا نہیں ہے۔ یہ بس تھوڑی دیر کے لیے سو جاتا ہے۔ زیادہ تر متروکہ ریپوزٹریز انجینئرنگ کی ناکامی نہیں ہوتیں۔ بلکہ یہ سیاق و سباق (context) کی ناکامی ہوتی ہے۔ آپ اس سلسلے کو اس لیے کھو دیتے ہیں کیونکہ وہ سلسلہ صرف آپ کے ذہن میں تھا، اور آپ کا ذہن دوسرے سلسلوں کی طرف بڑھ گیا۔ Side Project Cemetery اس سیاق و سباق کو ظاہری شکل دیتا ہے۔ یہ README کو پڑھتا ہے تاکہ آپ کو اپنے ماضی کے خیالات کو شروع سے دوبارہ ترتیب نہ دینا پڑے۔
اصل پیمانہ یہ نہیں ہے کہ آپ کتنی ریپوزٹریز کو دوبارہ زندہ کرتے ہیں۔ بلکہ یہ ہے کہ آپ کتنی ریپوزٹریز کے بارے میں عجیب محسوس کرنا چھوڑ دیتے ہیں۔ یہ قبرستان انہیں آرام کرنے کے لیے ایک جگہ دیتا ہے جب تک کہ آپ تیار نہ ہو جائیں۔ اور جب آپ تیار ہوتے ہیں، تو یہ آپ کے ہاتھ میں ایک بیل اور ایک واحد ہدایت دے دیتا ہے: یہاں سے شروع کریں۔
اپنے آئیڈیاز کو دفن رہنے نہ دیں۔
قبرستان دیکھنے کے لیے https://pyaroslav.github.io/side-project-cemetery/ پر جائیں، اور Dev.to پر مکمل کہانی یہاں پڑھیں۔
