در ادامه، نکات کلیدی و راهنماییهای ارائهشده توسط سه نفر از نگهدارندگان (Maintainer) پروژههای متنباز در خصوص چگونگی بازنشستگی (Sunsetting) پروژهها به شیوهای مناسب و حرفهای، بررسی میشود. هدف از این راهنما، ارائه دیدگاهی جامع از اقداماتی است که باید و نباید هنگام پایان دادن به یک پروژه متنباز انجام شود، تا ضمن حفظ اعتبار توسعهدهنده، حقوق کاربران نیز رعایت گردد.
پرهیز از نگهداری طولانیمدت پروژههای غیرضروری
یکی از مهمترین توصیهها، اجتناب از ادامه نگهداری پروژههایی است که دیگر کاربرد چندانی ندارند یا راهکارهای بهتری برای آنها ارائه شده است. اولگا بوتوینیک (Olga Botvinnik)، زیستشناس محاسباتی، تجربه خود در مورد نگهداری طولانیمدت بسته مصورسازی داده پایتون خود به نام "پریتیپلاتلیب" (prettyplotlib) را به اشتراک میگذارد. او اذعان میکند که به دلیل تمرکز بر پروژههای جدیدتر و ظهور کتابخانه محبوبتر "سیبورن" (Seaborn)، بهتر بود زودتر پروژه خود را بازنشسته میکرد. او همچنین اشاره میکند که بهروزرسانی "پریتیپلاتلیب" برای پشتیبانی از پایتون 3 برایش چالشبرانگیز به نظر میرسید. این تجربه نشان میدهد که شناخت زمان مناسب برای پایان دادن به یک پروژه، به اندازه به پایان رساندن آن اهمیت دارد.
در نظر گرفتن امکان واگذاری پروژه به نگهدارنده جدید
پیش از اعلام بازنشستگی یک پروژه، باید امکان واگذاری آن به فرد یا گروه دیگری که علاقهمند به ادامه توسعه و نگهداری آن هستند، بررسی شود. برت ترپسترا (Brett Terpstra)، توسعهدهنده فرانتاند، که تجربه بازنشستگی چندین پروژه را دارد، همواره پیش از اعلام رسمی پایان کار یک پروژه، به دنبال فردی برای تحویل گرفتن آن میگردد. او معتقد است که در برخی موارد، پروژهها آنقدر ساده هستند که نیاز به نگهداری چندانی ندارند و در این صورت، میتوان با درج یادداشتی مبنی بر عدم بهروزرسانی فعال، همچنان امکان مشارکت (Contribution) برای دیگران را باز گذاشت. با این حال، بن جانسون (Ben Johnson)، نگهدارنده ابزار بازیابی اسکیوالایت به نام "لیتاستریم" (Litestream)، تصمیم گرفت پروژه "بولتدیبی" (BoltDB) را بازنشسته کرده و کاربران را به یک شاخه (Fork) به نام "بیبولت" (BBolt) هدایت کند، زیرا شهرت و اعتبار او با پروژه اصلی گره خورده بود و نمیخواست مسئولیت آن را به شخص دیگری بسپارد.
اطلاعرسانی مناسب پیش از توقف پشتیبانی
قطع ناگهانی پشتیبانی از یک پروژه بدون اطلاع قبلی، اقدامی نادرست است. برت ترپسترا حداقل یک ماه پیش از بازنشستگی یک پروژه، به کاربران اطلاع میدهد. او حتی پس از توقف فعالیت خود بر روی پروژه، یک بازه زمانی 30 روزه را برای رسیدگی به مسائل احتمالی و کمک به کاربران برای انتقال به راهکارهای جایگزین در نظر میگیرد. اولگا بوتوینیک نیز تجربه خود در اطلاعرسانی بازنشستگی "پریتیپلاتلیب" را با انتشار یک پست وبلاگ و یک توییت به اشتراک میگذارد و در آن ضمن اعلام توقف رفع باگها، کاربران را به استفاده از کتابخانه "سیبورن" تشویق میکند.
حفظ دسترسی به کد پروژه از طریق آرشیو کردن
به جای حذف کامل یک پروژه، بهتر است آن را آرشیو (Archive) کنید. آرشیو کردن یک پروژه در گیتهاب (GitHub) آن را به حالت فقط خواندنی (Read-only) در میآورد و به کاربران اطلاع میدهد که دیگر نگهداری نمیشود. تمام بخشهای پروژه از جمله Issues (گزارش مشکلات)، Pull Requests (درخواستهای ادغام کد)، Milestones (نقاط عطف) و Permissions (مجوزها) به حالت فقط خواندنی تغییر میکنند. با این حال، امکان لغو آرشیو و ادامه کار بر روی پروژه در آینده همچنان وجود دارد. اولگا بوتوینیک به این نکته مهم اشاره میکند که حذف پروژهها میتواند مشکلات مربوط به تکرارپذیری (Reproducibility) را برای محققان و دانشگاهیان ایجاد کند. حفظ کد به صورت آنلاین این امکان را فراهم میسازد که حتی اگر در زمان بازنشستگی، فردی برای تحویل گرفتن پروژه پیدا نشد، در آینده شخص دیگری بتواند آن را فورک کرده یا از بخشهای مفید آن استفاده کند. البته در مواردی که کد پروژه دارای آسیبپذیریهای امنیتی خطرناک است و کاربران را در معرض ریسک قرار میدهد، حذف آن ممکن است بهترین گزینه باشد.
جمعبندی
پروژههای متنباز موجودیتهای زندهای هستند که با اشتیاق توسعهدهندگان و حمایت جامعه شکل میگیرند و به حیات خود ادامه میدهند. شناخت زمان مناسب برای پایان دادن به یک پروژه و نحوه انجام این کار به شیوهای صحیح، نه تنها نشاندهنده مدیریت درست است، بلکه بخش مهمی از چرخه حیات پروژههای متنباز به شمار میرود. توسعهدهندگان داتنت نیز با در نظر گرفتن این نکات میتوانند پروژههای خود را به شیوهای حرفهای و با کمترین آسیب به کاربران بازنشسته کنند.
مشاهده مطلب اصلی