PDA

View Full Version : کدهای خروجی از JIT کجا ذخیره میشن؟



eshpilen
شنبه 25 تیر 1390, 10:07 صبح
میگم این کدهای Native که توسط فرایند JIT تولید میشن و ظاهرا دفه های بعدی هم از همونا استفاده میشه، روی هارد چطور و کجا ذخیره میشن؟ میشه پیداشون کرد؟

Programmer 1
شنبه 25 تیر 1390, 10:20 صبح
سلام ، حالا من زیاد حرفه ای نیستم ولی طبق اطلاعاتی که دارم پاسخ میدم :

خروجی ماژول JIT که کد IL هستش در شاخه Debug/bin پروژه ذخیره میشه (در قالب یک اسمبلی EXE یا DLL در واقع همون برنامه کامپایل شده ما) ، علتش هم اینه که برنامه IL Diassembler فقط کد IL رو می پذیره و کد داخلیش رو که همون IL هست رو به ما نشون میده ، حالا اگه میخواهید بفهمید یک EXE حاوی کد IL هستش یا نه به عبارتی آیا تحت دات نت نوشته شده یا نه؟ یکی از روش های خوبش همین برنامه IL Diassembler هستش ، EXE یا DLL مورد نظر رو بکشید تو این برنامه اگر خطا نداد و کد IL رو نشون داد که دات نتیه ، اگر هم خطا داد (معمولا خطای عدم وجود هدر که تو همه اسمبلی های دات نتی وجود داره) یعنی این فایل تحت دات نت تولید نشده و یا مدیریت نشده است .

با تشکر/.

eshpilen
شنبه 25 تیر 1390, 10:31 صبح
IL که کد Native نیست.
تاجاییکه بنده از منابع خوندم، خروجی JIT کد Native هست (دستورهای زبان ماشین).
حالا درمورد برنامه های دسکتاپ نمیدونم، لابد همون فایلهایی که ویژوال استودیو خروجی میده حاصل JIT و محتوی کد Native هستن. چون بالاخره برای اجرا باید JIT صورت بگیره (در اینصورت این سوال پیش میاد که آیا فایلهای محتوی IL اونها رو هم میشه جایی روی هارد پیدا کرد یا نه).
ولی مثلا درمورد برنامه های ASP.NET نمیدونم کد خروجی JIT کجا ذخیره میشه که دفهء بعد نیازی به JIT مجدد نباشه.
راستی dll های ASP.NET که ویژوال استودیو میسازه محتوی IL هستن یا کد Native؟ مال برنامه های دسکتاپ چطور؟
خودمم گیج شدم. سرفرصت سعی میکنم تست و بررسی کنم ببینم چیزی دستگیرم میشه یا نه.

Programmer 1
شنبه 25 تیر 1390, 12:42 عصر
بله حواسم نبود من اشتباه کردم ببخشید ،
خروجی کامپایلرهای تحت دات نت مثل CSC.Exe کد MSIL هستش و JIT اونها رو به کد محلی (Native) تبدیل میکنه ،


راستی dll های ASP.NET که ویژوال استودیو میسازه محتوی IL هستن یا کد Native؟ مال برنامه های دسکتاپ چطور؟
Asp.NET رو که کار نکردم ترجیح میدم جواب ندم ولی در مورد برنامه های دسکتاپ مطمئن هستم که کد کامپایل شده توسط کامپایلر همون فایل EXE و یا DLL ای هستش که در مسیر Debug/bin پروژه ایجاد میشه و این فایل که خودش یک ماژول مدیریت شده هستش (در ادبیات دات نت به این فایلها اسمبلی گفته میشه) علاوه بر هدر و متادیتا شامل کد IL هم هست ، البته این در مورد کدهایی هستش که به صورت مدیریت شده میباشند و باز هم در مورد برنامه های مدیریت نشده که توسط VC++ قابل نوشتن هستن سکوت اختیار میکنم .
البته با توجه به فلسفه دات نت فکر کنم باید خروجی Asp.net و یا هر کامپایلر مطیع دیگری هم اسمبلی هایی باشه که حاوی کدهای IL هستند .


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

Programmer 1
شنبه 25 تیر 1390, 12:52 عصر
توصیه میکنم اگه می خواهید مفاهیم چارچوب دات نت رو خوب بفهمید حتما این کتاب رو مطالعه کنید : Framework Essentials انتشارات Orilly
چون عجله ای نوشتم نتونستم لیتک دانلودش رو بزارم .
خودم علاقه زیادی داشتم که این کتاب رو ترجمه کنم ولی با این انگلیسی ضعیفم کم آوردم ، در هر حال با یک نگاه سرسری کتاب جالبی بود ، جواب خیلی از سوالاتون رو می تونید در این کتاب پیدا کتید.

eshpilen
شنبه 25 تیر 1390, 13:24 عصر
در مورد برنامه های دسکتاپ مطمئن هستم که کد کامپایل شده توسط کامپایلر همون فایل EXE و یا DLL ای هستش که در مسیر Debug/bin پروژه ایجاد میشه و این فایل که خودش یک ماژول مدیریت شده هستش (در ادبیات دات نت به این فایلها اسمبلی گفته میشه) علاوه بر هدر و متادیتا شامل کد IL هم هست
بنده با ویرایشگر متن محتویات فایل exe رو نگاه کردم، ولی کد IL رو نتونستم تشخیص بدم. شاید هم به یه فرم خاصی اون رو درج میکنه (مثل کامپایل به بایت کد) که خوانا نیست.

Programmer 1
یک شنبه 26 تیر 1390, 00:26 صبح
محتوای اسمبلی های دات نت همونطوری که گفتید به فرمت خاصی هستش که با ویرایشگر معمولی تشخیص داده نمیشه ، البته برای مشاهده کد IL ، اسمبلی مورد نظر رو باید با برنامه IL Diassembler باز کرد که در هنگام نصب ویژال استودیو معمولا این برنامه هم نصب میشه و راحت کد IL رو نشون میده .

eshpilen
یک شنبه 26 تیر 1390, 09:56 صبح
پس این کدهای Native رو کجا میشه گیر آورد؟ بالاخره یه جایی ذخیره میشن که نیاز به کامپایل مجدد نباشه.
بعدش میگم این مشکلی که خیلی ها ازش شکایت دارن و میگن میشه برنامه های دات نت رو براحتی disassemble کرد رو نمیشه با استفادهء مستقیم از کدهای Native ای که JIT تولید میکنه رفع کرد؟ یعنی بجای اسمبلی های حاوی IL بیایم و خروجی باینری JIT رو توزیع کنیم.
میدونستید پروژهء Mono مشابه چنین کاری رو انجام داده؟:

