এই র‍্যান্ট টা আসলে আমার না 😼
২০২১-০৯-২৩ তারিখে @lazerl0rd টেলিগ্রামে এই র‍্যান্টটা পাবলিশ করেছিলেন 🙃। আর কথা না বাড়িয়ে র‍্যান্টে চলে যাই।

নিক্সের বিশেষত্ব আসলে কোথায়? আমি ক’দিন আগে হ্যাকারনিউজে একটা আর্টিকেল পড়লাম1 যেখানে একজন নিক্সের “বিজ্ঞাপন” দিচ্ছিল, কিন্তু নিক্সের একমাত্র উল্লেখযোগ্য সুবিধা হল এক লাইব্রেরির একাধিক ভার্সন ইন্সটল করা যায় (প্রত্যেকে আলাদা ডিরেক্টরিতে), কিন্তু এই বৈশিষ্ট্য FHS2 এর বিরোধী (নিক্সের অন্যান্য অনেক বৈশিষ্ট্যের মধ্যে)। এই বৈশিষ্ট্য ছাড়া অন্যান্য বিষয়ে আমি এই কমেন্ট3 ও পরবর্তী কমেন্টগুলোর সাথে মোটামুটি একমত।

বেশিরভাগ নিক্সিয়ান কী কারণে যে “declarative, reproducible builds” ধারণার সাথে জোঁকের মত আটকে আছে তা আমি নিশ্চিত নই। আমি তা নিক্স ছাড়া ডিস্ট্রিবিউশনে আর আমার “পরিবর্তিত” কনফিগারেশন ফাইল সহ প্যাকেজ করতে না পারার কোন কারণ দেখি না (যদিও নিক্সের জন্য নতুন করে বানানো লাগবে, হাওয়া থেকে তো আর আসবে না) যতক্ষণ আমি আমার “পুরনো” প্যাকেজ ভার্সন চুলচেরা ভাবে তুলনা করি (এবং তা, আসলেও ঐ প্যাকেজ ম্যানেজারে সাপোর্ট করে)।

আমি বলতে চাচ্ছি, তুমি বলতে পার যে নিক্সে কনফিগ ফাইল ম্যানেজের সুবিধা শুরু থেকেই আছে, কিন্তু আমি চেষ্টা করলে হয়ত কয়েক মুহূর্তেই ব্যাশ দিয়ে আর্চ লিনাক্সে ব্যবহারের একটা স্ক্রিপ্ট বানিয়ে ফেলতে পারব (যা ব্যাকআপের সাথে বর্তমান কনফিগ ফাইলের তুলনা করবে যেমনটা pacman করে pacsavepacsave এর জন্য, তবে নিজস্ব বৈশিষ্ট্য আনবো)। সত্যিকার অর্থে নিক্সের এ কাজের জন্য নিজস্ব কোন “ভাষা” ব্যবহারের দরকার ছিল না; বলতে গেলে এটা শুধু “বাহবা” নেয়ার জন্য, আর কোন কারণ ছাড়াই নতুনদের দূরে রাখে।

পুনশ্চ: একই সফটওয়ার ও লাইব্রেরির একাধিক ভার্সন ইন্সটল করার বিষয়ে বলতে চাই যে, আমি সিস্টেমে একটা নির্দিষ্ট স্ট্যান্ডার্ড ভার্সনের সাথে অন্যান্য ভার্সন রাখার ঘোরতর বিরোধী। যদি তোমার পুরো আলাদা ডিপেন্ডেন্সির সেট লাগে যা হয়ত পুরোপুরি আলাদা ইউজারল্যান্ডে চলবে, তাহলে আলাদা ইউজারল্যান্ড(কন্টেইনার) ব্যবহার করো। তোমার প্রয়োজনের অতিরিক্ত প্যাকেজ ইন্সটল করে সিস্টেমকে দূষিত করা উচিত হবে না, নইলে তুমি এভাবে শুধু ফ্ল্যাটপ্যাক/স্ন্যাপ যা করে তা করছ… শুধু তুলনামূলক ভাবে লিনাক্সের মত করে। এভাবে তেমন একটা জায়গা বাঁচবে না, কারণ তুমি একসাথে দুটো পাবে না। আপডেটও বাদ দেয়া যাবে না, আমার কথা বোঝার পরও যদি তুমি কাজটা করবে ঠিক করে ফেল, তাহলে সিকিউরিটি আপডেট পিন(অন্তত নোটিফিকেশন রাখ) করা বাদ দিও না (চেঞ্জলগ অবশ্যই এমন একটা জায়গা যা নতুন প্যাকেজ ম্যানেজারে অবশ্যই উন্নত করতে হবে, নতুন ফিচারের জঙ্গল না)। দিনশেষে, অভিজ্ঞ সিসঅ্যাডমিনের পক্ষেও সব CVE এর দিকে নজর রাখা সম্ভব নয় আর ডিপেন্ডেন্সি আপডেট না করা মানে সিস্টেমকে ঝুঁকিপূর্ণ অবস্থায় রাখা। একারণে অনেকেই স্যান্ডবক্স করা কন্টেইনার ব্যবহার করতে বলে থাকে, কারণ বেয়ারমেটাল সিস্টেমকে রক্ষা করা বিশেষ ভাবে প্রয়োজনীয়। এর জন্য যা লাগবে তা শুধুমাত্র অতিরিক্ত একটা ভার্সন নাম্বার যা বুঝাবে যে এ আপডেট ফিক্স না আপস্ট্রিম আপডেট, আর্চ যার জন্য pkgrel ব্যবহার করে। সব শেষে, তুমি যদি কমিট হ্যাশ দিয়ে প্যাকেজ ভার্সন ফ্রিজ করতে চাও - তাহলে আপস্ট্রিম কমিট হ্যাশ দিয়ে ফ্রিজ কর, nixpkg এর কমিট হ্যাশ দিয়ে না। নিক্স যেভাবে কাজটা করছে তা বোকার মতোই লাগে।