PDA

View Full Version : سوال: شروع برای یادگیری یک پروژه Open Source



mosi_asgari
شنبه 30 آبان 1388, 13:49 عصر
سلام دوستان
من می خواهم یک پروژه Open Source رو برای یادگیری شروع کنم تا به تجربه برنامه نویسیم اضافه بشه.
فرض رو بر این بزارید که از لحاظ برنامه نویسی مشکلی ندارم. می خوام یک پروژه Open Source که خوب Document شده باشه ، قابل فهم باشه ، اصول مهندسی نرم افزار در اون استفاده شده باشه رو شورع به استفاده و یادگیری کنم. شما چی رو پیشنهاد میدین.

ممنون از پاسخ شما

Mamdos
دوشنبه 02 آذر 1388, 00:04 صبح
زبونش مهم نیست؟
موضوعش چطور؟ مثلاً نرم‌افزار سیستمی باشه یا سازمانی یا رومیزی یا تحت وب یا بازی یا علمی-مهندسی یا ...
توی سورس‌فورج (http://sourceforge.net/softwaremap/trove_list.php?form_cat=18) جستجو کردید؟ یه نگاهی بیندازید بد نیست. به خصوص به موضوعات مختلف که سمت چپ صفحه دسته‌بندی کرده.
بسیاری از پروژه‌های معروف/موفق ویژگی‌هایی رو که گفتید احتمالاً دارند. البته من خودم از نظر فنی با پروژه‌های کمی آشنا هستم (با بعضی از ERPها)، مثلاً بین ERPها می‌تونم OpenERP (http://www.openerp.com/) رو پیشنهاد کنم (با پایتون نوشته شده)، البته خیلی نرم‌افزار بزرگیه، که شاید معیار «قابل فهم» بودنش کم باشه (البته در عوض تجربه‌ی کم‌نظیریه برای کار با سامانه‌های سازمانی بزرگ). در عین حال مستندات خوبی داره و مهندسی‌ساز هم هست.
اگر زبان برنامه‌نویسی و حوزه‌ی مورد علاقه‌تون رو مشخص کنید شاید راحت‌تر بشه کمک کرد.

mosi_asgari
دوشنبه 02 آذر 1388, 19:27 عصر
قبل از هر چیز از پاسخ شما متشکرم.

بله من به SourceForge سر زدم. من بیشتر دوست دارم روی یک نرم افزار عمومی کار کنم. مثلا خیلی دوست دارم بدونم که ساختار نرم افزار های word processor چگونه است؟ اگر خودم بخوام یک زمانی همچین نرم افزاری را از ابتدا شروع به طراحی و پیاده سازی کنم ( منظورم حالا یک نفره نیست شاید تیمی ) باید از کجا شروع کنم؟ چه جور کلاس هایی باید براش طراحی کنم؟ ساختار کلاس هام ، ارتباط بین اون ها باید چه جوری باشه؟

یا یکم ساده تر احتمالا با کنترل Rich Text Box ماکروسافت آشنا هستید.چطور می شه همچین کنترلی رو از پایه ایجاد کرد؟ ( می دونم چرخ رو دوباره نباید اختراع کرد فقط برای یادگیری می خوام همچین کاری بکنم :خجالت: :متفکر: )

زیاد پرحرفی نکنم . کلا نرم افزار متن بازی که مباحث oop اون خوب رعایت شده باشه و document هم شده باشه. من با زبان های c++,java,c# ,vb آشنا هستم.

Mamdos
سه شنبه 03 آذر 1388, 00:08 صبح
راستشو بخواین، فقط کسی می‌تونه در مورد خوب نوشته شدن کد یک نرم‌افزار نظر بده که خودش یک تحقیق حسابی در موردش کرده باشه. اما یه قاعده‌ی کلی وجود داره: به طور کلی پروژه‌هایی که تعداد برنامه‌نویس بیشتری دارند احتمالاً بهتر از مهندسی نرم‌افزار استفاده کرده‌ن و بهتر مستند کرده‌ن، چون این چیزها برای کار گروهی فوق‌العاده لازمه. بنابراین باز هم پیشنهاد من اینه که یکی دو ساعتی در سورس‌فورج، Categoryهای مختلف بگردید و از امکان فیلتر (درست بالای لیست (http://sourceforge.net/softwaremap/trove_list.php?form_cat=18)) و جستجو و جستجوی پیشرفته (پایین صفحه (http://sourceforge.net/softwaremap/trove_list.php?form_cat=18)) و مرتب‌سازی برحسب رتبه و تعداد بارگیری و میزان فعالیت استفاده کنید و صفحه‌ی پروژه‌هایی رو که به نظرتون جالب میان ببینید. البته خیلی از نرم‌افزارهای متن‌باز خوب مثل مجموعه نرم‌افزارهای موزیلا و اکلیپس و نرم‌افزارهایی که در وب‌گاه‌های دیگر فهرست شده‌اند در سورس‌فورج نیستند (freshmeat.net را هم نگاه کنید بد نیست).
برای تخمین این که کدوم پروژه‌ها گروهی‌تر هستند (و بنابراین احتمالاً برای یادگیری بهترند) می‌تونید به معیارهای فعالیت (Activity) و همچنین تعداد توسعه‌دهندگان (در صفحه‌ی هر پروژه، درست زیر اسم نرم‌افزار نوشته by و اسم توسعه‌دهندگانش رو آورده) توجه کنید.
در مورد نرم‌افزار پردازش متن هم که خب، اوپن‌آفیس (http://www.openoffice.org/) و اَبی‌وُرد (http://www.abisource.com/) معروف‌ترین‌ها هستند. در موضوع Word Processor (http://sourceforge.net/softwaremap/trove_list.php?form_cat=70) هم می‌تونید سورس‌فورج رو نگاه کنید.
تعدادی پروژه هم هستند که به داشتن مستندات خوب و زیاد معروف هستند. مثلاً PostgreSQL تقریباً گل سرسبدشونه. اینجا (http://openacs.org/forums/message-view?message_id=348922) هم نوشته که JBoss و OpenNMS مستندات خوبی دارند. شاید جستجو در وب (http://www.google.com/search?hl=en&num=100&q="well-documented+open+source") هم کمک کنه.
ضمناً در صفحات هر پروژه احتمالاً پیوندهایی با مضمون Contribute یا Developing وجود داره که برای برنامه‌نویسی اون پروژه‌ها راهنمایی می‌کنند. پروژه‌هایی که از این پیوندها دارند احتمالاً برای یادگیری بهتر هستند.

ببخشید اگر نتونستم زیاد کمک کنم، فکر کنم چیزی که خواستید پروژه‌های خیلی زیادی رو شامل می‌شه و من هم تنها تجربه‌ی جدی‌ام با ERPهاست. اما اگر یک پیشنهاد مشخص می‌خواید، با توجه به این که گفتید به نرم‌افزارهای عمومی علاقه دارید، من به ترتیب پروژه‌های موزیلا (به خصوص فایرفاکس) (https://developer.mozilla.org/En/Participating_in_the_Mozilla_project) و اوپن‌آفیس (http://contributing.openoffice.org/programming.html) رو پیشنهاد می‌کنم چون پروژه‌های خیلی معروفی هستند، به طور جدی و حرفه‌ای توسط میلیون‌ها نفر استفاده می‌شوند و احتمال می‌دم بیشترین مستندات رو داشته باشند. هسته‌ی هر دو با C++‎ نوشته شده. در عین حال چون این‌ها نرم‌افزارهای نسبتاً بزرگی هستند، احتمالاً پیچیدگی بیشتری نسبت به نرم‌افزارهای کوچک‌تر دارند و یادگیری‌شون شاید سخت باشه (مثلاً شاید فقط ده بیست کلاس برای یک واژه‌پرداز، بنیادی محسوب می‌شوند و بقیه‌ی صدها کلاسی که در اوپن‌آفیس می‌بینید کلاس‌های حاشیه‌ای و خاص‌منظوره هستند!). این پیشنهادها خیلی خام هستند و اکیداً پیشنهاد می‌کنم خودتون دنبال یه نرم‌افزار مناسب بگردید و به این گزینه‌ها اکتفا نکنید.

mosi_asgari
چهارشنبه 04 آذر 1388, 21:50 عصر
سلام ، ممنون از راهنمایی و کمک شما

freshmeat.net سایت خیلی جالبی بود من از این سایت خبر نداشتم. راستشو بخواین من قبلا خواستم Mozilla را دانلود کنم و اجراش کنم اما انقدر مراحل build این نرم افزار سنگین بوده که منصرف شدم.

من آخر سر JEdit رو دانلود کردم که یک نرم افزار TextEditor است که با Java نوشته شده ، فکر کردم خیلی راحت میشه با فرمان javac کامپایل و اجرا کنم اما اشتباه فکر می کردم و هنوز نتونستم کامپایلش کنم.
تو سایت www.jedit.org هم نتونستم دستورالعملی برای کامپایل کردن پیدا کنم. حجم source code این نرم افزار کمه ، در حد 2 MB هستش. اگه کسی جاوا بلده دانلود کنه ببینه چطور می شه کامپایلش کنیم.

Mamdos
پنج شنبه 05 آذر 1388, 13:07 عصر
سلام، خواهش می‌کنم. در مورد jEdit هم فکر می‌کنم انتخاب خوبی کردید!
معمولاً پروژه‌های واقعی رو با یک ابزار ساخت (build) مثل make (انتخاب رایج C++ و Cکارها در لینوکس) یا ant (انتخاب رایج جاواکارها) کامپایل و لینک و ... می‌کنند تا آماده‌ی اجرا شود.
jEdit هم باید با ant کامپایل شود. ant معمولاً به طور پیش‌فرض در لینوکس‌ها وجود دارد ولی برای ویندوز باید دانلودش کنید (ant.apache.org (http://ant.apache.org/)) یا از IDEهای جاوا مثل Netbeans یا Eclipse استفاده کنید که ant را تعبیه شده دارند.
اگر ant داشته باشید و در PATH سیستم‌تان باشد، احتمالاً کافیه در خط فرمان توی پوشه‌ی jEdit بروید و تایپ کنید ant و خودش کامپایل می‌کند. بعد هم احتمالاً یک فایل jar می‌سازد که باید با دستور java اجرایش کنید. توضیحات کامل‌تر در فایل jEdit/README.SRC.txt هست.

mosi_asgari
پنج شنبه 05 آذر 1388, 19:52 عصر
سلام
بله فکر کنم که باید با ant کامپایل بشه چون فایل به نام build.xml داره.دارم الان NetBeans رو دانلود می کنم.

بازم سوال داشتم ازتون می پرسم. بازم متشکرم جدا راهنمایی هاتون خیلی بدردم خورد.