نکاتی کوتاه و مختصر درباره کارگروهی، Open source, License, SCM, Git, Svn و...
سلام من از موقعی عضو این مجموعه شدم، تابحال مطلبی راجب Git, Svn, SCM, License, Open source و امثالش ندیدم...
درصورتی بخش مهمی از روند تولید یک برنامه رو تشکیل میدن! و حتی امکان برنامه نویسی جدی بدون اونها وجود نداره!
البته اینجا خیلی ها استادن و سالهاست با این مباحث زندگی می کنند(که هیچی)، ولی خیلی ها هم آشنا نیستند و اطلاعی ندارند.
آیا میدونید معنای واقعی Open source چیه؟ آیا میدونید چه مزایایی داره؟
آیا میدونید License/پروانه نرم افزاری چیه ؟ چه license هایی وجود داره؟ و از کدام و برای چه پروژه ای باید استفاده بشه؟
آیا میدونید Source/Version Control Management چیه؟ آیا تا بحال بصورت تیمی(جدی) برنامه نویسی کردید؟
آیا چیزی درباره نرم افزارهای Git, SourceSafe, Svn, Fossil, CVS شنیدید؟ درباره سایتهای Github.com, BitBucket.org GitLab.com SourceForge.net چطور؟
کوتاه، خلاصه و مفید:
بصورت خلاصه یعنی سورس نرم افزار تون رو (تحت یک license) در دسترس عموم قرار بدید. نرم افزار شما می تونه Open source باشه ولی رایگان نباشه! می تونه Open source باشه و رایگان هم باشه ولی حق فروش نداشته باشه! با اینکار، همه برنامه نویسان در سرار دنیا (و حتی خانه اندروید ایران) می تونن روی کدهای شما کار کنند، باگ ها و اشکالاتش رو برطرف کنند، پچ بزنند، بهینه ترش کنند، امکانات جدید بهش اضافه کنند و غیره...
این دقیقاً همون راه و روشیه که 90% صاحبان نرم افزارهای موفق و بزرگ دنیا ازش بهره میبرند.
و دقیقاً همون راه و روشیه که 70% برنامه نویسان حرفه ای دنیا در پیش رو گرفتند...
از جمله Open source های غیر رایگان(تجاری) مثل سیستم عامل OpenBSD که نسخه تجاری سیستم عامل FreeBSD هستش. مثل سیستم عامل Solaris مثل پایگاه داده MySQL Enterprise مثل بستر QT مثل سیستم عامل Red Hat و غیره رو میشه نام برد.
پروانه یک نرم افزار مثل یک مجوز می مونه! به مصرف کننده یا توسعه دهنده میگه که از نظر قانونی و معنوی چطور باید مصرف کنه، چه گارانتی ای داره، چطور باید توسعه ش بده، چه حق و حقوقی داره، چکار نباید بکنه و چطور می تونه اونو در اختیار دیگران قرار بده. مثلاً پروانه نوع BSD به مصرف کننده و توسعه دهنده میگه: شما می تونید سورس نرم افزار X رو توسعه بدید، تغییرش بدید و حتی برای خودتون بفروشیدش ولی حق ندارید که نام سازنده اولیه رو ازش حذف کنید یا پروانه رو تغییر بدید و غیره...
پروانه مثل LGPL, BSD, MPL, MIT و...
Source/Version Control Management
یعنی مدیریت کنترل سورس، مدیریت و کنترل بازبینی ها، مدیریت و کنترل نسخه و امثالش... بهره گیری از این سیستم/روش به شما کمک می کنه که بتونید سورس برنامه هاتونو مدیریت کنید، پچ هایی که میزنید رو مدیریت کنید، نسخه برنامه هاتونو مدیریت کنید و مهمتر از همه ***** امکان کار گروهی رو براتون فراهم میکنه ***** !
تصور کنید من، شما، حسن و حسین قراره یک برنامه مارکت طراحی کنیم، برفرض اینکه base پروژه قبلاً ریخته شده و حالا باید کاملش کنیم، ایراداتش رو رفع کنیم و امکانات بیشتر بهش اضافه کنیم. ولی چطور؟! هرکسی از هر جایی واسه خودش شروع کنه، از این شاخه به اون شاخه، من فایل شما رو دستکاری کنم، شما مال منو، حسن ماله شمارو، شما ماله حسینو! و حالا قسمتهای زیادی از برنامه با باگ مواجه شده و باید به حالت قبل باز گرده! تازه بعد از این همه تودرتویی چطور همه این قسمت ها رو به هم متصل کنیم؟!
اینجاست که سیستم Source/Version Control Management به کمک ما میاد و امکان کار گروهی رو حتی تا هزاران نفر رو هم براحتی فراهم میکنه! اونم با قابلیت بازگردونن کد به سالهای قبل!
این همون چیزیه که مایکروسافت سورس ویندوز رو باهاش مدیریت میکنه، همون چیزیه که سورس موتور PHP باهاش مدیریت میشه، همون چیزیه که linus torvalds سورس هسته لینوکس(16 میلیون خط کد + هزاران برنامه نویس) رو باهاش مدیریت میکنه و تمام نرم افزار های کوچیک یا بزرگ دنیا.
از جمله Source/Version Control Management های معروف مثل نرم افزارهای Git, SourceSafe, Svn, Fossil, CVS و یا سایتهای Github.com, BitBucket.org GitLab.com SourceForge.net و غیره رو میشه نام برد.
می تونید با یه گشت کوچیک توی اینترنت این نرم افزارها و سایتها رو پیدا کنید و براحتی ازشون استفاده کنید و لذت ببرید. خیلی هم سادن!
(اینم بد نیست بگم که تسلط به این نرم افزار ها یکی از سوالاتی که حین استخدام در شرکت های معتبر نرم افزاری ازتون پرسیده میشه.)
در آخر، مطمعن باشید اگر در این زمینه ها کوتاهی کنید و خودتونو بروز نکنید جایگاه مناسبی در بین توسعه دهندگان یا شرکت های نرم افزاری نخواهید داشت... پیشنهاد می کنم از همین الان شروع کنید و یه تجدید نظری روی روند تولید برنامه هاتون داشته باشید.
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .