লিনাক্সের কার্নেল নীতি কেন ব্যবহারকারীর স্থানকে কখনও ভাঙ্গবে না?


38

আমি লিনাক্স কার্নেল মেলিং তালিকার শিষ্টাচারের প্রসঙ্গে এই সমস্যাটি সম্পর্কে ভাবতে শুরু করি। বিশ্বের সর্বাধিক সুপরিচিত এবং তর্কযুক্ত সফল এবং গুরুত্বপূর্ণ বিনামূল্যে সফ্টওয়্যার প্রকল্প হিসাবে, লিনাক্স কার্নেল প্রচুর পরিমাণে প্রেস পেয়েছে। এবং প্রকল্পের প্রতিষ্ঠাতা এবং নেতা লিনাস টরভাল্ডস স্পষ্টতই এখানে কোনও পরিচয়ের প্রয়োজন নেই।

লিনাস মাঝে মাঝে এলকেএমএলে তাঁর শিখা নিয়ে বিতর্ককে আকর্ষণ করে। এই শিখাগুলি ঘন ঘন, তার নিজের ভর্তি দ্বারা, ব্যবহারকারীর স্থান ভাঙ্গার জন্য করতে হয়। আমার প্রশ্ন হল।

ব্যবহারকারীর স্থান ভাঙা কেন এমন একটি খারাপ জিনিস তা সম্পর্কে আমার কিছু historicalতিহাসিক দৃষ্টিভঙ্গি থাকতে পারে? যেহেতু আমি এটি বুঝতে পারি, ব্যবহারকারীর স্পেসটি ভাঙ্গার জন্য অ্যাপ্লিকেশন স্তরের ফিক্সগুলির প্রয়োজন হবে, তবে কার্নেল কোডটি উন্নত করা হলে এটি কি খুব খারাপ জিনিস?

আমি যেমন এটি বুঝতে পারি, লিনাসের বিবৃত নীতিটি হ'ল ব্যবহারকারীর স্থান ভাঙা না করা কোডের মান সহ সমস্ত কিছুকে ট্রাম্প করে। কেন এটি এত গুরুত্বপূর্ণ, এবং এই জাতীয় নীতিমালার পক্ষে কী কী হবে?

(এই জাতীয় নীতি সম্পর্কে ধারাবাহিকভাবে প্রয়োগ করা হয়েছে, যেহেতু লিনাস মাঝে মাঝে এলকেএমএলে তার শীর্ষ লেফটেন্যান্টদের সাথে ঠিক এই বিষয়টিতে "মতবিরোধ" পোষণ করে থাকেন। আমি যতদূর বলতে পারি, তিনি সর্বদা এই বিষয়ে তার পদক্ষেপ গ্রহণ করেন।)


1
আপনি পরিচিতিতে লিনাসের নাম ভুল বানান করেছেন।
ইসমাইল মিগুয়েল

এটি আমার পক্ষে নিশ্চিত ছিল না, তবে আমি উঁচুতে ভুলে গিয়ে এখনই আমার ভোট দিয়েছি।
ইসমাইল মিগুয়েল

উত্তর:


38

কারণটি কোনও historicalতিহাসিক নয় বরং একটি ব্যবহারিক। লিনাক্স কার্নেলের উপরে চলে এমন অনেকগুলি প্রোগ্রাম রয়েছে; কার্নেল ইন্টারফেস যদি সেই প্রোগ্রামগুলি ভাঙে তবে প্রত্যেককে সেই প্রোগ্রামগুলি আপগ্রেড করতে হবে।

এখন এটি সত্য যে বেশিরভাগ প্রোগ্রামগুলি সরাসরি কার্নেল ইন্টারফেসের উপর নির্ভর করে না ( সিস্টেম কলগুলি ), তবে কেবল সি স্ট্যান্ডার্ড লাইব্রেরির ইন্টারফেসের উপর ( সিস্টেম কলগুলির চারদিকে সি র‍্যাপার )। ওহ, তবে কোন স্ট্যান্ডার্ড লাইব্রেরি? Glibc? uClibC? Dietlibc? বায়োনিক? Musl? প্রভৃতি

তবে এমন অনেকগুলি প্রোগ্রাম রয়েছে যা ওএস-নির্দিষ্ট পরিষেবাগুলি প্রয়োগ করে এবং কার্নেল ইন্টারফেসের উপর নির্ভর করে যা স্ট্যান্ডার্ড লাইব্রেরি দ্বারা প্রকাশ করা হয় না। (চালু লিনাক্স, এদের মধ্যে অনেকেই মাধ্যমে দেওয়া হয় /procএবং /sys।)

এবং তারপরে স্থিতিশীলভাবে সংকলিত বাইনারি রয়েছে। কার্নেল আপগ্রেড যদি এগুলির একটি ভেঙে দেয় তবে তাদের পুনরায় সংকলন করা একমাত্র সমাধান। যদি আপনার উত্স থাকে: লিনাক্স মালিকানা সফটওয়্যারটিও সমর্থন করে।

উত্স উপলব্ধ থাকলেও, সমস্ত সংগ্রহ করা ব্যথা হতে পারে। বিশেষত যখন আপনি আপনার হার্ডওয়্যার দিয়ে বাগ ঠিক করতে আপনার কার্নেলকে আপগ্রেড করছেন। লোকেরা প্রায়শই তাদের সিস্টেমের বাকী অংশ থেকে স্বাধীনভাবে কার্নেলটি আপগ্রেড করে কারণ তাদের হার্ডওয়্যার সমর্থন প্রয়োজন। ইন লিনাস টোরভাল্ডস শব্দের :

ব্যবহারকারীর প্রোগ্রামগুলি ভঙ্গ করা কেবল গ্রহণযোগ্য নয়। (…) আমরা জানি যে লোকেরা বছরের পর বছর ধরে পুরানো বাইনারি ব্যবহার করে এবং একটি নতুন প্রকাশের অর্থ এই নয় যে আপনি কেবল এটি ফেলে দিতে পারেন। আপনি আমাদের বিশ্বাস করতে পারেন।

তিনি আরও ব্যাখ্যা করেছেন যে এটিকে একটি শক্তিশালী নিয়ম করার একটি কারণ হ'ল নির্ভরতা জাহান্নাম এড়ানো, যেখানে আপনাকে আরও কিছু নতুন কার্নেলকে কাজ করতে পেতে কেবল একটি প্রোগ্রামকেই আপগ্রেড করতে হবে না, তবে আরও একটি প্রোগ্রাম আপগ্রেড করতে হবে, এবং অন্যটি, এবং অন্যটি , কারণ সবকিছুই প্রতিটি কিছুর একটি নির্দিষ্ট সংস্করণের উপর নির্ভর করে।

এটা কিছুটা একটি ভাল-সংজ্ঞায়িত একমুখী নির্ভরতা আছে ঠিক আছে। এটি দুঃখজনক, তবে কখনও কখনও অনিবার্য। (…) যা ঠিক নেই তা হ'ল দ্বিমুখী নির্ভরতা। যদি ব্যবহারকারী-স্থান এইচএল কোডটি কোনও নতুন কার্নেলের উপর নির্ভর করে, তবে এটি ঠিক আছে, যদিও আমি সন্দেহ করি যে ব্যবহারকারীরা আশা করবেন যে এটি "সপ্তাহের কার্নেল" হবে না, তবে আরও "গত কয়েক মাসের কার্নেল" জিনিস।

তবে আপনার যদি দুই-ওয়ে নির্ভরতা থাকে তবে আপনি ক্ষতিগ্রস্থ হন। এর অর্থ হ'ল আপনাকে লক-স্টেপে আপগ্রেড করতে হবে এবং এটি কেবল গ্রহণযোগ্য নয়। এটি ব্যবহারকারীর পক্ষে ভয়াবহ, তবে আরও গুরুত্বপূর্ণ এটি বিকাশকারীদের পক্ষে ভয়ঙ্কর, কারণ এর অর্থ হল যে আপনি "একটি বাগ ঘটেছে" বলতে পারবেন না এবং দ্বিখণ্ডিত বা অনুরূপ দ্বারা সংকীর্ণ করার চেষ্টা করার মতো কাজগুলি করুন।

ইউজারস্পেসে, mutual পারস্পরিক নির্ভরতা সাধারণত বিভিন্ন লাইব্রেরী সংস্করণকে প্রায় কাছাকাছি রেখে সমাধান করা হয়; তবে আপনি কেবল একটি কার্নেল চালাতে পারেন, তাই এটির সাথে লোকেরা যা করতে চায় তার সবটাকে সমর্থন করতে হবে।

সরকারীভাবে ,

[সিস্টেম কলগুলি স্থিতিশীল হিসাবে ঘোষণা করা] এর জন্য পশ্চাদগম সামঞ্জস্যতা কমপক্ষে 2 বছরের জন্য গ্যারান্টিযুক্ত হবে।

বাস্তবে যদিও,

সর্বাধিক ইন্টারফেস (যেমন সিসকোলে) কখনও পরিবর্তন হয় না এবং সর্বদা উপলব্ধ থাকে বলে আশা করা যায়।

আরো কি প্রায়ই পরিবর্তন করে ইন্টারফেস যেটি শুধুমাত্র হার্ডওয়্যার সংক্রান্ত প্রোগ্রাম দ্বারা ব্যবহার করা যেতে বোঝানো হয় যে, হয় /sys। ( /procঅন্যদিকে, যেহেতু প্রবর্তনটি /sysনন-হার্ডওয়্যার-সম্পর্কিত পরিষেবাদিগুলির জন্য সংরক্ষণ করা হয়েছে, ততটা বেমানান উপায় কখনও ভাঙবে না break)

সংক্ষেপে,

ব্যবহারকারীর স্থান ভাঙ্গার জন্য অ্যাপ্লিকেশন স্তরের সমাধানের প্রয়োজন হবে

এবং এটি খারাপ কারণ এখানে কেবল একটি কার্নেল রয়েছে, যা লোকেরা তাদের সিস্টেমের বাকী অংশে স্বাধীনভাবে আপগ্রেড করতে চায়, তবে জটিল আন্তঃনির্ভরতা সহ অনেকগুলি অ্যাপ্লিকেশন রয়েছে। কয়েক মিলিয়ন অ্যাপ্লিকেশনকে কয়েক মিলিয়ন বিভিন্ন সেটআপে আপ টু ডেট রাখার জন্য কার্নেলটিকে স্থিতিশীল রাখা আরও সহজ।


1
উত্তরের জন্য ধন্যবাদ. সুতরাং, যে ইন্টারফেসগুলি স্থিতিশীল হিসাবে ঘোষণা করা হয় সেগুলি কি পসিক্স সিস্টেম কলগুলির একটি সুপারসেট? ইতিহাস সম্পর্কে আমার প্রশ্ন এই অনুশীলনটি কীভাবে বিকশিত হয়েছিল। সম্ভবত লিনাক্স কার্নেলের মূল সংস্করণগুলি কমপক্ষে প্রাথমিকভাবে ব্যবহারকারীর স্থান ভাঙ্গার বিষয়ে চিন্তা করবে না।
ফাহিম মিঠা

3
@ ফাহিমমিঠা হ্যাঁ, তারা 1991 সাল থেকে করেছিলেন । লিনাসের দৃষ্টিভঙ্গি বিকশিত হয়েছে বলে আমি মনে করি না, এটি সর্বদাই ছিল "সাধারণ অ্যাপ্লিকেশনগুলির ইন্টারফেসগুলি পরিবর্তন হয় না, কার্নেলের সাথে খুব দৃ very়ভাবে বাঁধা সফ্টওয়্যারটির ইন্টারফেস খুব কমই পরিবর্তিত হয়"।
গিলস 'অশুভ হওয়া বন্ধ করুন'

24

যে কোনও আন্তঃনির্ভরশীল সিস্টেমে মূলত দুটি পছন্দ থাকে। বিমূর্ততা এবং সংহতকরণ। (আমি উদ্দেশ্যমূলকভাবে প্রযুক্তিগত শর্তাদি ব্যবহার করছি না)। বিমূর্ততা সহ, আপনি বলছেন যে আপনি যখন এমন কোনও এপিআইতে কল করেন যখন এপিআইর পেছনের কোডটি পরিবর্তিত হতে পারে, ফলাফল সর্বদা একই রকম হয়। উদাহরণস্বরূপ, আমরা যখন ফোন fs.open()করি তখন এটি কোনও ড্রাইভ বা ড্রাইভ, কোনও এসএসডি বা হার্ডড্রাইভ কিনা সে বিষয়ে আমাদের চিন্তা নেই, আমরা সর্বদা একটি উন্মুক্ত ফাইল বিবরণী পেয়ে যাব যা আমরা স্টাফ করতে পারি। "সংহতকরণ" এর সাথে লক্ষ্য হ'ল উপায় পরিবর্তন হলেও কোনও কাজ করার জন্য "সেরা" উপায় সরবরাহ করা। উদাহরণস্বরূপ, একটি ফাইল খোলার ডিস্কের একটি ফাইলের চেয়ে কোনও নেটওয়ার্ক শেয়ারের জন্য আলাদা হতে পারে। উভয় পদ্ধতিই আধুনিক লিনাক্স ডেস্কটপে বেশ বিস্তৃতভাবে ব্যবহৃত হয়।

বিকাশকারীদের দৃষ্টিকোণ থেকে এটি "যে কোনও সংস্করণের সাথে কাজ করে" বা "একটি নির্দিষ্ট সংস্করণ দিয়ে কাজ করে" এর একটি প্রশ্ন। এর একটি দুর্দান্ত উদাহরণ ওপেনজিএল। বেশিরভাগ গেমস ওপেনগিএলের একটি নির্দিষ্ট সংস্করণ নিয়ে কাজ করার জন্য সেট করা আছে। আপনি উত্স থেকে সংকলন করছেন কিনা তা বিবেচ্য নয়। যদি গেমটি ওপেনজিএল 1.1 ব্যবহার করতে লেখা হয় এবং আপনি এটি 3.x এ চালানোর চেষ্টা করছেন তবে আপনি ভাল সময় যাবেন না। বর্ণালীটির অন্য প্রান্তে, কিছু কলগুলি প্রত্যাশা করা হয় যে তা যাই হোক না কেন কাজ করবে। উদাহরণস্বরূপ, আমি কল fs.open()করতে চাই আমি কী কার্নেল সংস্করণে আছি সেদিকে খেয়াল রাখতে চাই না। আমি শুধু একটি ফাইল বর্ণনাকারী চাই।

প্রতিটি উপকারিতা আছে। ইন্টিগ্রেশন পিছনের সামঞ্জস্যের ব্যয়ে "আরও নতুন" বৈশিষ্ট্য সরবরাহ করে। বিমূর্ততা "নতুন" কলগুলির উপরে স্থিতিশীলতা সরবরাহ করে। যদিও এটি লক্ষ্য করা গুরুত্বপূর্ণ যে এটি অগ্রাধিকারের বিষয়, সম্ভাবনার নয়।

সাম্প্রদায়িক অবস্থান থেকে, সত্যিই ভাল কারণ ছাড়াই বিমূর্ততা একটি জটিল সিস্টেমে সর্বদা ভাল। উদাহরণস্বরূপ, fs.open()কার্নেল সংস্করণের উপর নির্ভর করে আলাদাভাবে কাজ করা হয়েছে তা কল্পনা করুন। তারপরে একটি সাধারণ ফাইল সিস্টেম ইন্টারঅ্যাকশন লাইব্রেরির জন্য কয়েক শতাধিক "ওপেন ফাইল" পদ্ধতিগুলি (বা সম্ভবত ব্লকগুলি) বজায় রাখা দরকার। যখন কোনও নতুন কার্নেল সংস্করণ প্রকাশিত হবে, আপনি "আপগ্রেড" করতে সক্ষম হবেন না, আপনার ব্যবহৃত প্রতিটি সফটওয়্যার পরীক্ষা করতে হবে। কার্নেল 6.2.2 (জাল) কেবলমাত্র আপনার পাঠ্য সম্পাদককে ভেঙে দিতে পারে।

কিছু বাস্তব বিশ্বের উদাহরণগুলির জন্য ওএসএক্স ব্যবহারকারীর স্পেস ভাঙার বিষয়ে চিন্তা করে না। তারা আরও ঘন ঘন "বিমূর্ত" ওভার "সংহতকরণ" লক্ষ্য করে। এবং প্রতিটি বড় ওএস আপডেটে জিনিসগুলি ভেঙে যায়। এটি বলার অপেক্ষা রাখে না যে একটি উপায় অন্যভাবে ভাল better এটি একটি পছন্দ এবং ডিজাইনের সিদ্ধান্ত।

সবচেয়ে বড় কথা, লিনাক্স ইকো-সিস্টেমটি দুর্দান্ত টিউনসোর্স প্রকল্পগুলিতে পূর্ণ, যেখানে ব্যক্তি বা গোষ্ঠীগুলি তাদের ফ্রি সময়ে প্রকল্পে কাজ করে, বা সরঞ্জামটি কার্যকর বলে। এটি মনে রেখে, দ্বিতীয়টি মজা করা বন্ধ করে এবং পিআইএ হওয়া শুরু করে, সেই বিকাশকারীরা অন্য কোথাও চলে যাবে।

উদাহরণস্বরূপ, আমি একটি প্যাচ জমা দিয়েছি BuildNotify.py। আমি পরার্থবাদী হওয়ার কারণে নয়, তবে আমি এই সরঞ্জামটি ব্যবহার করেছি এবং আমি একটি বৈশিষ্ট্য চেয়েছিলাম। এটা সহজ ছিল, তাই এখানে, একটি প্যাচ আছে। যদি এটি জটিল, বা কষ্টকর ছিল তবে আমি ব্যবহার BuildNotify.pyকরব না এবং আমি অন্য কিছু খুঁজে পাব। যদি প্রতিবার কোনও কার্নেল আপডেট আসে তবে আমার পাঠ্য সম্পাদকটি ভেঙে যায়, আমি কেবল একটি আলাদা ওএস ব্যবহার করব। সম্প্রদায়ের জন্য আমার অবদানগুলি (তবে ছোট) অবিরত বা অস্তিত্ব থাকবে না, ইত্যাদি।

সুতরাং, ডিজাইনের সিদ্ধান্তটি সিস্টেম কলগুলিতে বিমূর্ত করার সিদ্ধান্ত নেওয়া হয়েছিল, যাতে আমি যখন fs.open()এটি করি তখন এটি কেবল কার্যকর হয়। এর অর্থ জনপ্রিয়তা অর্জনের fs.openদীর্ঘকাল ধরে বজায় রাখা fs.open2()

.তিহাসিকভাবে, এটি সাধারণভাবে পসিক্স সিস্টেমগুলির লক্ষ্য। "এখানে কলগুলির একটি সেট এবং প্রত্যাশিত রিটার্ন মানগুলি রয়েছে, আপনি মাঝখানেটি খুঁজে বের করবেন" " আবার বহনযোগ্যতার কারণে। লিনাস কেন সেই পদ্ধতিটি তার মস্তিষ্কের অভ্যন্তরীণ ব্যবহারটি বেছে নেয় এবং আপনাকে তাকে কেন এটি জানতে জিজ্ঞাসা করতে হবে। এটি যদি আমার হয় তবে আমি একটি জটিল সিস্টেমে সংহতকরণের বিষয়ে বিমূর্ততা বেছে নেব।


1
ইউজারস্পেসের API, 'syscall' এপিআই, ভালভাবে সংজ্ঞায়িত (বিশেষত POSIX সাবসেট) এবং স্থিতিশীল, কারণ এর কোনও অংশ সরিয়ে লোকেরা যে সফ্টওয়্যার ইনস্টল করে থাকতে পারে তা ভেঙে দেবে। এটি যা নেই তা হ'ল স্থিতিশীল ড্রাইভার এপিআই।
pjc50

4
@ ফাহিমমিঠা, এটি অন্যভাবে। কার্নেল বিকাশকারীরা যখনই ইচ্ছা তারা ড্রাইভার এপিআই ভাঙ্গতে মুক্ত, যতক্ষণ না তারা পরবর্তী রিলিজের আগে সমস্ত ইন-কার্নেল ড্রাইভারগুলি ঠিক করে রাখে। এটি ইউজারস্পেস এপিআই ভাঙছে, অথবা এমনকী নন-এপিআই জিনিস করছে যা ইউনস্পেসকে ভাঙ্গতে পারে, যা লিনাস থেকে মহাকাব্য প্রতিক্রিয়া তৈরি করে।
চিহ্নিত করুন

4
উদাহরণস্বরূপ, যদি কেউ কিছু পরিস্থিতিতে আইওসিটিএল ( ) থেকে আলাদা ত্রুটি কোডটি ফিরিয়ে এটিকে পরিবর্তন করার সিদ্ধান্ত নেন: lkml.org/lkML/2012/12/23/75 (দায়বদ্ধ বিকাশকারীদের উপর শপথ গ্রহণ এবং ব্যক্তিগত আক্রমণ রয়েছে)। সেই প্যাচটি প্রত্যাখ্যান করা হয়েছিল কারণ এটি পলস অডিওকে ভেঙে ফেলত এবং তাই জিনোম সিস্টেমে সমস্ত অডিও।
pjc50

1
@ ফাহিমমিঠা, মূলত ডিএফ অ্যাড (ক, খ); a + b ফেরত দিন; শেষ --- ডিফ অ্যাড (ক, খ); সি = এ + বি; প্রত্যাবর্তন গ; শেষ --- ডিফ অ্যাড (ক, খ); সি = এ + বি +10; রিটার্ন সি - 10; শেষ - সমস্ত অ্যাডের "একই" বাস্তবায়ন। লোকেরা যখন ডি এড (ক, খ) করে; রিটার্ন (এ + বি) * -1; শেষকথায়, কার্নেলের কাজগুলিতে "অভ্যন্তরীণ" জিনিসগুলি কীভাবে ঠিক আছে তা পরিবর্তন করা। কোনও সংজ্ঞায়িত এবং "সর্বজনীন" এপিআই কলটিতে কী ফিরিয়ে দেওয়া হচ্ছে তা নয়। "প্রাইভেট" এবং "পাবলিক" দুই ধরণের এপিআই কল রয়েছে। তিনি মনে করেন যে পাবলিক এপিআই কলগুলি কোনও কারণ ছাড়াই কখনও পরিবর্তন করা উচিত নয়।
কোটায়ার

3
একটি নন কোড উদাহরণ; আপনি দোকানে যান, আপনি 87 টি অক্টেন গ্যাস কিনেছেন। আপনি, গ্রাহক হিসাবে গ্যাস "কোথা থেকে এসেছে" বা কীভাবে এটি প্রক্রিয়াজাত করা হয়েছিল "যত্ন" করেন না। আপনি কেবল আপনার গ্যাসের যত্ন নিচ্ছেন। যদি গ্যাসটি অন্য শোধক প্রক্রিয়াটির মধ্য দিয়ে যায় তবে আপনার যত্ন নেই। পরিশোধন প্রক্রিয়াটি পরিবর্তন হতে পারে তা নিশ্চিত। এমনকি তেলের বিভিন্ন উত্স রয়েছে। তবে আপনি যা যত্নশীল তা 87 টি অক্টেন গ্যাস পাচ্ছে। সুতরাং তার অবস্থান, পরিবর্তনের উত্স, রিফাইনারিগুলি পরিবর্তন করুন, যা কখনও পরিবর্তন করুন, এতক্ষণ পাম্পে যা আসে তা 87 টি অক্টেন গ্যাস। সমস্ত "পর্দার পিছনে" জিনিস কোনও বিষয় নয়। এতক্ষণ পর্যন্ত 87 টি অক্টেন গ্যাস রয়েছে।
কোটায়ার

8

এটি একটি নকশা সিদ্ধান্ত এবং পছন্দ। লিনাস ব্যবহারকারী-স্পেস ডেভেলপারদের গ্যারান্টি দিতে সক্ষম হতে চায় যে, অত্যন্ত বিরল এবং ব্যতিক্রমী (যেমন সুরক্ষা সম্পর্কিত) পরিস্থিতিতে বাদে কার্নেলের পরিবর্তনগুলি তাদের অ্যাপ্লিকেশনগুলিকে ভঙ্গ করবে না।

পক্ষগুলি হ'ল ইউজারস্পেস ডেভস হঠাৎ করে তাদের কোডটি স্বেচ্ছাসেবী এবং কৌতুকপূর্ণ কারণে নতুন কার্নেলগুলি ভঙ্গ করতে পারে না।

কনসটি হ'ল কার্নেলকে পুরানো কোড এবং পুরাতন সিস্টস্কেল ইত্যাদি চিরকাল ধরে রাখতে হবে (বা কমপক্ষে তাদের ব্যবহারের তারিখগুলি দীর্ঘকাল ধরে রাখতে হবে)।


উত্তর দেওয়ার জন্য আপনাকে ধন্যবাদ। এই সিদ্ধান্ত কীভাবে বিকশিত হয়েছিল তার ইতিহাস সম্পর্কে আপনি কি সচেতন? আমি কিছুটা ভিন্ন দৃষ্টিকোণ গ্রহণকারী প্রকল্পগুলি সম্পর্কে সচেতন। উদাহরণস্বরূপ মার্কুরিয়াল প্রকল্পের একটি নির্দিষ্ট এপিআই নেই, এবং এর উপর নির্ভর করে এমন কোড এবং ব্রেক করতে পারে।
ফাহিম মিঠা

না, দুঃখিত, এটি কীভাবে ঘটেছিল তা আমি মনে করতে পারি না। আপনি লিনাস বা এলকেএমএল ইমেল করতে এবং তাকে জিজ্ঞাসা করতে পারে।
কাস

2
মার্চুরিয়াল কোনও ওএস নয়। কোনও ওএসের সম্পূর্ণ পয়েন্টটি এটির উপরে অন্য সফ্টওয়্যার চালনা সক্ষম করা এবং অন্য সফ্টওয়্যারটি ভাঙ্গা খুব জনপ্রিয় নয়। তুলনা করে উইন্ডোজ খুব দীর্ঘ সময়ের জন্য পিছনের দিকে সামঞ্জস্য বজায় রেখেছে; 16-বিট উইন্ডোজ কোডটি সম্প্রতি সম্প্রতি বাতিল করা হয়েছিল।
pjc50

@ pjc50 এটা সত্যি যে Mercurial একটি অপারেটিং সিস্টেম নয়, কিন্তু নির্বিশেষে সেখানে হয় অন্যান্য সফ্টওয়্যার, এমনকি যদি শুধুমাত্র স্ক্রিপ্ট, এটি উপর নির্ভর করে। এবং সম্ভাব্য পরিবর্তনগুলি দ্বারা ভেঙে যেতে পারে।
ফাহিম মিঠা
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.