محمدرضا رازیان
محمدرضا رازیان
خواندن ۱۱ دقیقه·۴ سال پیش

داستان موفقیت سانادسکتاپ

تصویری از محیط کاربری سانادسکتاپ
تصویری از محیط کاربری سانادسکتاپ


سلام! اواخر سال ۹۸ بود که بنا به درخواست شرکت بنیان توسعه و نوآوری مغزافزار (بتنا) تصمیم گرفتیم کار بر روی سیستم عامل دسکتاپ را آغاز کنیم. من مسئولیت مدیر محصولی این پروژه رو پذیرفتم اما دقیقاً بعد از پذیرش این مسئولیت، کرونا در ایران شدت گرفت و محدودیت‌های سخت گیرانه آغاز شد (حدوداً اواسط اسفند). من ماندم با مسئولیت مدیر محصولی و این محدودیت‌های فاصله گذاری و آغاز تعطیلی شرکت‌ها و دورکاری‌ها. چاره‌ای نداشتم جز انجام کار (از آنجایی که پروژه واسم مهم بود دوست داشتم هر طوریه این پروژه موفق بشه) در شرایطی که حتی تیم سازی هم هنوز انجام نشده بود. در نظر دارید که تیم‌سازی در شرایط عادی هم بسیار دشوار است در شرایط دورکاری که واقعاً وحشتناکه! از طرف دیگر آنچه کار را بر من سخت تر می‌کرد استراتژی رسیدن به محصول بود. شخصاً تجربه یک دهه تلاش‌های انجام شده بر روی سیستم عامل را در ایران دقیقاً مطالعه کرده بودم (البته در هیچکدام از پروژه های قبلی حضور یا تأثیری نداشته‌ام)‌ و نمیخواستم محصول ما به سرانجام آن‌ها دچار شود! عمده علت شکست آن‌ها را در این موارد میدیدم: ۱- عدم طی مسیر با مشتری در طی فرایند توسعه ۲- عدم فراهم کردن زیر ساخت مشارکت کامیونیتی ۳-نداشتن امکان یا سامانه‌ای برای پشتیبانی


تصویری از پس‌زمینه و اطلاعات سیستم‌عامل سانادسکتاپ
تصویری از پس‌زمینه و اطلاعات سیستم‌عامل سانادسکتاپ


برای رفع مشکل اول، تصمیم گرفتم به جای صرف دو یا سه سال زمان در یک آزمایشگاه و بعد ارائه محصول به بازار، یک زمانبندی ۳ تا ۴ ماهه را در نظر بگیرم و طبیعتاً برای یک MVP (حداقل محصول قابل ارائه) برنامه‌ریزی کنم. این باعث می‌شد هم ما یک محصول برای ارائه به مشتری داشته باشیم (قدرت چانه‌زنی در زمانی که شما محصول را به مشتری نشان بدی با اینکه فقط ازش حرف بزنی خیلی متفاوته) و از طرف دیگر هم اگر مشتری پذیرفت ادامه مسیر توسعه را با مشتری طی کنیم (تا در یک اتاق بسته!).

برای رفع مشکل سوم هم از ابتدا به دنبال راه اندازی یک سامانه پشتبانی ساده (از جهت استفاده) برای ارائه پشتیبانی بودم. برای همین این مسأله هم تا حدی حل شده بود (الان که دارم با شما صحبت می‌کنم این سامانه در آدرس support.sanaos.ir بالا است).

اما رفع مشکل دوم...این قسمت انصافاً پیچیده‌ترین بخش کار بود (نه از جهت فنی). اینکه شما بتوانید برنامه‌ریزی بکنید تا از اعضای کامیونیتی با ویژگی‌های رفتاری متفاوت بهره ببرید واقعاً کار ساده‌ای نبود و نیست. خیلی سعی کردم در اینجا ویژگی خاصی مطرح نکنم تا ویژگی چند عضو از کامیونیتی به تمامی آن‌ها بسط داده نشود! اما به همین بسنده می‌کنم که کار با بچه‌های کامیونیتی بسیار سخت بود! در اولین گام با دانیال بهزادی در مورد پروژه صحبت کردم و پیشنهاد مدیر فنی را به ایشون دادم و ایشون هم پذیرفت. سپس در اولین جلسه با حضور بنده، آقای تشکری (به نوعی ایشون هم مشاور بودند و هم کارفرما) و دانیال، ویژگی‌هایی از سیستم‌عامل که در MVP باید وجود داشته باشد را بدست آوردیم. در گام بعدی باید تیم سازی می کردیم. به دانیال گفتم افرادی رو معرفی کنند ایشون به من گفتند: شما معرفی کنید که من نپذیرفتم و با اصرار از ایشون خواستم که افراد رو ایشون معرفی کنند. علت اصرار من این بود که می‌خواستم حتماً و حتماً از دل کامیونیتی افرادی بیان و پروژه رو انجام بدن. بعد از این درخواست من، ایشون رزومه چند نفر رو فرستادند. رزومه ها رو بررسی کردم و با توجه به نیازمون تصمیم گرفتم با علیرضا فریدونی و محمدرضا حقیری (هیچ کدوم از این دو بزرگوار رو از قبل نمی‌شناختم) جلسه مصاحبه آنلاین داشته باشم. خدا رو شکر نتیجه مصاحبه با هر دو مثبت بود و قرار شد در پروژه همکاری کنند. در تیم، محمدرضا عمدتا بر روی ساخت سیستم عامل کار می‌کرد (کار بر روی پیکربندی‌ها، بسته‌های نرم‌افزاری، نصاب و...) و علیرضا عمدتا روی مخازن (و البته مسائل و رفع مشکلات دیگر به فراخور نیاز).

پایه‌گذاران سانادسکتاپ
پایه‌گذاران سانادسکتاپ


در همان روز های ابتدایی قبل از آغاز پروژه، به انتخاب اسم سیستم عامل دسکتاپ فکر میکردم. طبیعتاً باید یک اسمی وجود می‌داشت که حول آن جمع شیم و روی اون صحبت کنیم و بتونیم اون رو صدا کنیم در موردش به دیگران بگیم و بهش فکر کنیم. بنابراین خیلی زود باید یک اسم انتخاب می‌شد. از طرفی هم میدونستم که انتخاب اسم آفتی است که یک محصول را بعضا در ابتدای کار خود متوقف می‌کند (وابسته بودن اسم به لوگو یا همون نشان یکی از دلایل این وقفه است). برای همین به میزان یک روز زمان صرف کردم و به اسم سانا رسیدم. اسم سانا از اختصار کلمه‌ای گرفته نشده است. بلکه مدنظر من خود کلمه سانا بود. سانا که یک اسم کوردی است به معنی ساده، سهل و آسان است. ادعای من به عنوان مدیرمحصول این بود که سیستم‌عامل دسکتاپ ما باید تا حد امکان برای کاربر عادی آسان و ساده باشد. برای همین اسم سانادسکتاپ رو انتخاب کردم. بچه‌ها هم موافقت کردند (یا حداقل مخالفت نکردند). مزیت این اسم این بود که در کنار واژه‌های دیگر هم سازگاری داشت مثل سانالایت (نسخه سبک سانا) و ساناسرور و ساناچیزنت. البته سین به سیستم عامل و نا به نرم‌افزار آزاد هم می‌تواند مرتبط شود. برای الف بعد از سین هم فکر نکرده‌ام!

حدوداً از هفته دوم خانم خدابخشی برای آماده سازی آرت‌ورک‌ها به تیم اضافه شدند. ویژگی خانم خدابخشی این بود که ایشون یک ویندوزی فتوشاپ کاری هستند که یک دوره مقدماتی لینوکس رفتند و الان با اینک‌اسکیپ کار می‌کنند. یعنی طرح‌های زده شده برای سانا رو در نرم‌افزار inkscape زده‌اند و این افتخار بود! در این بین از اونجایی که نیاز به کار آموزشی داشتیم از خانم شاکر هم میخواستیم برای بحث آموزش‌ها استفاده کنیم که ایشون ضمن استقبال از پروژه و خوشحالی بابت این کار و این حرکت، به دلیل مشغله فعلی‌شان قرار شد چندماه دیگر اگر بتوانند به تیم اضافه شوند. همچنین یکی از نیازمندی‌های ما این بود که بتونیم تقویم فارسی رو یکپارچه کنیم با میزکار گنوم که با توسعه‌دهندگان افزونه تقویم فارسی صحبت کردیم. ایشون خیلی از مدل کار استقبال کردند ولی به دلایل شخصی، فرصتی برای همراهی تیم در انجام پروژه را نداشتند. در این بین سعی کردیم با صاحب پارسیکس هم ارتباط بگیریم و از نظرات و مشاوره‌های ایشون استفاده کنیم. این کار رو بهزادی و فریدونی پیگیری می‌کردند که البته نتیجه‌ای حاصل نشد. کلاً نظرم بر این بود که ادب پیشه کنیم و از مشورت هر صاحب نظر پیش‌کسوتی بهره ببریم. این رو چندین بار گفتم.

اما احمد حقیقی که ایشون هم از اواسط پروژه به جمع ما اضافه شدند و سند زیرساخت مشارکت کامیونیتی شامل (دیسکورس، گیت‌لب، احراز اصالت و …) رو آماده و پیاده‌سازی کردند (البته قسمت SSO هنوز انجام نشده است).

اسم توزیع. محمدرضا حقیری درخواست داشت تا برای نسخه‌های مختلف یک نام انتخاب کنیم. پیشنهاد شد از اسم کوه‌ها برای نامگذاری استفاده شود. محمدرضا برای اولین نسخه سانادسکتاپ اسم گنو (Genow) رو پیشنهاد داد. گنو، اسم کوهی است در بندرعباس. اسم جذابی بود به واسط شباهت آن با GNU من هم استقبال کردم و همین اسم انتخاب شد.

طرح های توجیهی. یکی از کارهای خوب دانیال این بود که در ابتدا برای هر بخش از سیستم عامل که قصد داشتیم بر روی آن کار کنیم از فرد مسئول، یک طرح توجیهی خواستند. این طرح های توجیهی به مثابه پیش‌زمینه پژوهشی کار، انجام پروژه را خیلی ساختمند کرد. من در کنار مسئولیت مدیر محصولی، مسئولیت طرح توجیهی امنیت سانا رو هم بر عهده داشتم که حاصل اون مدل امنیت سانادسکتاپ بود و تا جایی که میدونم برای اولین بار چنین طرحی برای امنیت سیستم‌عامل مطرح شده است.

جلسات دو هفته‌ای اسپرینت. از دیگر نقاط قوت تیم سانا، جلسات دو هفته یک بار (به صورت مجازی) بود که از ابتدا تا انتهای پروژه به طور منظم برگزار شد. این جلسات واقعاً پر برکت بود برای کل تیم. لذت هم‌افزایی و توفان فکری رو تمام تیم می‌چشیدند. شاید علت اینکه این جلسات دوام داشت این بود که تصمیم گیری‌های کلان در این جلسات انجام می‌شد (مشارکت) و البته مرور فعالیت‌های دو هفته قبل نیز در این جلسات انجام می‌شد. مشکلات و چالش های فنی و غیرفنی مطرح می‌شد و هر کسی راه حلی ارائه می‌داد و مهمتر اینکه به معنای واقعی هم‌افزایی می‌شد.

سامانه‌هایی که برای مدیریت تیم انتخاب کردم. تجربه‌ای که در کارهای گروهی داوطلبانه داشتم باعث شد تا تمام تلاشم را بکنم که صرفاً یک (تاکید روی تعداد است) سیستم ارتباطی یکپارچه با اعضای تیم داشته باشیم. به تجربه، می‌دانستم وقتی تعداد سامانه‌ها (حتی بهترین سامانه‌ها) زیاد می‌شود استفاده‌پذیری از آن‌ها کاهش می‌یابد. نیازمندی‌هایی که داشتیم: مدیریت وظایف (به شیوه کانبان)، پیام رسانی، تماس صوتی، اشتراک فایل، ست کردن زمان جلسات و کنترل نسخه‌های فایل بود. همه این‌ها رو با کمک nextcloud حلش کردیم. برای جلسات هم از جیتسی استفاده می‌کردیم. البته در انتهای پروژه، از ردماین برای مدیریت وظایف و از رایوت برای پیام رسانی استفاده کردیم. اواخر هم برای مستندات از کلبراِی‌آنلاین استفاده کردیم.

به دلیل شدت گرفتن کرونا در فروردین همه تعاملات تیم به صورت مجازی بود تا اواسط اردیبهشت که اولین جلسه حضوری رو برای توسعه تیمی برگزار کردیم. با توجه به اینکه بازدهی اون روز خیلی خوب بود تصمیم گرفتیم باز هم حضوری دور هم جمع شیم که فکر می‌کنم سه چهار روز دیگر هم دور هم جمع شدیم و کار رو پیش بردیم. واسم جالب بود که بچه‌ها انگیزه‌مندانه توسعه سانادسکتاپ را پیش می‌بردند و بعضی قسمت‌های پروژه را هم برای اینکه به ددلاین برسیم شبانه‌روزی کار می‌کردند. خیلی واسم جالب بود که این حس بین تیمی ایجاد شده بود که تمام تعاملات آن به غیر از پنج یا شش روز به صورت مجازی انجام شده بود. اما به هر حال سانادسکتاپ منتشر شد و از صفر به یک رسیدیم...

مقایسه سانادسکتاپ با سایر سیستم‌عامل‌ها (ویندوز ۱۰، دبیان و اوبونتو)
مقایسه سانادسکتاپ با سایر سیستم‌عامل‌ها (ویندوز ۱۰، دبیان و اوبونتو)


هم‌اکنون سانادسکتاپ بر روی چندین سیستم عملیاتی نصب شده و آزمون‌های مختلفی را پاس کرده است. البته فهرستی از مشکلات نسخه اولیه استخراج شده است که قرار است در نسخه‌های بعدی حل شود. خبر خوب اینکه با چند مشتری احتمالی نیز صحبت شده است و موافقت‌های اولیه‌ای برای نصب و استقرار سانادسکتاپ اعلام شده است. اطلاعات بیشتر در مورد سانادسکتاپ در صفحه اختصاصی این سیستم‌عامل در اینجا، راهنماها در اینجا و کدها و اسناد در اینجا و همچنین یک دمو از محیط کاربری در اینجا وجود دارد.

توجه ۱: استفاده از ضمیر من به جای ما، به این علت بوده است که دقیقاً نقش و مسئولیت‌ها مشخص شود تا اگر نقدی یا نقصی وجود دارد متوجه من باشد و نه کل تیم.

توجه ۲: اگه دوست دارید در این پروژه مشارکت کنید از طریق آدرس ایمیلم که در صفحه شخصی‌ام وجود دارد بهم پیام بدید

نرم‌افزار آزادمتن‌بازسیستم‌عامل
علاقمند به حوزه علوم و مهندسی رایانه
شاید از این پست‌ها خوشتان بیاید