میخوام در مورد نرمافزارهای آزاد/متنباز و اینکه چطور میشه که یک نرمافزار توسعه پیدا میکنه؟ (از صفر یا ناصفر) صحبت کنیم.
اینجا منظور از توسعه یافتن یک نرمافزار، هم میتونه ایجاد یک پروژه باشه، هم توسعه و بزرگتر کردن یک نرمافزار موجود
اگر کلی نگاه کنیم یک نرمافزار (آزاد یا انحصاری) زمانی توسعه پیدا میکنه که یک نیاز احساس بشه!
بحث رو به نرمافزارهای آزاد منحصر میکنیم!
چند مثال برای نیازهایی که باعث توسعهی یک نرمافزار آزاد میشه:
- سادهترین و سریعترین حالت نیاز یک برنامهنویس به یک نرمافزار خاص است. حالا یا برای عمل مورد نظر نرمافزاری(آزاد) وجود نداره، یا وجود داره ولی نیازهای مورد نظر توسعهدهنده(Developer) رو برآورده نمیکنه! و یا یک شرکت! به یک برنامهی خاص نیاز داره و اونو به برنامهنویسهای خودش میده تا آماده کنن! این حالت که کاملا مشخصه، یک برنامه نویس به یک ابزاری نیاز داره و اون رو ایجاد میکنه! بعد هم مرام میزاره و در اختیار دیگران هم قرار میده!
- نیاز بعدی، نیاز یک فرد غیربرنامه نویس، یک شرکت یا دولت به یک ابزار است، در این حالت، اون شرکت از یک یا چند برنامهنویس یا شرکت که میشناسه میخواد که برنامهی مورد نظر رو ایجاد یا یک نرمافزار موجود رو بنا به نیاز توسعه بدن! و در مقابلش پولی دریافت کنن. مثل طرح نرمافزارهای آزاد/متنباز در بعضی کشورها
- حالت دیگهای که پیش میاد نیاز یک برنامهنویس به داشتن یک پروژه است! (تز دانشگاه، پروژهی درسی برای درس خاصی مثلا کارآموزی) در این حالت هم بررسی میکنه ببینه آیا نیازی داره که هم برای پروژهی مورد نظر خوب باشه، هم بتونه نیاز خودشو برآورده کنه، اگر نداشت با گشتن در اینترنت و بررسی پروژههایی که دیگران خواستن، و حاضر نبودن براش پولی پرداخت کنن، یا پروژههایی که بنیادهایی مثل GNU یا Mozilla یا BSD یا … پیشنهاد کردن به برنامهنویسها یه چیزیو انتخاب کرده و …
- گاهی نیاز به پول هم در مورد یک نرمافزار آزاد صدق میکنه، مثلا یکی فکر میکنه اگر یه برنامهی فلان بسازه میتونه توی یک بازار خاص اونو بفروشه! پس کار توسعه رو شروع میکنه.
- یه وقت دیگه هم هست که یک برنامهنویس یا توسعهدهنده به یک برنامه نیاز داره، اونم زمانیه که بقول ما میخواد خودی نشون بده! این حالت مخصوصا برای دانشجو ها ملموسه. (البته میشد این حالت رو در قبلی ادغام کرد، ولی خواستم بیشتر روش تاکید کنم
) - گاهی چند تا از این نیازها با هم ادغام میشن! در واقع اینا خیلی در هم قاطی هستن و نمیشه دقیق برای یک پروژه گفت از کدوم نیاز شروع شده!
نیازها زیادن، حالات هم زیادن، اما هدف از این داستان این بود:
دیروز که داشتم دنبال یه Instant Messenger که Voice هم پشتیبانی کنه میگشتم، با دوستانی در یه انجمن(دقیق یادم نیست کجا!) مواجه شدم، و حرفاشون برام جالب بود:
خوب معروفترین برنامهی IM توی لینوکس همون Gaim یا Pidgin است. (نسخهی ویندوزی هم داره و پر کاربرد هم هست) خوب این برنامه نه از صدا(Voice) پشتیبانی میکنه نه از تصویر(WebCam) بحث در موردش زیاد بود، اما جوابی که تیم توسعه به ملت داده بودن اینطور بود:
We plan to implement these features eventually, but it is a daunting task. Not all of our developers care about these features, and because of that don’t want to work on them. The time available to those developers who do want to work on these features is limited, and so any work on these features proceeds slowly.
We aim to have an abstracted, protocol-agnostic API for voice and video, which makes the task harder. Also adding to the difficulty is that now that we have a completely split core (libpurple) and UI (Pidgin and Finch), we refuse to take a step backward and violate this split. The protocol plugins can NOT have any code in them that is UI-dependent, or we break the libpurple/UI split. This imposes additional restrictions that make it a very painstaking process to implement voice and video correctly.
In short, we have no idea when this will happen. It could be tomorrow, or it could be in 2099. That’s really the best answer we can give right now.
گفتن: این کار، ریسکش بالاس و سخت و خطرناکه! چون باید کدشون رو بهم بریزن، در واقع اینم برمیگرده به اینکه این افراد هیچوقت نیازی به صدا هنگام چت نداشتن، و فکر هم نمیکردن که زمانی برسه که نیاز بشه! نمونهی این مسئله رو میتونین توی کانالهای IRC که سالهاس داره استفاده میشه دید! در واقع هکرها و توسعهدهندهها برای نیازهای خودشون هیچ گاه به صحبت کردن علاقهای نداشتن و به صرف تایپ کردن مشکل حل شده، پس چرا باید وقتشونو روی کاری که نه نیازی بهش دارن، نه علاقهای تلف کنن؟
ملت، اونجا تاسف خورده بودن که چرا اینکار رو نمیکنن؟!؟ در حالی که تاسفی نداره، زندگی همینه! هیچ گربهای برا رضای خدا موش نمیگیره (یا برای سیر کردن شیکمش میگیره یا از اینکار لذت میبره)
اینجا افرادی هستن که میگن: «آقا ایرادی که خیلی از دوستای ما به لینوکس میگیرن و نمیاین طرفش همین نداشتن یک IM با پشتیبانی خوب از صدا و تصویره!» خوب در جواب این دوستان میگن: «خوب بهشون بگو نیان طرف لینوکس» اصلا میخوان بیان چیکار؟ صبر کنن تا یکی پیدا بشه که یا خودش به این نیاز داشته باشه، یا به هر دلیل دیگهای علاقه داشته باشه روش کار کنه.
پس بیایید انتظار زیادی نداشته باشیم، به هر حال اون توسعهدهندهها هم آدمن کارهای زیادی دارن، گاهی دیدم که افرادی اینجا پیدا میشن و میگن مثلا فلان کار که کاری نداره! فقط میخواد فلانش کنن!
بعد که میپرسی شما برنامهنویسی؟
میگه: نه.
- خوب پس از کجا میدونی کار به همون سادگی که فکر میکنیه؟!
نمونهاش همین مشکل Pidgin که گویا بعلت طراحی اولیهاش زمان و کار زیادی میبره انجامش، و خوب نمیصرفه روش وقت بزارن.
یه پیشنهاد به جامعهی کاربران Pidgin یا Kopet که نیاز به صدا و تصویر دارن به کلم زد:
یه صندوقی باز کنن، هر کس یه پولی کمک کنه، یه پول خوبی که شد، به تیم توسعه، یا یه نفر دیگه بدن تا این نیاز رو برآورده کنه!
.
چند تا توصیه به کاربران نرمافزارهای آزاد/متنباز:
اگر ایدهای دارین، شروع کنین، اگر کارتون خوب باشه و هدفتون خوب، دیگرانی پیدا میشن که کمک کنن، ولی احتمالش کمه! پس زیاد روش حساب نکنین! اینکه جایی اعلام کنی که من میخوام فلان چیزو بسازم، کی پایهاس؟ خوب معلومه که هیچکی! هر کسی گرفتاری خودشو داره. اول باید شروع کنی، بعد دیگران میان!
راههای زیادی برای کمک به برنامهای که استفاده میکنین بر حسب توانایی شما، وجود داره، حداقلش گزارش کردن خطاها، و کمک به رفعشون. و دادن پیشنهادهای خوب است.
——————————————————————
پ.ن. ۱: دوستانی خرده میگیرن، که این چه وضعیه، این طوری که تو میگی مردم رو از لینوکس و نرمافزارهای آزاد زده میکنی!
خوب به نظر من بهتره که از همون اول آدم این حقایق رو بدونه. تا اینکه بعدا دچار سرخوردگی بشه که چرا فلانی فلان کار رو نمیکنه برا ما؟!؟!
و البته که توسعهدهندهها بدشون نمیاد برنامهشون بهتر بشه، ولی باید دید به چه قیمتی! و اینکه آیا اون کار به هزینهاش میصرفه یا نه؟
پ.ن. ۲: بیشتر مطالب پست، توهمات من بودن، و ممکنه اشتباه باشن!



7 جواب تا اینجا
Farhadix // جولای 18, 2008 روی 12:24 ق.ظ |
این همه رو تایپ کردی؟!!! یا گفتی یکی برات تایپ کرده!
اگه مورد دومش برام پیدا بشه. اون موقع فکر کنم دیگه حرف هم نمیتونم بزنم!
—————————————-
مهرداد:
هان؟!؟!؟!؟!
کی مرده؟
دادم یکی برام تایپ کرده(ما به همه همینو گفتیم، سه شو بگیر)! شما به دل نگیر
افشین // جولای 18, 2008 روی 2:15 ق.ظ |
سلام.
خسته نباشید . من یک وب سایت با عنوان آموزش برنامه نویسی ساختم که به زودی آغاز به کار می کند . اگر مایل به تبادل لینک هستید لینک من را با نام وب سایت آموزش برنامه نویسی لینک کنید و به وب سایت من بروید و لینک خود را در قسمت پیوندها اضافه کنید.
با تشکر
——————————————-
مهرداد:
متاسفانه ما آدمای رادیکالی هستیم، مخصوصا در زمینهی لینک دادن تو وبلاگ!
و دیگه اینکه از این سیستمهای تبادل لینک هم بدمون میاد، هرکی دوست داره لینک بده، ما هم به هر کی دوست داریم لینک میدیم، هیچ توقعی هم نداریم.
جواد // جولای 18, 2008 روی 6:39 ق.ظ |
مي گم مهراد , مجيد رو كشتي !؟ چرا ديگه اون هيچي پست نمي كنه ؟ از وقتي وبلاگت رفته تو planet اكتيو شدي d: هي تاپيك مي زني . اگه مي دونستيم اينجوري مي شه زودتر درخواست مي داديم بفرستنت تو planet .
در مورد برنامه نويسي تو لينوكس هم بايد بگم اول آدم بايد بره تو ويندوز خوب يه زبوني مثل c# يا جاوا رو ياد بگيره بعد يك كار پيدا كنه اخر سر كه پول دراورد بره دنبال عشقش و برنامه نويسي در لينوكس ( دوران پيري !! ) .
———————————————
مهرداد:
مجید رفته سفر! امروز و فردا میاد!
در مورد برنامهنویسی هم به اون وحشتناکی که گفتی نیست، شایدم من تصمیم دارم اول پیر شم! بعد زندگی کنم!
سجاد موسوی // جولای 18, 2008 روی 10:02 ق.ظ |
مهرداد حس می کنم تو خیلی از موارد مسائل شخصی و غیر حرفه ای رو مطرح کردی..
مسائلی که بهتره بهت بگم مهندسی نبودند…
گاهی اوقات مسائلی خیلی خیلی مهمتر واسه شروع یک پروژه ی نرم افزاری و یا توسعش وجود داره.
—————————————————
مهرداد:
خوب، پر بیراه هم نفرمودی! منم ادعا نکردم مطالب حرفهای یا مهندسیه! گفتم که توهمات خودمه!
ما که هنوز نه مهندسیمون کامل شده، نه حرفهای هستیم، سجاد جان!
ممنون میشم موردهای دیگهای که سراغ داری رو هم بگی!
محمد امين احسن مقدم // جولای 19, 2008 روی 1:04 ق.ظ |
” «خوب بهشون بگو نیان طرف لینوکس» اصلا میخوان بیان چیکار؟ ” بسيار جمله ي زيبايي رو گفتي !!! ملت مي خوان بيان لينوكس كار كنن كه چي بشه ، بزار يكمي(چند صد دلار) پول خرج كنن و با ويندوز حال كنن …
يك ديوانه –» گنو/ هرد(ي) يا گنو/لينوكس(ي) !!!!!!!!
Mansour // آگوست 10, 2008 روی 3:05 ق.ظ |
مورد 4و 5 خیلی به من میخوره . ولی من پروژه رو سورس باز توزیع نکردم . در کل یه رابط با JDK درست مدم که ملت سریع تر کار با جاوا رو یاد بگیرن .به هر صورت خوشحالم که با وبلاگ شما آشنا شدم ، لیست می کنم ، انشالله بیشتر با هم ارتباط برقرار کنیم .
———————————————
مهرداد:
خوب شما هم ایشالا سورس برنامه رو باز میکنی!
اولین فایدهاش میتونه پیشرفت بهتره برنامهات باشه! شاید باور نکنی، ولی من تجربه کردم این رو.
سید علی حسینی // آگوست 21, 2008 روی 10:44 ب.ظ |
یک ساعت نشستم خوندمش(الان خیلی هم خوابم میاد) اخز می بینم اصلا فایده نداشت
خوب دیگه زندگی همینه، گاهی خوبه گاهی چرنده
اخه تو که زحمت تایپ رو می کشی چرت و پرت چرا می نویسی
———————————-
مهرداد: