اولین بار با این مفهوم InnerSource در ویدئو کنفرانس گیت هاب آشنا شدم. اول فکر کردم شاید چیزی است که مربوط به آینده است و هنوز به مرحله بلوغ نرسیده است و در بین سازمان ها کاربرد ندارد. اما در بین ویدئو متوجه شدم که خلق این مفهوم به سال 2000 برمی گردد و شرکت هایی چون مایکروسافت، پی پال، نت فیلیکس، سامسونگ، فیس بوک، وال مارت، بوش و … از این روش استفاده می کنند، فهمیدم که اشتباه می کردم. فهمیدم که تغییری در نحوه مدیریت، همکاری و خلاقیت در سازمان ها ایجاد شده است.
در این مقاله قصد دارم شما را با مفهوم InnerSource، مزایا و نحوه پیاده سازی آن آشنا کنم.
درخواست: اگر برای InnerSource معادل فارسی مناسبی به ذهن تان رسید خوشحال می شوم با من در میان بگذارید.
InnerSource چیست؟
اگر بخواهم در یک جمله این مفهوم را تعریف کنم:
اعمال روش ها و عرف های جامعه متن باز بر روی پروژه های داخلی یک سازمان.
InnerSource استراتژی توسعه نرم افزار است که در آن شرکت ها و سازمان ها روش ها و فرهنگ جامعه متن باز را به منظور افزایش بهره وری بر روی پروژه های داخلی سازمان اعمال می کنند.
وقتی تیم ها InnerSource را به کار می گیرند کد نرم افزار برای همه تیم ها (تیم های توسعه نرم افزار دیگر و مدیران محصول) قابل دسترس است و همه این افراد می توانند در توسعه نرم افزار مشارکت داشته باشند.
چرا باید به این سمت حرکت کنیم؟
جامعه متن باز تجربه ها و دستاوردهای خوب، مفید و کاربردی در خصوص توسعه، بهبود و نگهداری پروژه های بزرگ به دست آورده است. وقتی فرهنگ و روش های جامعه متن باز را برای پروژه های داخلی شرکت به کار می گیریم در واقع قصد داریم از مزایای این دستاوردها در داخل سازمان بهره بگیریم.
سازمان هایی که از Innersource استفاده می کنند مزایایی را تجربه می کنند که در پروژهای متن باز تجربه شده است که عبارتند از:
- کد با کیفیت بالا: InnerSource با مشارکت دادن افراد بیشتری در پروژه ها میزان خلاقیت و ایده ها را افزایش می دهد. مشارکت کردن بیشتر افراد به این معنی است که کدها توسط افراد بیشتری بازبینی و بررسی می شوند و خطاها زودتر شناسایی و برطرف می شوند. این موضوع باعث می شود که پروژه های امن تر و با قابلیت اطمینان بالاتری داشته باشیم.
- مستندات جامع: کد ها بهتر مستند می شوند و شرایط را برای یک ایجاد یک منبع موثق درباره کدها فراهم می کنند.
- استفاده مجدد از کد به صورت موثر: تیم های مختلف می توانند پروژه ها را شناسایی کنند، آنها را با توجه به نیازشان تغییر دهند و یا از همان پروژه ها و کد ها در پروژه خودشان استفاده کنند. این استفاده مجدد باعث انعطاف بیشتر در پروژها و کاهش هزینه های توسعه می گردد.
- شفافیت در تصمیم گیری: در دسترس قرار دادن پروژه ها سطح جدیدی از شفافیت را در سازمان شما ایجاد می کند. با این کار نه تنها کد ها قابل مشاهده هستند بلکه نحوه و فرآیند تصمیم گیری درباره کدها و پروژه ها نیز شفاف می گردد. این دسترس پذیری و شفافیت همه افراد از جمله مدیران پروژه، مدیران محصول، طراحان، تیم امنیتی و غیره را شامل می گردد و آنها نیز در جریان روند ها و اتفاقات پروژه قرار می گیرند.
- تقویت همکاری: برنامه نویسان به راحتی می توانند ایده ها و علایق خود را با دیگران به اشتراک بگذارند و در عین حال از دیگر افراد نیز چیزهای جدیدی را فرا بگیرند. به این ترتیب نه تنها خلاقیت افراد افزایش می یابد بلکه میزان ارتباط و همکاری افراد نیز افزایش و تقویت می گردد.
- فرهنگ سالم سازمانی: دیوارها و موانع بین تیم ها از بین می رود و این موجب می شود که شرایط برای همکاری و رشد برنامه نویسان فراهم شود.
چطور شروع کنیم؟
پیاده سازی InnerSource نیاز به تغییر در فرهنگ سازمان و برنامه ریزی دقیق دارد. بحث فرهنگ را اول عنوان کردم چون اهمیت زیادی دارد. چون بدون تغییر فرهنگ و صرفا با در دسترس قرار دادن کد نمی توان این روش را پیاده سازی کرد. بدون تغییر در فرهنگ سازمان تنها چالش ها و مشکلات سازمان افزایش خواهد یافت و این روش برای شما کاربردی نخواهد داشت.
برای شروع یک پروژه کوچک (درون سازمانی) را به عنوان پروژه آزمایشی انتخاب کنید. در قدم اول معیارهای موفقیت پروژه را تعریف کنید و از همه افراد درگیر در پروژه بخواهید نسبت به این روش بازخورد داشته باشند. در قدم دوم اجازه دسترسی به کدهای پروژه را در اختیار هم افراد و تیم ها قرار دهید.
ساختار یک پروژه InnerSource
یک پروژه متن باز معمولا چنین ساختاری دارد:
- نگهدارنده ها (Maintainers): مشارکت کنندگانی که مسئولیت راهبری و مدیریت سازمانی پروژه را بر عهده دارند. این افراد لزوما مالک یا نویسنده اصلی پروژه نیستند.
- مشارکت کنندگان (Contributors): هر فردی که به نحوی در پروژه مشارکت دارد.
- جامعه استفاده کنندگان (Community members): افرادی که از پروژه استفاده می کنند.
پروژه های InnerSource نیز معمولا ساختاری مشابه به پروژه های متن باز دارند با این تفاوت که تعریف برخی نقش ها دراین پروژه ها تغییر می کنند. پروژه های InnerSource چنین ساختاری دارند:
- نگهدارنده ها (Maintainers): برنامه نویسان، مدیران محصول و دیگر افراد تصمیم گیر که مسئولیت راهبری و مدیریت پروژه را بر عهده دارند.
- مشارکت کنندگان (Contributors): برنامه نویسان، مهندسین داده، مدیران محصول، بازاریاب ها و دیگر افرادی که به پیشرفت و پیشبرد پروژه کمک می کنند. مشارکت کنندگان می توانند جز تیم اصلی توسعه پروژه نباشند اما با پیدا کردن باگ ها، بازبینی کدها و یا ایده داده و فعالیت هایی مشابه می توانند به پیشرفت پروژه کمک کنند.
برای چه سازمان هایی کاربرد دارد؟
InnerSource یک تغییر در نگرش و فرهنگ سازمان است تا یک تغییر تکنولوژیک. به همین دلیل پیاده سازی و اجرای آن می تواند چالش برانگیز باشد. با در نظر گرفتن این مورد و نام شرکت هایی که در ابتدای مقاله مطرح کردم به نظر می رسد که تنها برای سازمان های بزرگ کاربرد دارد.
در ادامه سوالاتی مطرح شده اند که به شما کمک می کنند که آمادگی تیم تان برای به کار گیری InnerSource را بررسی کنید. اگر جواب شما به بیشتر این سوالات بله است به این معنی که شما آمادگی لازم برای بکارگیری این روش را دارید:
- آیا سازمان ما فرهنگی باز و شفاف دارد؟
- آیا ما نرم افزارمان را بر روی یک پلتفرم باز توسعه می دهیم؟
- آیا ابتکارات ما به خوبی توسط مدیران و رهبران پشتیبانی می شوند؟
- آیا برنامه نویسان در سازمان ما اجازه و استقلال کافی برای مشارکت در پروژه هایی به غیر از پروژه مستقیم خودشان را دارند؟
- آیا سازمان ما در پروژه های متن باز مشارکت دارد؟
- آیا تیم فنی ما از ابزارهای CI استفاده می کند؟
- آیا گروهی متشکل از افراد از بخش ها و تیم های مختلف در سازمان ما وجود دارد؟
سازمان ها با یکدیگر تفاوت دارند و موارد بالا نباید به عنوان پیش نیاز برای حرکت به سمت InnerSource و اجرای آن در نظر گرفته شوند. هر زمانی که احساس کردید اعتماد کافی بین تیم های مختلف سازمان وجود دارد و می توانند به راحتی با یکدگیر همکاری و مشارکت داشته باشند و نسبت به یکدیگر بازخورد نشان دهند حرکت به سمت InnerSource را شروع کنید.
خلاصه
بطور خلاصه Innersource به معنی اعمال روش ها و عرف های جامعه متن باز در درون پروژه های یک سازمان است. این روش یک تغییر اساسی در نحوه توسعه نرم افزار در سازمان ها ایجاد می کند. این تغییر نه تنها باعث بهبود کیفیت و امنیت نرم افزار ها می گردد بلکه سازمان ها را در مسیر موفقیت قرار می دهد. استفاده از InnerSource نه تنها به شرکت ها در مقابله با چالش های جدید توسعه نرم افزار کمک می کند بلکه با تقویت همکاری و خلاقیت در بین تیم ها و افراد، شرایط توسعه و رشد سازمان را نیز فراهم می کند.
اگر سازمانی نگاهی به آینده داشته باشد پیاده سازی InnerSource یک تصمیم استراتژیک ضروری است که به آنها در مقابله با چالش های پیش رو کمک خواهد کرد و فرصت های جدیدی را ایجاد می کند.
منابع
2. گیت لب
3. گیت هاب

2 دیدگاه روشن InnerSource چیست؟
عالی بود سید
ممنون لطف دارید.