Full Static Compilation: this mode is only supported on a handful of platforms and takes the Ahead-of-Time compilation process one step further and generates all the trampolines, wrappers (http://en.wikipedia.org/wiki/Wrapper_function) and proxies (http://en.wikipedia.org/wiki/Proxy_pattern) that are required into a static file that can be statically linked into a program and completely eliminates the need for a JIT at runtime. This is used on Apple's iOS (http://en.wikipedia.org/wiki/IOS_%28Apple%29), Sony's PlayStation 3 (http://en.wikipedia.org/wiki/PlayStation_3) and Microsoft's XBox 360 (http://en.wikipedia.org/wiki/XBox_360) operating systems


منبع: http://en.wikipedia.org/wiki/Mono_%28software%29

Programmer 1
یک شنبه 26 تیر 1390, 10:42 صبح
بعدش میگم این مشکلی که خیلی ها ازش شکایت دارن و میگن میشه برنامه های دات نت رو براحتی disassemble کرد رو نمیشه با استفادهء مستقیم از کدهای Native ای که JIT تولید میکنه رفع کرد؟ یعنی بجای اسمبلی های حاوی IL بیایم و خروجی باینری JIT رو توزیع کنیم.

خوب این که دوباره میشه همون کاری که قبل از پیدایش دات نت انجام میشد :لبخندساده: ، کلا دات نت میخواد برنامه ای که ما طراحی کردیم صرفنظر از بستری که در اون نصب میشه قابل اجرا باشه (قابلیت حمل) ، یعنی وقتی بنده یک برنامه نوشتم دیگه دغدغه اینکه آیا تو لینوکس ، ورژن های مختلف ویندوز و ... اجرا میشه یا نه رو ندارم ، کامپایلرهای مطیع دات نت برنامه ای که به من تحویل میدن یک اسمبلی است که میتونم در هر سیستمی که دات نت فریم ورک در اون نصب شده اجراش کنم که کل این کار میشه وظیفه JIT یعنی تولید کد محلی برای بستر فعلی که نرم افزار قراره اونجا اجرا بشه ، طبیعیه که کد محلی برنامه های ویندوزی با لینوکس فرق میکنه و نباید تا قبل از تعیین نشدن بستر اجرایی، کد Native تولید بشه و این همون کاریه که دات نت انجام میده .


میدونستید پروژهء Mono مشابه چنین کاری رو انجام داده؟
در مورد مونو اطلاعات زیادی ندارم چون کلا با روش توسعه لینوکس مخالفم! ، ولی در کل فکر نکنم منظورش این بوده باشه ، چون این با فلسفه دات نت که قابلیت حمل برنامه است تناقض داره و مگه اینکه جزئیاتی داشته باشه که شما اشاره نکرده باشین .

eshpilen
یک شنبه 26 تیر 1390, 19:09 عصر
درمورد مستقل از پلتفرم بودن دات نت و تضاد اون با ارائهء برنامه بصورت کد Native مقداری حق با شماست.
ولی بهرحال مستقل از پلتفرم بودن دات نت فقط یکی از ویژگیهای اونه. و ویژگی ای هم نیست که بگیم در عمل کاملا محقق شده و مهمترین ویژگی هست.
از طرف دیگه با استفاده از فایل اجرایی Native این خاصیت بطور کلی از بین نمیره، چون هروقت برای هر پلتفرمی که بخوایم میتونیم از روی همون کد منبع، فایل اجرایی لازم رو تولید کنیم (یا به همون صورت از IL استفاده کنیم).
بعضی فریمورک های مستقل از پلتفرم دیگه هم هستن، مثل Qt که تحت سی++ هست، که به همین شکل کار میکنن، یعنی خروجی اونها فایل اجرایی Native هست، اما بازم بهشون Cross-Platform گفته میشه و مطمئنا اینطور هم هست. فرمت فایل خروجی و روش استفاده میتونه چند شکل منجمله فایل اجرایی Native رو داشته باشه.
برای اینکه چیزی مستقل از پلتفرم باشه، نیازی نیست که حتما فایل اجرایی تولید شده هم مستقل از پلتفرم باشه، بلکه شرط لازم این هست که یک کدمنبع بتونه برای چند پلتفرم استفاده بشه.
در نهایت اگر دقت کنیم بیشتر افراد بخاطر مستقل از پلتفرم بودن دات نت سراغش نمیرن. بلکه بخاطر فناوریهای جدید و سطح بالا و امکانات خوبی که فراهم کرده هم هست.
هرچند مستقل از پلتفرم بودن اون که درواقع در اساس طراحی اون درنظر گرفته شده و به فرمت فایل اجرایی نهایی وابسته نیست، یک امتیاز برای برنامه نویسان و کاربران نهایی و نیز عامل پیاده سازی سریعتر و راحتتر خود دات نت توسط توسعه دهندگان این فریمورک بر روی پلتفرم های مختلف هست.


در مورد مونو اطلاعات زیادی ندارم چون کلا با روش توسعه لینوکس مخالفم! ، ولی در کل فکر نکنم منظورش این بوده باشه ، چون این با فلسفه دات نت که قابلیت حمل برنامه است تناقض داره و مگه اینکه جزئیاتی داشته باشه که شما اشاره نکرده باشین . فکر کنم خوندم که بخاطر بعضی محدودیت های فنی بوده. البته احتمالا این محدودیت ها قانونی هم بوده باشن.
حداقل برای iPhone به چنین چیزی اشاره شده:
This is necessary because the iPhone kernel prevents just-in-time compilers (http://en.wikipedia.org/wiki/Just-in-time_compilation) from executing on the device.

در پایان باید بگم که در کل روش فایل اجرایی محتوی IL مسلما از نظر سادگی و یک دست بودن و راحتی انتقال به هر پلتفرمی که بخوایم بهتر هست (بخصوص از دید کاربر نهایی)، اما اینطوری نیست که بگیم بدون این حالت خاصیت مستقل از پلتفرم بودن دات نت از بین میره.

eshpilen
یک شنبه 26 تیر 1390, 19:30 عصر
کلا با روش توسعه لینوکس مخالفم!
چه تصوری از روش توسعهء اون دارید و چرا باهاش مخالفید؟

Programmer 1
یک شنبه 26 تیر 1390, 23:53 عصر
مستقل از پلتفرم بودن دات نت فقط یکی از ویژگیهای اونه. و ویژگی ای هم نیست که بگیم در عمل کاملا محقق شده و مهمترین ویژگی هست.

منظورتون از کاملا محقق نشدن اینه که فریم ورکش برای مثلا فلان سیستم عامل وجود نداره؟ یا یه چیز دیگه است ؟



از طرف دیگه با استفاده از فایل اجرایی Native این خاصیت بطور کلی از بین نمیره، چون هروقت برای هر پلتفرمی که بخوایم میتونیم از روی همون کد منبع، فایل اجرایی لازم رو تولید کنیم

آیا منظور شما اینه که مثلا وقتی بنده برنامه ای رو تحت دات نت نوشتم به جای خروجی IL ، کامپایلر چندین خروجی Native به انتخاب خودم ارائه بده تا هر نسخه ای رو بتونم به صورت جدا ارائه بدم ، خوب این که کار رو شلوغ تر می کنه ، مثلا فرض کنید همین برنامه رو بخواهیداز طریق یک سایت Publish کنید خوب حساسیت های بیشتری میطلبه ، به نظر من نباید Diassemble شدن یک برنامه دات نتی که کدش IL هست و میتونیم توسط Packer هایی مثل dotfuscator امنیتش رو بالاتر ببریم باعث بشه از مزایای دیگه چشمپوشی کنیم ، چون اگه قرار باشه کد ریسورس بشه کد Native هم ریسورس میشه و فکر نکنم پیچیدگی ریسورس کردنش کمتر از یک کد IL که شلوغش کردیم باشه! .



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

منظور از این گفتتون رو خوب نمی فهمم ، خوب این طبیعیه که یک کد منبع میتونه برای چند پلتفرم کامپایل بشه و برای این کار فقط نیاز به کامپایلر مخصوص اون پلتفرم داریم تا سورس رو بهش بدیم و خروجی مورد نظر رو ارئه بده ، شما یه مثال بیارید که نتونیم یک کد منبع رو برای چند پلتفرم استفاده کنیم

Programmer 1
دوشنبه 27 تیر 1390, 00:12 صبح
چه تصوری از روش توسعهء اون دارید و چرا باهاش مخالفید؟تصورم این هست که توسعه بدون مدیریت واحد ، کار رو پیچیده میکنه و کیفیت نهایی کار پایین می آد ، حالا در اینباره بحث زیاده ولی من ترجیح میدم چند تا مثال عیان بزنم :

انصافا با لینوکس کار کنید ببینید چقدر آدم وقتش میره رو چیزهایی که نباید بره ، از ناخوانایی دستورات و اسکریپت هاش بگیر تا روش نصب برنامه هاش ، آیا واقعا کار با لینوکس راحت تره (منظورم ساده ترین توزیعشه Ubunta !!) یا ویندوز؟ لینوکس برای کسی خوبه که عاشق پیچیدگی باشه نه طالب سادگی! ، برای آدمی که بره تا عمر داره رو سوراخ سنبه هاش وقت صرف کنه

SVN رو اگه نصب کرده باشید واقعا یه جاهایی خنده داره مراحلش :لبخندساده: ، مثلا شما برید SVN رو با مدیریت پروژه TRAC بکپارچه کنید ببینید باید چه پیشنیازهایی رو نصب کنید و به چه نحوی نصب کنید!! :متعجب: ، روش کار با ابزارها هم بماند! ، همین رو با نصب یک برنامه تحت ویندوز مقایسه کنید ، یا برید GIT نتیجه کار آقای لینوس تروالدز(سردمدار دنیای Open Source !) رو برای کنترل سورس استفاده کنید ، بعضی پیچیدگی هاش قابل تقدریره! چون واقعا من نمیتونم یک برنامه رو اینقدر پییچیدش کنم!

خوب چرا باید سیستم عاملی رو توسعه داد که اینقدر کار رو برای من پیچیده کرده و دلیلش هم عدم مدیریت واحد هستش البته این گفته ها دلیل بر این نیست که من تمایلم به ویندوز هست ویندوز هم با این همه تبلیغات و بزرگنمایی مشکلات فراوانی داره ولی بالاخره باید بین بد و بدتر یکی رو انتخاب کرد! . :متفکر:

eshpilen
دوشنبه 27 تیر 1390, 08:37 صبح
منظورتون از کاملا محقق نشدن اینه که فریم ورکش برای مثلا فلان سیستم عامل وجود نداره؟ یا یه چیز دیگه است ؟

معمولا برای اینکه یه چیزی بیشترین شانس رو برای گسترش و پذیرش بصورت Cross-Platform داشته باشه، باید اون رو تحت شرایط نرم افزار آزاد/بازمتن منتشر کرد.
درحالیکه پیاده سازی میکروسافت که به دلایل مختلف پیاده سازی اصلی و مرجع دات نت هست با شرایط بازمتن توافق نداره. در ضمن میکروسافت یک شرکت انحصارگر هست که دشمنی و نقشه های شوم خودش رو در ارتباط با نرم افزارهای آزاد و بازمتن در گذشته اعلام کرده یا افشا شدن. به همین جهت و به دلایل ابهامات و محدودیت های قانونی ای که در مورد پیاده سازی های آزاد دات نت وجود داره، و ریچارد استالمن هم به همین خاطر توصیه کرده به دات نت اتکا نشه، عملا با اینکه دات نت از نظر فنی برای Cross-Platform بودن طراحی شده و در ظاهر میکروسافت از نظر سیاسی و قانونی این راه رو برای دیگران همواره کرده، اما عملا نمیتونه با سرعت و کیفیت حداکثری بخصوص در محیطهایی مثل GNU/Linux که اساسا بازمتن هستن گسترش پیدا کنه. و میشه گفت همیشه تحت کنترل نهایی میکروسافت هست.
ضمنا پروژهء Mono هم هنوز نقصهای متعددی داره و از نظر قانونی هم وضعیتش مبهم هست.
همهء بخشهای دات نت هم تحت قول میکروسافت برای عدم اعلام و پیگیری حقوق انحصار فکری نیستن. مثلا بخشهایی که مربوط به ویندوز میشن تحت این حفاظت هرچند مبهم و نصفه و نیمه هم نیستن. و اینا چیز کمی نیست. یعنی شما عملا Cross-Platform کامل رو درمورد دات نت نمیتونید داشته باشید، مگر اینکه میکروسافت خودش نسخه ای از دات نت رو برای پلتفرم دیگری هم توسعه بده، که بازم بعیده اون رو بازمتن کنه. بنابراین اساسا دات نت غیرمیکروسافتی با مشکل مواجه هست، چه برسه برای پلتفرمهایی مثل گنو/لینوکس.


چون اگه قرار باشه کد ریسورس بشه کد Native هم ریسورس میشه و فکر نکنم پیچیدگی ریسورس کردنش کمتر از یک کد IL که شلوغش کردیم باشه! .مطمئنید؟


منظور از این گفتتون رو خوب نمی فهمم ، خوب این طبیعیه که یک کد منبع میتونه برای چند پلتفرم کامپایل بشه و برای این کار فقط نیاز به کامپایلر مخصوص اون پلتفرم داریم تا سورس رو بهش بدیم و خروجی مورد نظر رو ارئه بده ، شما یه مثال بیارید که نتونیم یک کد منبع رو برای چند پلتفرم استفاده کنیمنه قربونت هر کد منبعی رو نمیشه صرفا با تعویض کامپایلر برای پلتفرم دیگری هم استفاده کرد. مگر کدهای منبع برنامه های ساده و کوتاه یا خیلی محدود که تنها از امکانات پایه ای و مشترک و استاندارد یک زبان استفاده کنن. تازه اینم نیاز به آگاهی و دقت زیاد برنامه نویس داره.
مثلا Qt برای چی بوجود آمده و چرا بهش میگن Cross-Platform؟ چرا سی++ به تنهایی این امکان Cross- Platform بودن رو تامین نمیکنه؟ دلایلش مشخص هست. هزار و یک دلیل داره. بطور مثال کتابخانه های GUI لینوکس، توابع مربوط به Thread، توابع پیشرفته مربوط به سیستم فایل، احتمالا اینترفیس و توابع برنامه نویسی شبکه، IPC (http://en.wikipedia.org/wiki/Inter-process_communication) و خیلی چیزهای دیگه هست که با مال ویندوز فرق میکنن و در ویندوز نیستن یا اینترفیس دیگری دارن و غیره.
ضمنا هر محیط و کامپایلر یکسری اکستنشن ها و کتابخانه های اختصاصی خودش رو داره که لزوما روی پلتفرم/کامپایلر دیگری وجود ندارن یا به اون شکل یکسان نیستن که بتونیم دقیقا یک کد منبع رو برای هردو بکار ببریم. حتی بعضی کتابخانه ها که کاربران فکر میکنن استاندارد هستن درواقع استاندارد نیستن. بطور مثال conio.h که در برنامه نویسی سی روی ویندوز خیلی متداول و پایه ای محسوب میشه درواقع استاندارد نیست و روی پلتفرم گنو/لینوکس هم وجود نداره.
ضمنا سی++ خودش یک زبان Minimal هست و خیلی چیزها رو به پیاده سازی ها یا درواقع استفاده از کتابخانه های خارجی موکول کرده. اگر شما فقط از کتابخانه های استاندارد سی++ استفاده کنید، برنامهء شما میتونه مستقل از پلتفرم باشه، تازه اونم اکثرا به شرط و شروط و با آگاهی و دقت کافی برنامه نویس.
یه مسائلی حتی مثل Endianness (http://www.google.com/url?sa=t&source=web&cd=1&ved=0CB0QFjAA&url=http%3A%2F%2Fen.wikipedia.org%2Fwiki%2FEndiann ess&rct=j&q=Endianess%20&ei=9bMjTpm4Mc-XOvKNyfEO&usg=AFQjCNEcYWBropgp-Eoe84G6njx-XOfysg&cad=rja) هم در مستقل از پلتفرم بودن مطرح هستن. چیدمان حافظه و غیره. مثلا در یک سیستمی بایت بالا و پایین یک متغییر برعکس ترتیب سیستم دیگر ذخیره میشه و این در خیلی برنامه ها عملا بنوعی مورد استفاده قرار گرفته و بنابراین به مشکل جدی برمیخوره. اینا رو وقتی عملا کار کنید متوجه میشد و موارد نسبتا پیشرفته تری هستن. حتی فایلهای دیتایی که برنامهء شما ایجاد میکنه ممکنه در سیستم عامل دیگه ای قابل استفاده نباشه. Qt برای اینطور موارد امکانات داره و طوری محیط برنامه نویس رو مهیا میکنه که نیازی نداشته باشید نگران این مسائل باشید؛ ولی حتی موقع استفاده از Qt هم باید از امکاناتش و دلایل وجودی اونها اطلاع کافی داشته باشید تا بتونید برنامه رو تا حداکثر ممکن مستقل از پلتفرم بار بیارید. ضمنا اکثرا کتابخانه ها و فریمورک های مستقل از پلتفرم امکانات وابسته به پلتفرم و مخصوص هر سیستم عاملی رو هم دارن که اگر برنامه نویس از اونها استفاده کنه برنامش دیگه مستقل از پلتفرم نمیشه.
نوشتن برنامه های بزرگ و پیچیدهء مستقل از پلتفرم واقعا پیچیده تر و سخت تر از این حرفهاست. بخاطر همین زبانها و فریمورک های مستقل از پلتفرم بوجود آمدن و اینقدر محبوب هستن.
این مواردی که گفتم فقط بخشی از موارد بود که بنده میدونستم و حضور ذهن داشتم.

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

eshpilen
دوشنبه 27 تیر 1390, 09:08 صبح
تصورم این هست که توسعه بدون مدیریت واحد ، کار رو پیچیده میکنه و کیفیت نهایی کار پایین می آد

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


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


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


خوب چرا باید سیستم عاملی رو توسعه داد که اینقدر کار رو برای من پیچیده کرده و دلیلش هم عدم مدیریت واحد هستش البته این گفته ها دلیل بر این نیست که من تمایلم به ویندوز هست ویندوز هم با این همه تبلیغات و بزرگنمایی مشکلات فراوانی داره ولی بالاخره باید بین بد و بدتر یکی رو انتخاب کرد! . :متفکر:
بنظر بنده شما اشتباه میکنید و بقدر کافی نسبت به تاریخچه و ساختار و هدف گنو/لینوکس و کارایی های اون و اهمیت و فواید سیستم نرم افزار آزاد و بازمتن آگاهی ندارید.
نرم افزار آزاد و بازمتن خیلی سریع و قوی و گسترده رشد کردن. این تصادفی نیست. همه جا رسوخ کردن. حتی شرکتهای بزرگ تجاری ازشون استفاده کردن و اونا رو گسترش دادن. نمیشه شما یکی از اجزاش رو جدا کنید و چنتا عیب روش بذارید و بگید عدم مدیریت واحد فلان! کل این مجموعه با هم کار میکنه و البته که نقصها و ضعفهای خودش رو داره، اما در کل ضروری و بسیار مفید هست و چیز دیگه ای نمیتونه جاش رو بگیره.
نرم افزارهای آزاد و بازمتن دارن وب رو میگردونن، گوشی های موبایل رو، ماشین رختشویی رو، ابررایانه ها رو، و تقریبا هرجایی حضور با کفایتی دارن. حالا در دسکتاپ کاربران عمومی چندان موفق نبودن، اما در این زمینه هم امکانات چشمگیر و پیشرفت عظیم و سریعی داشتن و کاربران خودشون رو دارن.
بحث دربارهء این مسائل گسترده تر و پیچیده تر از این حرفهاست و یک بحثی هست که تاکنون بارها و بارها مطرح شده. منم که الان دیگه وقت ندارم و باید برم جایی. پس تا بعد. اگر خواستید بیشتر بحث میکنیم.

eshpilen
دوشنبه 27 تیر 1390, 19:27 عصر
ضمنا بنظر بنده نباید افرادی مثل لینوس توروالدز رو هم زیاد بزرگ کرد و لزوما در همه چیز بهترین دونست. ایشون در زمینهء برنامه نویسی سیستمی در پایین ترین سطح که کرنل و اینطور چیزها باشه احتمالا از بهترین ها هستن، اما این دلیل نمیشه در زمینهء برنامه نویسی اپلیکیشن هم دانش و مهارت و ذوق کافی رو داشته باشن و وقت کرده باشن که اون رو بصورت کامل و گسترده یاد بگیرن. اینطور افراد خیلی وقتا اصلا ارزش زیادی به مسائل سطح بالا مثل اینترفیس های گرافیکی نمیدن و نمیخوان وقت و انرژی خودشون رو روی اینطور چیزها صرف کنن، یا اینکه انگیزش رو ندارن و بهرحال سرشون با مسائل دیگه که مهمتر هست و هرکسی نمیتونه انجام بده سرگرمه.

بعدهم جسارت نباشه اما باید بگم داستان لینوکس و لینوکس کارها گسترده تر و پیچیده تر از این حرفهاست و بیشتر این افراد برنامه نویسهای واقعا خفنی هستن. بنابراین اگر به پیچیدگی ای برمیخورید که بنظرتون بی دلیل و اشتباه هست بهتره بازم فکر یا از افراد و منابع مناسب تحقیق بکنید شاید اون پیچیدگی دلایل ظریف و پیچیده ای داره که شما نمیدونید.
البته اگر میگید که محیط لینوکس برای کاربران و برنامه نویسان عادی مناسب نیست بنده باهاتون مخالفتی نمیکنم، چون لینوکس اساسا خیلی متنوع تر و گسترده تر از ویندوز هست و جمع کردنش به شکلی که هم برای کاربر خانگی راحت و مناسب باشه و هم برای برنامه نویس عادی و هم برای اون هکرها و برنامه نویسهای دنیای یونیکس که جراتش رو دارن با تقریبا هرچیزی سر و کله بزنن و خودشون مسائل سطح پایین رو حل کنن، طبیعتا باید کار واقعا دشوارتری هم باشه.
در دنیای لینوکس تنوع و کثرت زیاد داریم. مثلا برای انجام یک چیز میبینی چند سیستم و روش وجود داره که هرکدوم مال یه دوران یا فرد و گروه و شرکتی هست و تازه برای هرکدوم از اون روشها هم چند کتابخانه با استانداردها و اینترفیس های مختلف پیدا میشه که به همین شکل مال دوران و فرد و گروه یا شرکت خاصی هست. بهرحال این بخاطر غنی بودن برنامه نویسان و فعالیت در دنیای یونیکس و نرم افزار آزاد و بازمتن هست و اینکه تاریخچهء طولانی ای هم داره، و از طرف دیگه تنوع و کثرت یک اثر جانبی از آزادی هست که گرچه گاه نامطلوب هست و مدیریت رو دشوار میکنه و کاربران و برنامه نویسان عادی رو فراری میده، اما بعضا مزایا و طرفداران خودش رو هم داره و ضمنا درهرصورت اجتناب ناپذیره؛ همونطور که نرم افزارهای انحصاری ای مثل ویندوز هم محدودیت ها و معایب اساسی خودشون رو دارن که باعث میشه نتونن جایگزین مناسبی برای محیطهای کاملا آزادی مثل گنو/لینوکس باشن. اونی که میخواد هرچیزی رو بدونه و بتونه، مسلما با چیز محدود و انحصاری ای مثل ویندوز ارضاء نمیشه. اونایی که نیازهای خاص و گسترده و نیاز به کنترل کامل و دستکاری و تغییر هرچیزی دارن، گزینه ای جز یک پلتفرم آزاد ندارن. این گروهها مسلما توان فنی و منابع لازم برای بر اومدن از پس این کارها رو هم دارن یا پیدا میکنن.

لینوکس چند نوع محیط دسکتاپ و کتابخانهء GUI داره، چند boot loader/manager، ده ها نوع سیستم فایل، چند نوع سیستم امنیتی (علاوه بر سیستم پرمیشن های فایل)، چند نوع شل خط فرمان، خلاصه همه چیزش چند مارک و مدل داره. و کلی هم توزیع داریم. البته خوشبختانه توزیع ها و کتابخانه ها و اجزای اصلی خیلی محدودتر هستن، اما بازم نسبت به ویندوز تنوع و تکثر خیلی بیشتری هست و در ضمن این مسئله همهء پیچیدگی و دشواری ها رو حل نمیکنه.
اینا تنوع و کثرتی هست که در سطح کاربر عادی هم دیده میشن. همینطور در زمینهء برنامه نویسی هم همین داستان به شکل خیلی خفن تری وجود داره. اصلا یه دنیایی هست. باید بگم خیلی ها فقط ادعا میکنن چیز زیادی از دنیای لینوکس و بخصوص ساختار و برنامه نویسی اون میفهمن و احتمالا هنوز به بطن لینوکس راه پیدا نکردن. مثلا بنده فقط مقدمهء برنامه نویسی سی لینوکس رو که مربوط به کامپایلر و کتابخانه های استاندارد لینوکس بود (GNU) در داکیومنت هاش که روی سیستم بود در طول یه مدتی خوندم سرگیجه گرفتم. یه چیزای عجیب و غریبی توش بود که تا حالا حتی به گوشم هم نخورده بود و بنظرم حداقل توی ایران هیچ دانشجویی در دوره های آموزشی هر سطحی از زبان سی در دانشگاه و آموزشگاه و هرجای دیگه ای نمیخونه و در عمرش اصلا به گوشش هم نمیخوره، چه برسه به اینکه بفهمه چی هستن و استفاده کنه؛ ولی اونا چیزایی بودن که امکانات سطح پایین بسیار پیشرفته ای رو فراهم میکردن که مثلا امکان میدادن برنامه رو در پایین ترین سطوح بهینه سازی کنید و بعضی کارهای هوشمندانهء دیگه. ضمنا بعضی از اونا مختص همون کامپایلر بودن و اکستنشن بحساب میامدن و مثلا روی ویندوز احتمالا وجود ندارن یا به اون شکل نیستن (اینه که میگم کراس پلتفرم بودن به این سادگی نیست). فقط شونصد تا آپشن داره کامپایلرش که امکان میده از شیر مرغ تا جون آدمیزاد رو تنظیم کنید، از الگوریتم های داخلی کامپایلر و روشهای استفاده شده در ساختار فایل اجرایی گرفته تا اینکه برای چه پلتفرم و CPU ای کد اجرایی یا آبجکت کد و غیره رو تولید بکنه. کدوم اینا رو شما در یه کامپایلر در محیط ویندوز دیدید تاحالا؟

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

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

دیگه نگید که کاربر و برنامه نویس عادی راضی نیست یا چرا فتوشاپ و call of duty نداره. همینش هم که هست کار بسیار بزرگ و ارزنده ایست. کاربر و برنامه نویس عادی نمیتونه اصلا عظمت چنین چیزی رو درک کنه. و معیار تعیین حق در این زمینه نیست. هرچند اگر بشه اونها رو هم تامین و راضی کرد مسلما خوب و مفیده و بخاطر همین این هدف هم مدتهاست مد نظر بوده و براش فعالیت شده؛ بخاطر همینه که نسبت به گذشته وضع خیلی بهتر شده از این لحاظ.
گنو/لینوکس هر کمبودی هم داشته باشه، خیلی چیزها رو پوشش میده که هیچ ویندوز و میکروسافتی بدرد اون چیزها نمیخوره. و اینکه به ما قدرت کنترل دنیا و پردازش و امکانات خودمون رو میده و یک آلترناتیو کاربردی و متعادل کننده در دنیا هست خیلی مهمه. و این دنیا یکی از مراکز مهم تحقیق، نوآوری، و همکاری جمعی بشریت و اعمال خواسته های سیاسی و منافع عمومی هست. از این جهت ویندوز در برابر گنو/لینوکس هیچی نیست! نه بدرد آموزش میخوره، نه بدرد تحقیق میخوره، نه بدرد ناسا و ابررایانه ها میخوره، نه بدرد امنیت و ثبات وب میخوره، نه بدرد نوآوری های اساسی و مستقل در تمام سطوح میخوره، نه بدرد اخلاق و همکاری دانشمندان و برنامه نویسان میخوره. صرفا یه محصول تجاری انحصاری هست.

Programmer 1
سه شنبه 28 تیر 1390, 01:49 صبح
بنظر بنده نباید افرادی مثل لینوس توروالدز رو هم زیاد بزرگ کرد و لزوما در همه چیز بهترین دونست. ایشون در زمینهء برنامه نویسی سیستمی در پایین ترین سطح که کرنل و اینطور چیزها باشه احتمالا از بهترین ها هستن، اما این دلیل نمیشه در زمینهء برنامه نویسی اپلیکیشن هم دانش و مهارت و ذوق کافی رو داشته باشن و وقت کرده باشن که اون رو بصورت کامل و گسترده یاد بگیرن .

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

بله منظور بنده ( = درک شما از گفته من در مورد تصورم از لینوس تروالدز ) از بزرگ کردن در همه ابعاد نبودش بلکه در یک زمینه خاص . البته به نظر من افرادی مثل توروالدز رو باید به خاطر پشتکار و صبر و تلاششون افراد بزرگی دونست نه تخصص تو یک زمینه خاص چون ذاتا توان القوه یادگیری و پیشرفت در هر زمینه ای رو دارند! .



اگر به پیچیدگی ای برمیخورید که بنظرتون بی دلیل و اشتباه هست بهتره بازم فکر یا از افراد و منابع مناسب تحقیق بکنید شاید اون پیچیدگی دلایل ظریف و پیچیده ای داره که شما نمیدونید.

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



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

بله کار واقعا دشواریه ولی شدنیه ( که تا الان هم خیلی موارد شدنی بود! که نشد ) .



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

پاراگراف جالبی بود ، انرژی مثبتی منتقل کرد .



دیگه نگید که کاربر و برنامه نویس عادی راضی نیست یا چرا فتوشاپ و call of duty نداره. همینش هم که هست کار بسیار بزرگ و ارزنده ایست. کاربر و برنامه نویس عادی نمیتونه اصلا عظمت چنین چیزی رو درک کنه. و معیار تعیین حق در این زمینه نیست. هرچند اگر بشه اونها رو هم تامین و راضی کرد مسلما خوب و مفیده و بخاطر همین این هدف هم مدتهاست مد نظر بوده و براش فعالیت شده؛ بخاطر همینه که نسبت به گذشته وضع خیلی بهتر شده از این لحاظ.

بله مسلما کار بزرگیه و قابل تقدیر ولی خوب اگه دنیای متن باز نخواد کاربرهای عادی رو راضی کنه و یا به عبارتی دقیق تر تلاشش رو در این زمینه زیادتر نکنه وضع همین میشه که آمار نشون میده (ببینید چند درصد دارن مثلا از لینوکس استفاده میکنن! ) ، اینجوری هم که میشه زیبای خفته! .



از این جهت ویندوز در برابر گنو/لینوکس هیچی نیست! نه بدرد آموزش میخوره، نه بدرد تحقیق میخوره ...

احساس میکنم کم لطفی میکنید واقعا هیچی نیست ؟ البته به نظرم باید زمانی گفت هیچی نیست که حداقل سورسش موجود باشه و بررسی شده باشه و بعد بگیم هیچی نیست! ،
حداقلش من به عنوان یه کاربر نهایی که سوادش تو دنیای متن باز صفره ، وقتی دارم از لینوکس ( توزیع Ubunta ) استفاده میکنم با یک سیستم ضعیف وقتی پنجره ها رو باز میکنم واقعا تفاوت سرعت از زمین تا آسمانه ، انگار اصلا مدیریت حافظه اش مشکل داره ، میگید نه امتحان کنید تو یک سیستم با 256 مگ رم ، پردازنده سلرون 2 گیگاهرتز یک توزیع ابونتو نصب کنید (با Swap Drive دو ونیم برابر رم و سایر جزئیات که جامعه متن باز به من آموزش داده!) و چند تا پنجره پشت سر هم باز کنید ،
بعد بیایید ویندوز Xp نصب کنید تو همین سیستم و تفاوت رو با چشمهای خودتون ببینید ، والبته حداقلش خیلی از مفاهیمی که در مورد سیستم عامل میدونید و سایر موارد به نظرم از ویندوزی که به قول شما هیچی نیست به ارث رسیده (رجوع کنید به دروس آکادمیکی که فکر کنم فراموششون کردید! ) .


افراد دنیای متن باز به نظرم استادان مباحثه هستند و خیلی به عقایدشون پایبند هستند و البته ببخشید اکثرشون به وادی افراط و تفریط افتادن .

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

مسیر گفتگوی تاپیک کلا عوض شد :لبخندساده: .

با تشکر /.

eshpilen
سه شنبه 28 تیر 1390, 10:14 صبح
اینجا من خودم رو به عنوان یک کاربر نهایی فرض میکنم و از این موضع نظر میدم : چرا توسعه دهندگان دنیای متن باز در اغلب موارد کاربر نهایی رو یک فرد حرفه ای (البته حرفه ای از دید اونها!) تلقی میکنند؟ این طرز فکر نشات گرفته از کجا است؟ چرا امنیت باید به پیچیدگی ختم بشه؟ چرا تواما زیبایی GUI با کارایی نرم افزار نمی تونه تامین بشه؟ این قوانین رو کجا نوشته اند ؟ مگه در دنیای تجارت همیشه کیفیت محصول کیفیت خارجی اون تلقی میشه؟ یا فقط کیفیت داخلی اش ؟ مگر ما محصولاتی نداریم که هم کیفیت داخلی و هم کیفیت خارجی اش رعایت میشه؟ ،
من که اینقدر به پارامتر زیبایی GUI و پیچیدگی اهمیت میدم این هستش که این دوتا واقعا تو دنیای متن باز با مشکل مواجه شده و از طرفی ویندوز هم کم کم داره ناخوداگاه از کارایی و کیفیت داخلی دور میشه! ؟ اصول مهندسی نرم افزار رو آیا فقط باید شنید و به دیگران گفت ؟ کی و توسط چه کسی باید عملی بشه ؟ البته گاهی اوقات مشکل فقط عملی کردن دانسته ها نیست ، گاهی فقط عمل کردن به گفته های دیگران بدون قید و شرط مشکل سازه ؟ همون چیزی که باعث شده مثلا مبدعان تفکر Agile با متودولوژی هایی مثل RUP مخالفت کنند! .بنده فکر میکنم این ماهیت و سرنوشت هر پلتفرم و کاربران و برنامه نویسان اولیه و ذاتی اون هست و جنبه های تاریخی هم داره.
یونیکس برای هکرها بود، گنو هم برای هکرها بود، گنو/لینوکس هم هنوز اول برای هکرهاست بعد برای کاربر عادی.
و فکر میکنم بخاطر کمبود منابع انسانی و مالی و غیره در دنیای نرم افزار آزاد و بازمتن، هنوزم اولویت طبیعتا به امکانات پایه و برای حرفه ایها و نقشهایی مثل سرور و غیره داده میشه. هرچند منابع زیادی به توسعهء دسکتاپ برای کاربران عادی هم اختصاص داده شده و پیشرفت های عظیمی حاصل شده. بهرحال دنیای بازمتن هست و هرکس دوست داشته باشه میتونه هرکاری انجام بده. یه عده هم با این تفکر و علاقه روی جنبهء دسکتاپ کاربر عمومی کار میکنن. بعدم هکرها هم به رابط گرافیکی و اپلیکیشن های امروزی نیاز دارن و درصورت امکان بدشون نمیاد از امکانات بیشتر و سطح بالاتر.
یونیکس از نظر فنی سیستم عامل حرفه ای و شبکه ای و چند کاربره بود.
داس بوجود آمد برای PC و بعنوان یک سیستم عامل کاملا محدود و ناقص اما ارزان و راحت برای کاربران خانگی و اداری عادی.
پروژهء گنو توسط هکرها شروع شد و هدفش فراهم کردن یک محیط کاملا آزاد برای خودشون بود.
هدف دسکتاپ کاربر عمومی بعدا ایجاد و دنبال شد. وقتی نرم افزار آزاد مسائل زیادی رو حل کرد و منابع انسانی و مالی اون زیادتر شد. وقتی بخش بزرگی از سهم حیطه هایی مثل سرورها رو گرفت.
بنده فکر نمیکنم دنیای بازمتن و نرم افزار آزاد با تمام توانش بتونه همیشه با بهترین و بزرگترین نرم افزارهای شرکتهای تجاری رقابت کنه. یعنی با همش نمیتونه. چون اون شرکتها منابع مالی و انسانی هنگفتی سرمایه گذاری میکنن و درآمد زیادی هم دارن. برنامه نویسان اونا مسئول هستن که چیزی درست کنن که کاربرپسند باشه و عموم بتونن ازش استفاده کنن. برای این کار حقوق میگیرن، هدفشون تجارته، و این کار وظیفهء اوناست و بقا و پیشرفت اون شرکت به راضی نگه داشتن کاربران عادی هم بستگی داره.
اما در دنیای بازمتن که خیلی افراد حرفه ای فعالیت میکنن و خیلی از اونا کم و بیش داوطلب هستن یا درآمد کمی دارن، کمتر انگیزه برای پرداختن به جزییات ظاهری و راحت کردن کار برای دیگران وجود داره. این افراد بیشتر ترجیح میدن روی مسائل دیگر و سطح پایینتر و جذاب تر کار کنن که برای خودشون و امثال خودشون هم بازدهی بیشتری داره.
نرم افزار آزاد اگر بخواد با همهء شرکتهای تجاری در حد اعلا رقابت کنه این کار خیلی سختی هست و منابع انسانی و مالی اون رو مثل خوره میخوره و تموم میکنه، طوری که دیگه برای بخشهای دیگری که نرم افزارهای آزاد و بازمتن در اون قوت و برتری و موفقیت دارن مورد کمبود و تهدید واقع میشه، اونم بخاطر رقابتی که معلوم نیست نتیجش چیه و تا چه زمانی میشه بهش ادامه داد. فکر نمیکنم این عاقلانه باشه. اینکه چیزهایی رو که کلی براشون زحمت کشیده شده و در اونها موفق و قوی هستیم به خطر بندازیم بخاطر یک هدفی که بقدر اون حیطه ها حیاتی نیست و موفقیت درش دشواره.
هکرها بهترین کارایی خودشون رو در این سطح و مقوله ندارن. بهترین کارایی منابع انسانی نرم افزار آزاد در زمینهء برنامه نویسی سیستمی و نرم افزارهای خلاق تر و فنی تر هست تا ظواهر. انسانهای بزرگ و ژرف اندیش اکثرا به ظواهر اهمیت چندانی نمیدن. این مسئله رو ما در جنبه های مختلف زندگی میبینیم.
این دنیای هکرهاست. و ازش انتظار نمیره بصورت طبیعی برخلاف روح هکری حرکت کنه.
یه هکر از درست کردن چنتا اینترفیس گرافیکی هیچ لذتی نمیبره. این الکی خوش بودن ها مال افراد سطحی هست یا نیازهای تجارت. میتونم بگم خیلی از هکرها حتی ترجیح میدن روی نرم افزارهای دیگری کار کنن تا نرم افزارهایی مثل بازیهای پیشرفته. چون بازی هم بهرحال بازی هست و در دنیای واقعی کاربردی جز یک سرگرمی تک بعدی و محدود نداره. یه هکر واقعی میخواد همه چیز رو بدونه و بتونه و بیشتر به مسائل کاربردی و پربازده توجه میکنه. نه اینکه سالها روی یادگیری یک زمینهء محدود برنامه نویسی صرف کنه و سالها هم روی طراحی یک بازی که فقط باهاش میشه بازی کرد و دیگر هیچ، و بعد از چند سال هم احتمالا دیگه طرفدار و استفادهء چندانی نداره.
بنابراین درکل نرم افزار آزاد و بازمتن به حیطهء دسکتاپ کاربر عمومی تا یک حد شدنی و حداقلی اکتفا میکنه، البته درصورت کمبود منابع، و بقیهء منابع خودش رو به حیطه ها و اهداف سنتی خودش اختصاص میده.
البته این به این معنا نیست که محیط دسکتاپ لینوکس خیلی ضعیف و ناقص هست. ولی این انتظار که همیشه معادل برابر یا بهتر همهء نرم افزارها و سیستم های گرافیکی رو داشته باشه بنظرم واقعگرایانه نیست.
ضمنا گنو/لینوکس فقط یکی از دستاوردهای مهم دنیای نرم افزار آزاد و بازمتن هست. اینطور نیست که دستاوردش فقط یک محصول باشه و اگر ما به هر دلیلی از اون استفاده نکردیم یعنی دیگه نرم افزار آزاد سود و کاربردی برای ما نداره. درواقع ما هر روز داریم از خیلی از دستاوردهای بازمتن بصورت مستقیم و غیرمستقیم استفاده میکنیم. بطور مثال زبانهای برنامه نویسی بازمتن مثل PHP. سرورهایی که وب، اینترنت و خیلی جاهای دیگه رو اداره میکنن، فرمتهای آزاد، الگوریتم های فشرده سازی آزاد، پروتکل های آزاد، اپلیکیشن های بازمتنی مثل مرورگر فایرفاکس و غیره.
یعنی میخوام بگم حداقل نصف امکانات دنیای ما دستاورد نرم افزار آزاد و بازمتن هست. حتی کسانی که صرفا با ویندوز و محصولات انحصاری امثال میکروسافت کار میکنن هم مدیون این جنبش ها و بصورت مستقیم یا غیرمستقیم درحال استفاده از دستاوردهای اونا هستن.


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


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



حداقلش من به عنوان یه کاربر نهایی که سوادش تو دنیای متن باز صفره ، وقتی دارم از لینوکس ( توزیع Ubunta ) استفاده میکنم با یک سیستم ضعیف وقتی پنجره ها رو باز میکنم واقعا تفاوت سرعت از زمین تا آسمانه ، انگار اصلا مدیریت حافظه اش مشکل داره ، میگید نه امتحان کنید تو یک سیستم با 256 مگ رم ، پردازنده سلرون 2 گیگاهرتز یک توزیع ابونتو نصب کنید (با Swap Drive دو ونیم برابر رم و سایر جزئیات که جامعه متن باز به من آموزش داده!) و چند تا پنجره پشت سر هم باز کنید ،
بعد بیایید ویندوز Xp نصب کنید تو همین سیستم و تفاوت رو با چشمهای خودتون ببینید ، والبته حداقلش خیلی از مفاهیمی که در مورد سیستم عامل میدونید و سایر موارد به نظرم از ویندوزی که به قول شما هیچی نیست به ارث رسیده (رجوع کنید به دروس آکادمیکی که فکر کنم فراموششون کردید! ) .
این تجربهء شماست.
و خیلی ها هم برخلافش رو میگن.
بنده هم یکسال فدورا 5 استفاده میکردم روی پنتیوم 3 و سرعتش خوب بود. البته رم بنده بیشتر بود، ولی ویندوز XP هم روش با همون سرعت کار میکرد.
ضمنا از توزیع به توزیع ممکنه ویژگیها تفاوت بکنن.


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


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

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

eshpilen
پنج شنبه 30 تیر 1390, 12:10 عصر
نرم افزار آزاد یه فرهنگه. یه دید و روش جدید زندگی.
من یادمه زمانیکه نرم افزار آزاد رو نمیشناختم چطور فکر و زندگی و یادگیری و کار میکردم.
اون موقع یادگیری سخت تر بود. منابع کمتر بود. و کاملا احساس میکردی هرکسی همه چیز رو یا خیلی چیزها رو برای خودش برداشته و پنهان میکنه و به آسونی بهت نمیده. این فرهنگی هست که از یک سیستم عامل و دنیای تجاری و انحصاری حاصل میشه. و به مرور ما رو از ارزشهای انسانی نسبتا فراموش شدهء خودمون دورتر و دورتر میکنه. وقتی میبینی حق نداری هرچیزی رو بدونی، کسی برای دونستن و تونستن کمکت نمیکنه، حتی ثروتمندترین و ظاهرا خوشبخت ترین آدمهای دنیا، حتی آدمهایی که برای کارهای خیریه میلیونها و میلیاردها دلار و بخش بزرگی از کل ثروتشون رو خرج میکنن، اما نمیذارن بدونی و بتونی، میگن تو حق نداری محصول ما رو مهندسی معکوس کنی، کد منبع رو بهت نمیدن، اختیاری بهت نمیدن، میگن فقط حق داری تا یه حدی و تحت یه شرایطی به ازای پولی که میپردازی ازش استفاده کنی. حق نداری مثلا اون رو به دوستت هم قرض بدی. البته گاهی هم و تحت شرایطی رایگان بهت میدن (مثلا برای استفادهء دانشجوها و محیطهای آموزشی)، ولی بازم فقط میتونی بصورت محدود استفاده کنی و بهش وابسته بشی و دنبال چیز دیگه نری. مصرف کننده بودن رو یاد بگیری. و یه مهرهء سازگار از ماشین تجارت باشی.
نه بگم اونا این حق رو ندارن که روی محصولاتشون محدودیت بذارن، اما میخوام بگم در این سیستم و فرهنگ عملا هیچ اثر و کمکی برای فرهنگ و انسانیت و اخلاق و بخشش و همکاری عمومی وجود نداره. هرچی هم هست در سطح خیلی سطحی و ظاهری و تبلیغاتی و سازگار با سیستم تجارت باید باشه. بخاطر همین میگم این محصولات تک بعدی هستن. فقط تجارت و کار و پول.
اونا آگاهانه و ناخودآگاه، مستقیم و غیرمستقیم، این تفکر رو از ابتدا در وجود ما تزریق میکنن، که همه چیز باید انحصاری باشه، و همهء مردم تحت یک سیستم تجاری و رقابتی با هم برای پولدار و موفق شدن رقابت میکنن، و هرکس پولدار شد تازه میتونه یه کمی هم انسان باشه و به دیگران هم کمک کنه، اما حق نداره این سیستم رو زیر سوال ببره و به خطر بندازه؛ به هر قیمتی باید این سیستم رو حفظ کرد. اول تجارت و پول، دوم (و کم و بیش اختیاری) انسانیت! انسانیت بدون تجارت و پول و این سیستم معنا نداره. انسانیت یه ماهیت عاجز و محتاجه بدون هیچ قدرت و منابع عملی، و تجارت و پول و انحصار، خداست. خدایی واقعی که قدرت حقیقی رو داره. سیستم دیگری ممکن نیست! همه چیز نیازمند پول و تجارته و تنها با این سیستم میشه بهشون رسید. در این سیستم، انسانیت و آزادی مورد ترحم هستن، نه ستایش حقیقی. و چنین چیزهایی چطور میتونن در چنین سیستمی هدف باشن؟ چیزی که عاجزه و محتاج چیز دیگه، هیچوقت نمیتونه برتر از اون چیز دیگه باشه. شما میبینید که خیلی افراد هم دقیقا همین تفکر رو دارن و به زبون میارن، چون این چیزی هست که سیستم دنیا و تبلیغات همواره و از کودکی توی مخ ما میکنه (اما جنبش نرم افزار آزاد نشون داد که لزوما و در تمام موارد اینطور نیست).

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

تفکر تجاری صرف به این شکل هیچوقت نمیذاره سیستم های دیگری که حتی ممکنه عملی باشن آزمون بشن و پا بگیرن.
بخاطر همینه که میکروسافت دشمن نرم افزار آزاد بوده و نقشه هاش برای استفاده از روشهای ناجوانمردانه بر علیه اون افشا شد (اسناد هالووین).
تفکر این افراد کاملا تک بعدی و بدون هیچ تفاوت قائل شدن بر مبنای دیگری غیر از رقابت بدون ترحم هست. برای اونا این واقعیت زندگی و تنها بازی ممکنه. تنها چیزی که اونا براش ساخته شدن و موفقیت و حتی انسانیت خودشون رو در اون میدونن.
دیگه طرف فکر نمیکنه که من دارم با چی مبارزه میکنم و چرا؟ آیا اینم یه رقیب مثل سایر رقباست یا فرق داره؟ میخوام جنبشی رو نابود کنم که داره کلی دستاورد علمی و فناوری رو به رایگان و بصورت آزاد در اختیار تمام مردم دنیا قرار میده تا همه بهره مند بشن و همه امکان شروع و موفقیت برابرتری رو داشته باشن.

بعکس ببین تفکر ریچارد استالمن چیه.
ریچارد میگه وقتی ما یه ساندویچ تموم نشدنی داریم چرا باید اون رو عمدا پنهان و محدود کنیم؟ بعکس ما باید اون رو به سراسر جهان ببریم و باهاش گرسنگان دنیا رو سیر کنیم.
تجارت میگه نه نه! دست نگه دار! اگر اون ساندویچ رو به یه شکلی محدود نکنی تجارت نابود میشه و نابودی تجارت به معنای نابودی بشریت و علم و فناوری و پیشرفت و امکانات همهء ماست!! باید جلوش رو بگیری! تو داری همه چیز ما رو نابود میکنی!

و دقیقا میکروسافت قبلا نرم افزار آزاد رو به تضاد با «رویای آمریکایی» و «روش آمریکایی» متهم کرده بود. این نشون میده که از نظر اونا نرم افزار آزاد یه چیز مخرب هست.

تجارت و مردانی که فقط همین روی توی زندگی یاد گرفتن و این اساس مرام اونهاست، هیچوقت نمیذارن بشریت بصورت کامل و بدون محدودیت و بهینه از دستاوردهای علم و فناوری خودش بهره مند بشه. اونا میگن همیشه باید یجوری محدودیت ایجاد کرد، حتی اگر به یه چیزی رسیدیم که ذاتا قابلیت نامحدود بودن و رایگان بودن رو داشت. اگر یه چیزی مثل نرم افزار رو میشه خیلی راحتتر و سریعتر و حتی رایگان تولید و تکثیر کرد، باید جلوش گرفته بشه، چون تجارت نرم افزار انحصاری رو نابود میکنه. یعنی شرط مشروع بودن هرچیزی اینه که از دید اونا تجارت هایی که مد نظر اونهاست خللی نبینه یا حتی تقویت بشه.

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

eshpilen
پنج شنبه 30 تیر 1390, 12:37 عصر
میشه گفت نرم افزار آزاد یه تکامل و انقلاب دیگس در تاریخ بشریت، که شباهت با تاریخ نظامهای حکومتی داره.
در گذشته نظامهای حکومتی شاهنشاهی و امپراطوری و کلا دیکتاتوری بودن، اما به مرور نظامهای مردمی و دموکراسی روی کار اومدن.
اون در زمینهء حکومت بود، و نرم افزار آزاد در زمینهء رابطهء علم و فناوری و تجارت و فرهنگ و اخلاق.
تجارت انحصارگر یک نظام کلاسیک و قدیمی محسوب میشه، و نرم افزار آزاد یک نظام آلترناتیو نوین.
نرم افزار آزاد هنوز که هنوزه خوب شناخته نشده و خیلی ها درکش نکردن؛ چون انگار یه مقدار جلوتر از عصر خودش بود و مردم براش آماده نبودن. البته خیلی ها هم آماده بودن و بهش پیوستن.
خوشبختانه ریچارد در موقع مناسبی باعث شد این جنبش شکل بگیره. و مثل نظامهای استبدادی حکومتی، بشریت منتظر صدها سال درجا زدن و هزینه پرداختن و محدودیت و ستم کشیدن نشد. شاید به همین خاطر هم هست که خیلی از مردم ماهیت و اهمیت نرم افزار آزاد رو درک نمیکنن. چون این مردم آدمهایی هستن که باید ده ها و شاید صدها سال تحت یک نظام قدیمی و محدود زندگی کنن تا ازش خسته بشن و خوب محدودیت ها و مشکلات اون رو بشناسن و اون نظام هم عملا به نهایت ضعف ها و بن بست های خودش برسه و احتمالا خطاها و ظلم های آشکار بزرگی رو مرتکب بشه.

خب البته نرم افزار آزاد در قیاس با تاریخ نظامهای حکومتی یه چیز ظریف تر و سطح بالاتر با حیطهء محدودتری هست. نرم افزار آزاد فعلا فقط در زمینهء نرم افزار معنا و قابلیت تحقق داشته و تنها بخشی از تجارت رو در این حیطه تغییر میده؛ یا شاید هم باید بگیم شکلهایی از تجارت در این حیطه رو عملا حذف میکنه، ولی درمقابل امکانهای مفید دیگری، هم در زمینهء تجارت و هم در دیگر زمینه ها، ایجاد میکنه.
اگر با هرم مازلو آشنا باشید، میتونیم نرم افزار آزاد رو در اون بالاهای هرم فرض کنیم. یعنی بعد از تکامل حکومتی و پیشرفت علم و فناوری و رفاه عمومی، مسئلهء چیزهایی مثل نرم افزار آزاد بوجود میاد. اون نوک هرم خب مسلما حیطهء محدودتری هم داره تا پایینش.
ما همونطور که به هنر احترام میذاریم (که در طبقات بالای هرم مازلو هست) به نرم افزار آزاد هم باید احترام بذاریم و اون رو یک تعالی طلبی مشابه بدونیم.
وقتی ما توانش رو پیدا کردیم، چرا این تعالی ها رو نپذیریم و عملی ندونیم؟ اونا کاملا عملی هستن و این ثابت شده. همونطور که هنر کاملا عملی بوده.
و چرا خودمون رو پایبند یک سیستم قدیمی و محدود مثل تجارت کلاسیک بکنیم؟ چرا فکر کنیم اون چیزی تغییر ناپذیر و همه چیز و همه زمان شمول است؟
ما فکر میکنیم انقلاب های بزرگ لزوما به انتها رسیدن. فکر میکنیم نظامهای بشری به اوج تکامل خودشون رسیدن. اما هرچی پیشرفت میکنیم امکانهای بیشتری بوجود میان و انقلاب های دیگری ممکن میشن. ما میتونیم بین روشهای مختلف زندگی و راههای مختلف انتخاب کنیم.
میتونیم جامعه ای با انسانیت و معیارهای اخلاقی و دوستی و همکاری بیشتر رو محقق کنیم. و میتونیم این کار رو نکنیم. اما اگر نکنیم واقعا پس میخوایم به چی برسیم؟ آیا فکر میکنیم تجارت و پول بیشتر ما رو خوشبخت تر میکنه؟ آیا فکر میکنیم این سیستمی که هست چون همراه با پیشرفت علم و فناوری بشر بوده سیستم ایدئالی هست و نیازی به اصلاحات اساسی نداره؟ بشریت در صد سال اخیر منابع و محیط زیست یک تاریخ و آیندگان رو به سرعت تحلیل برده. تجارت و صنعت و مردم مثل هیولایی بودن که کرهء زمین رو مثل خوره خورده. آیا چنین سیستمی لزوما سیستم کارا و درستی بوده؟ شواهد زیاد و قاطعی وجود دارن که این سیستم خیلی جنبه های کور و دیوانه وار داشته و ما رو عملا به بن بست رسونده و به خطر انداخته. فکر نمیکنم یک چنین سیستمی رو بشه خیلی کامل و عاقلانه دونست. این نشون میده که هنوز جا برای تکامل و تغییر زیاد هست و ما باید درسهای زیادی بگیریم. بجای اینکه همش به فکر تجارت و پول و تولید و مصرف باشیم، یه کمی فکر کنیم که ما واقعا چی هستیم و میخوایم به کجا برسیم؟
بجای هدفهای پوچ و کور و شرکت در یک مسابقهء دیوانگی محض با همدیگر، بهتره کمی هم به مسائل دیگر فکر کنیم. کمی آرامش... هیچ کجا آنچنان خبری نیست... در نهایت ما انسانیم.

Programmer 1
پنج شنبه 30 تیر 1390, 23:09 عصر
خوب این طرز تفکر خیلی خوبیه ، ولی آیا میشه از این طریق کسب درآمد هم کرد؟ لطفا شعار ندید و فقط جملات قشنگ بیان نکنید ، راه حل بدید ، واقعا از این جامعه متن باز چه جوری باید پول درآورد؟ در اینباره لطفا توضیح بدید و با مثالهای روشن و عملی هم توضیحاتتون رو شفافتر کنید .

eshpilen
جمعه 31 تیر 1390, 11:00 صبح
بنظر بنده سوال و ایراد شما در درجهء اول از نظر منطقی مقداری مغلطه آمیز یا حداقل مبهم هست.
چون احتمالا شما دارید بصورت ضمنی فرض و اون فرض رو القا میکنید که: جامعهء بازمتن حتما باید قادر به تولید کافی شکل خاصی از درآمد برای افراد خاصی باشه تا عملی یا مفید باشه.
ولی چطور میتونید این رو ثابت کنید؟
برای عملی و مفید بودن بازمتن لزوما این شرط وجود نداره که باید قادر به تولید کافی شکل خاصی از درآمد برای افراد خاصی باشه.
این سوال شما کمی شبیه اون مثالی هست که استالمن مطرح کرده.
استالمن میگه «بعضی ها میپرسن آیا نرم افزار آزاد عملی است؟ این سوال مثل اینه که بپرسیم، آیا هواپیماها واقعا پرواز میکنند؟ جواب اینه که بله من در یکی از آنها پرواز کرده ام!».
منظور استالمن اینه که اگر نرم افزار آزاد عملی نبود پس چطور بقا و پیشرفت پیدا کرده (اونم اینقدر زیاد) و به نتیجه رسیده؟
پس اینطور سوالات واقعیت های عینی رو نادیده میگیرن.

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

Programmer 1
جمعه 31 تیر 1390, 17:42 عصر
ساده ترین مثالی که میتونم بزنم این هستش که بنده فرضا نرم افزاری را تحت بستر متن باز طراحی و توسعه داده ام ، حالا طبق دیدگاه های ارائه شده ، من حق ندارم از این محصول استفاده تجاری کنم یعنی چون که تحت یک سیستم عامل متن باز و یک کامپایلر متن باز یک نرم افزار را توسعه داده ام پس باید این نرم افزار هم به صورت متن باز ارائه بشه ، خوب وقتی محصول من رایگان باشه چه طوری باید از اون کسب در آمد کنم؟ فقط تنها راه حلی که میتونه به ذهن من برسه همون Donation هستش که اون هم فکر نکنم تو ایران جواب بده و به ریسکش نیم ارزه . اگر سورش رو در اختیار دیگران قرار ندیم که باز میشه همون استکبار تجاری! ، سوال خیلی روشنه ، خوب مشتری وقتی بابت یک محصول پول میده که رایگان نباشه وقتی رایگان باشه چرا باید هزینه کنه!؟ اگه باز هم سوال روشن نبود شما سوال کنید دقیقا کجا ابهام دارید من سوالم رو روشنتر بیان کنم

eshpilen
شنبه 01 مرداد 1390, 12:15 عصر
ساده ترین مثالی که میتونم بزنم این هستش که بنده فرضا نرم افزاری را تحت بستر متن باز طراحی و توسعه داده ام ، حالا طبق دیدگاه های ارائه شده ، من حق ندارم از این محصول استفاده تجاری کنم یعنی چون که تحت یک سیستم عامل متن باز و یک کامپایلر متن باز یک نرم افزار را توسعه داده ام پس باید این نرم افزار هم به صورت متن باز ارائه بشه ،
از نظر قانونی اینکه شما محصول خودتون رو با استفاده از یا تحت محیط/ابزارهای بازمتن توسعه دادید باعث نمیشه که مجبور باشید محصول خودتون رو بصورت بازمتن منتشر کنید.
تنها درصورتیکه شما از کدها یا کامپوننت های بازمتن در نرم افزار خودتون استفاده کرده باشید که تحت یک مجوز بازمتن از نوع کپی لفت باشن مجبور هستید نرم افزار خودتون رو بصورت بازمتن منتشر کنید.
یعنی مراحل ساخت نرم افزار و اینکه روی گنو/لینوکس انجام شده یا با یک کامپایلر بازمتن، مهم نیست. مهم اینه که محصول نهایی شما عملا از کدهای بازمتن تحت کپی لفت استفاده میکنه یا نه.
خیلی از برنامه ها و کتابخانه های بازمتن تحت مجوزهای غیر کپی لفت هستن و بنابراین میشه از اونا در برنامه های انحصاری استفاده کرد. حتی یه زمانی میکروسافت هم از این برنامه های بازمتن استفاده کرده بود.
خیلی از کتابخانه های بازمتن هم دارای مجوزی مثل LGPL هستن که اجازه میده به شرطی که برنامه رو بصورت استاتیک لینک نکنید از اونها در پروژه های غیربازمتن استفاده کنید.


خوب وقتی محصول من رایگان باشه چه طوری باید از اون کسب در آمد کنم؟ فقط تنها راه حلی که میتونه به ذهن من برسه همون Donation هستش که اون هم فکر نکنم تو ایران جواب بده و به ریسکش نیم ارزه .شما مجبور نیستید این کار رو بکنید. بنده هم جایی نگفتم همه باید تحت هر شرایطی برنامه هاشون رو بازمتن کنن.
بنده فقط به هدف و خواص و موفقیت و اهمیت و سودمندی نرم افزار آزاد و بازمتن پرداختم. وقتی میگیم یه چیزی خیلی خوبه لزوما معنیش این نیست که همه در همهء شرایط میتونن و باید در حد فول عملا بهش بپردازن. بلکه داریم میگیم درکل خیلی خوبه و تاجاییکه میشه و میتونیم وظیفهء اخلاقی داریم ازش حمایت کنیم.
مثل اینکه میگیم کمک به مستمندان خیلی خوبه. اما معنیش این نیست که بگیم همه برن همهء ثروت خودشون رو بین نیازمندان تقسیم کنن. افراد شرایط شخصی و محیطی مختلفی دارن و عملکرد اونها بر اساس ظرفیت و شرایط خودشون هست. البته بصورت استثنایی ممکنه یکی واقعا بیشتر یا حتی همهء ثروتش رو بین نیازمندان تقسیم کنه، اما دلیل نمیشه بگیم همه میتونن و باید این کار رو بکنن. شاید یکی هم این کار رو بکنه و واقعا اشتباه کرده باشه و پشیمون بشه و دوام نیاره (بنابراین خصوصیات اون آدم خیلی مهمه و اینکه واقعا نسبت به درستی کارش اطمینان کافی داشته باشه). ولی خیلی افراد میتونن بالاخره یه حدی کمک کنن. نه اینکه بگم حتما نصف ثروتشون، ولی یه کسر کوچکی رو حداقل میتونن کمک کنن. ولی بعضیا همین کمک حداقلی رو هم نمیکنن و یا خسیس و بخیل هستن، ایمان یا انسانیت و وجدان ندارن، و بعضی وقتا هم میترسن (آدمهای بزدلی که جرات کوچکترین تغییر و ریسکی رو ندارن). بهرحال این به میزان ثروت اون آدم هم برمیگرده. یکی که یک میلیارد تومن ثروت داره اگر نصفش رو هم ببخشه هیچیش نمیشه و لزوما خطر بزرگی تهدیدش نمیکنه، ولی یکی که ثروت درحد یه آدم متوسط و معمولی داره، بخشیدن نصف ثروتش براش تاثیر/ریسک خیلی بزرگتری داره. خلاصه باید همهء جوانب رو درنظر گرفت.
هرچیزی باید بر اساس عقل و علم باشه. انسانیت و اخلاق و آرمان طلبی بدون اینا هم مشکل داره.
اما ببینید وقتی یه آدمی مثل من که همهء اینا رو میدونه و قبول داره و اجرا میکنه از نرم افزار آزاد و بازمتن صحبت میکنه و اون رو عملی میدونه، پس حتما بصورت عاقلانه و واقعگرایانه به این موضوع نگاه میکنه و اون رو درست و عملی دونسته. حالا اینکه چطوری و چقدر و در چه شرایطی و غیره دیگه بحثهای بعدی هست و چیزی که میبینیم اینکه نرم افزار آزاد و بازمتن عملی بود چون عملی شد و خیلی هم موفق و مفید و پایدار بوده تاحالا.

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

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


اگر سورش رو در اختیار دیگران قرار ندیم که باز میشه همون استکبار تجاری! ،نه حکمش به این سادگی و مطلق نیست و بنده هم همچین حرفی نزدم.
البته ما باید سعی کنیم تفکرمون استکباری نباشه!
متاسفانه ظاهرا خیلی افراد اینطوری هستن یا اینطوری بار اومدن و اینطور بهشون القا شده و دید و طرز زندگی دیگری رو بلد نیستن و حاضر هم نیستن چیز جدید و مستقلی یاد بگیرن.

Programmer 1
شنبه 01 مرداد 1390, 20:34 عصر
شما از یک طرف میگید :


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

از این طرف هم میگید :



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

بین این حرف های شما تنفاقض آشکاری وجود داره؟ نمی خوام واقعا بحث بی خودی بکنم واقعا گیج شدم ، خوب شما میگید این طور هم نیست که نتونید از محصولی که در بستر رایگان تولید شده استفاده تجاری کرد ، خوب فرضا من یک کامپایلر طراحی و توسعه میدم تحت بستر متن باز (طبق قوانین متن باز) و حالا میخوام اون رو به صورت تجاری بفروشم و اجازه نمیدم که کسی به سورسش دسترسی داشته باشه ، این میشه یک محصول فقط تجاری که تحت بستر متن باز طراحی شده ، حالا بعد از مدتی که جامعه به تکنولوژی ها و محصولات شرکت x که توسط بستر متن باز و البته فقط به صورت تجاری و با این هدف ارائه میشن عادت کردند و این شرکت پیشرفت زیادی پیدا کرد افردای مثل شما ممکنه بگن محصولات شرکت x فقط جنبه تجاری دادن ، چرا باید ما این محصولات و تکنولوژی ها رو یاد بگیریم؟
واقعا دلیل اینکه چهره شرکتهایی مثل مایکروسافت برای شما زشته همینه؟ و اگر چیزهای دیگری هستش که بنده هم کم و بیش اطلاع دارم بحثش جداست و به متن باز بودن و یا نبودن و اینها مربوط نمیشه

eshpilen
شنبه 01 مرداد 1390, 22:56 عصر
بین این حرف های شما تنفاقض آشکاری وجود داره؟ ببینید نرم افزارهای انحصاری بطور کلی جالب نیستن و مضر بودن و خطراتی که دارن رو نمیشه از ماهیت اونا جدا کرد. و طبیعتا خیلی شرکتها و افراد انحصارگر و سوء استفاده کننده هم به این شکل بوجود میان یا اینکه از اول اینطور بودن و جذب این سیستم میشن. مثل قدرت متمرکز و انحصاری که هروقت در دست عده ای قرار گرفته تقریبا تمام اونها نهایتا از اون قدرت سوء استفاده و باهاش ظلم کردن. سیستم نرم افزار انحصاری هم بخاطر امکانهایی که ایجاد میکنه خطرناک هست. اصلا فرضا ما خیلی تخفیف میدیم و میگیم این سیستم خطری هم نداره، اما وقتی درمقابل سیستم نرم افزار آزاد و بازمتن با اونهمه مزایا برای عموم بشریت، برای آزادی علم، آموزش، اقتصاد عمومی، بهره مندی انسانهای بیشتر، و غیره و غیره وجود داره، چرا باید بخوایم سیستم انحصاری غلبه داشته باشه؟
ما تمام افراد رو یکی نمیکنیم. چون افراد با شرایط و نیت و ذات های مختلف در این سیستم فعالیت میکنن. مثلا شما که مجبوری بخاطر شغل و درآمد درحد معاش خودت نرم افزار انحصاری تولید کنی، بنده چرا باید شما رو بد بدونم و بگم حتما باید بازمتن کار کنی؟
حتی درمورد میکروسافت هم ریچارد استالمن در مقاله ای میگه که میکروسافت شیطان بزرگ نیست، بلکه «نتیجهء توسعهء طبیعی یک سیستم غلط است».
اما بازم میکروسافت با شما خیلی فرق داره. شما فقط مجبوری و برای معاشت کاری رو که از نظر اجتماعی و اخلاقی بهینه نیست یا حتی بعنوان جزیی از یک سیستم مضر و خطرناک کلی کار میکنه انجام میدی، شما قربانی شرایط و شاید قربانی خود این سیستم هستی. شما مجرم بحساب نمیایید. مثل کسی که توی کارخانه ای کار میکنه که یکی از قطعات یا موادی رو تولید میکنه که نهایتا در ساخت سلاح های کشتار جمعی بکار میره، ولی این فرد مجبور بوده بخاطر داشتن شغل و درآمد کافی این کار رو بکنه.
حتی میکروسافت هم مقصر اصلی نیست، اما دشمن بزرگه و قلدری و نامردی هم میکنه! شما نمیای با نرم افزار آزاد دشمنی کنی با وجود اینکه کلی پول و امنیت اقتصادی داری که تا آخر عمرت کافیه، نمیای براش نقشه های ناجوانمردانه طرح کنی و با هر روشی بخوای نابودش کنی، اما میکروسافت این نیات رو داشته و تلاش خودش رو در این زمینه کرده. میکروسافت برای ما شاید شیطان نباشه، یک میکروب خطرناک هم شیطان نیست اما برای ما کشنده هست و ما باید ماهیت اون رو بشناسیم و سعی کنیم دفعش کنیم. این میکروب ذاتش بد نیست، اما حاوی چیزی هست که برای ما بده. میکروسافت هم نماینده و توسعهء طبیعی این سیستم غلط هست که به تجارت و انحصار اولویت میده و به خودش اجازه میده هرچیزی رو با هر روشی از سر راهش برداره. ما این ماهیت و تفکر و رفتار رو تقبیح میکنیم و سعی میکنیم رسواش کنیم و از نظر تئوریک زیر پاش رو خالی کنیم تا افراد کمتری سراغش برن یا حداقل متعادل تر باشن.

بازم میگم، این سیستم (نرم افزارهای انحصاری) از نظر اجتماعی و اخلاقی و فرهنگی و غیره درست نیست یا حداقل بهینه نیست، اما شما به صرف فعالیت در اون مجرم نیستید. شما وقتی مقصر هستید که در ایجاد یا بقای این سیستم آگاهانه و عمدا نقش داشته باشید و موقعی که میتونید سیستم بهتری رو حمایت کنید این کار رو نکنید.

امیدوارم توضیحات کافی بوده باشه و ابهام برطرف شده باشه. اگر هنوزم مشکلی هست و بنظرتون تناقضی وجود داره دقیقا مشخص و تشریح کنید که چرا.


شما میگید این طور هم نیست که نتونید از محصولی که در بستر رایگان تولید شده استفاده تجاری کرد،منظورتون از بستر چیه؟


خوب فرضا من یک کامپایلر طراحی و توسعه میدم تحت بستر متن باز (طبق قوانین متن باز) و حالا میخوام اون رو به صورت تجاری بفروشم و اجازه نمیدم که کسی به سورسش دسترسی داشته باشه،اگر تحت قوانین بازمتن عملی کنید که نمیتونید سورس رو به کسی ندید. شما باید سورس رو بدید و این یکی از شرایط بازمتن بودنه. باید بقیهء اختیارات رو هم بدید.
ولی شما میتونید با یک کامپایلر بازمتن یک برنامهء انحصاری رو کامپایل کنید. بنده این رو گفتم.
شما میتونید روی گنو/لینوکس نرم افزار انحصاری طراحی و کامپایل کنید و بفروشید. اما نباید کتابخانه ها و کدهایی جزیی از برنامهء شما باشن که مجوز اونها از نوع بازمتن کپی لفت دار باشه.
شما میتونید از کدها و کتابخانه ها و کامپوننت های بازمتنی که تحت مجوزهای آسانگیر هستن برای تولید محصولات انحصاری استفاده کنید، اما محصول شما دیگه بازمتن نیست و از نظر ماهیت و اثراتش تقریبا برابر با دیگر محصولات انحصاری هست. اینکه بعضی مجوزهای بازمتن اجازهء این کار رو میدن دلیلی بر این نیست که این کار بنظر ما خوب و مفید هست. اون مجوزها رو افرادی طراحی کردن با میل خودشون و برای محصولات خودشون و طبق تفکر خودشون. اون چیزی که فلسفهء اولیه و اصلی رو داره «نرم افزار آزاد» هست که بنده به اون اعتقاد دارم.
شما با تولید نرم افزار انحصاری کمکی به نرم افزار آزاد یا بازمتن نمیکنید، اما بعضی مجوزهای بازمتن این امکان رو به شما میدن.
ضمنا بعضی مجوزهای نرم افزار آزاد مثل LGPL هم این امکان رو به شما میدن، اما نه بخاطر اینکه اعتقاد دارن نوشتن نرم افزار انحصاری خوبه، بلکه بخاطر اینکه متوجه شدن برای گسترش و بقای بعضی چیزها باید اجازهء این کار رو داد. مثلا فرمت PNG که یک فرمت آزاد هست وقتی اختراع شد دیدن اگر بخواد فراگیر بشه و عملا قابل استفاده باشه باید مرورگر IE هم بتونه ازش استفاده کنه، اما IE یک محصول انحصاری بود. بنابراین کتابخانه های PNG رو تحت LGPL قرار دادن. اگر این کار رو نمیکردن و ساپورت PNG به IE اضافه نمیشد، احتمالا این فرمت هم موفق نمیشد و فرمتهای انحصاری جای اون رو حداقل در حوزهء وب میگرفتن.
اینها از مواردی هستن که نرم افزار آزاد مجبور به مصالحه با دشمن هست، چون این مصالحه در نهایت به نفع نرم افزار آزاد تموم میشه.