ওয়েব অডিও, অটোপ্লে নীতি এবং গেম

2017 সালের সেপ্টেম্বরে আমরা Chrome-এ অটোপ্লে আচরণ নীতির সাথে অডিও কীভাবে পরিচালনা করা হবে তার একটি আসন্ন পরিবর্তন ঘোষণা করেছি। নীতি পরিবর্তনটি 2018 সালের মে মাসে Chrome 66 Stable-এর সাথে প্রকাশ করা হয়েছিল।

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

এই নীতি পরিবর্তনটি এখন ডিসেম্বর 2018-এ Chrome 71-এর সাথে রোল আউট করার জন্য নির্ধারিত হয়েছে৷

নীতি পরিবর্তন ঠিক কি করে?

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

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

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

আমরা এটি একটি সূচী দিয়ে করি যা একটি ডিভাইসে Chrome প্রোফাইলের প্রতি স্থানীয়ভাবে সংরক্ষণ করা হয় – এটি ডিভাইস জুড়ে সিঙ্ক করা হয় না এবং শুধুমাত্র বেনামী ব্যবহারকারী পরিসংখ্যানের অংশ হিসাবে ভাগ করা হয়। আমরা এই সূচকটিকে মিডিয়া এনগেজমেন্ট ইনডেক্স (MEI) বলি এবং আপনি এটি chrome://media-engagement এর মাধ্যমে দেখতে পারেন৷

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

যদি ব্যবহারকারী প্রায়শই একটি ওয়েবসাইটের ডোমেনকে 7 সেকেন্ডের বেশি সময় ধরে অডিও চালাতে দেয় তাহলে আমরা ভবিষ্যতে অনুমান করি যে ব্যবহারকারী এই ওয়েবসাইটটির অটোপ্লে অডিও করার অধিকার আশা করছেন৷ অতএব, আমরা সেই ওয়েবসাইটটিকে সেই ডোমেন থেকে একটি ট্যাবের সাথে ইন্টারঅ্যাক্ট করার প্রয়োজন ছাড়াই অডিও অটোপ্লে করার অধিকার প্রদান করি৷

যাইহোক, এই অধিকার অনির্দিষ্টকালের জন্য নিশ্চিত করা হয় না। যদি ব্যবহারকারীর আচরণ পরিবর্তন হয় - যেমন অডিও প্লেব্যাক বন্ধ করা বা বেশ কয়েকটি ভিজিট চলাকালীন 7 সেকেন্ডের থ্রেশহোল্ডের মধ্যে ট্যাব বন্ধ করা - তাহলে আমরা ওয়েবসাইটের অটোপ্লে করার অধিকার সরিয়ে দিই।

মিডিয়া এইচটিএমএল উপাদান (ভিডিও এবং অডিও) এবং ওয়েব অডিও (জাভাস্ক্রিপ্ট ইনস্ট্যান্টিয়েটেড অডিও কনটেক্সট অবজেক্ট) উভয়ের ব্যবহারই MEI-তে অবদান রাখবে। ওয়েব অডিও সম্পর্কিত এই নীতি ব্যবহারকারীর আচরণের রোলআউটের প্রস্তুতির জন্য Chrome 70 এবং তার পর থেকে MEI-তে অবদান রাখা শুরু করবে। এটি নিশ্চিত করবে যে আমরা অটোপ্লে এবং তারা সাধারণত যে ওয়েবসাইটগুলি পরিদর্শন করে সেগুলির বিষয়ে আমরা ইতিমধ্যেই ব্যবহারকারীর পছন্দসই অভিপ্রায় অনুমান করতে সক্ষম হয়েছি৷

এটি উল্লেখ করা উচিত যে iframes শুধুমাত্র ব্যবহারকারীর ইন্টারঅ্যাকশন ছাড়াই অটোপ্লে করার অধিকার পেতে পারে যদি আইফ্রেম এম্বেড করে এমন মূল ওয়েবপৃষ্ঠাটি প্রদত্ত iframe-এ সেই অধিকার প্রসারিত করে

সম্প্রদায়কে সমর্থন করার জন্য পরিবর্তন বিলম্বিত করা

ওয়েব অডিও ডেভেলপার সম্প্রদায় – বিশেষ করে ওয়েব গেম ডেভেলপার এবং এই সম্প্রদায়ের WebRTC ডেভেলপার অংশগুলি – যখন এই পরিবর্তনটি Chrome Stable চ্যানেলে উপস্থিত হয়েছিল তখন লক্ষ্য করেছিল৷

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

উপরন্তু, আমরা এই সময় নিয়েছি:

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

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

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

আমরা WebRTC অ্যাপ্লিকেশন সমর্থন করার জন্য একটি পরিবর্তন করেছি; একটি সক্রিয় ক্যাপচার সেশন থাকাকালীন, অটোপ্লে অনুমোদিত হবে৷

এই আচরণ পরিবর্তন কি সমস্যা সমাধান করার লক্ষ্যে?

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

যাইহোক, কখনও কখনও ব্যবহারকারীরা কন্টেন্ট অটোপ্লে করতে চান, এবং Chrome-এ অর্থপূর্ণ সংখ্যক ব্লক করা অটোপ্লে পরবর্তীতে ব্যবহারকারী দ্বারা চালানো হয়।

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

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

ওয়েব গেম ডেভেলপারদের সাহায্য করার জন্য নতুন সমন্বয়

বিকাশকারীরা ওয়েব অডিও API ব্যবহার করার সবচেয়ে সাধারণ উপায় হল অডিও চালানোর জন্য দুটি ধরণের অবজেক্ট তৈরি করা:

ওয়েব অডিও বিকাশকারীরা অডিও চালানোর জন্য একটি অডিও কনটেক্সট তৈরি করবে। অটোপ্লে নীতি স্বয়ংক্রিয়ভাবে তাদের অডিও কনটেক্সট স্থগিত করার পরে তাদের অডিও পুনরায় শুরু করার জন্য, ব্যবহারকারী ট্যাবের সাথে ইন্টারঅ্যাক্ট করার পরে তাদের এই অবজেক্টে resume() ফাংশনটি কল করতে হবে:

    const context = new AudioContext();

    // Setup an audio graph with AudioNodes and schedule playback.
    ...

    // Resume AudioContext playback when user clicks a button on the page.
    document.querySelector('button').addEventListener('click', function() {
      context.resume().then(() => {
        console.log('AudioContext playback resumed successfully');
      });
    });

অনেকগুলি ইন্টারফেস রয়েছে যা AudioNode থেকে উত্তরাধিকারসূত্রে পাওয়া যায়, যার মধ্যে একটি হল AudioScheduledSourceNode ইন্টারফেস। AudioScheduledSourceNode ইন্টারফেস বাস্তবায়নকারী অডিওনোডগুলিকে সাধারণত সোর্স নোড হিসাবে উল্লেখ করা হয় (যেমন AudioBufferSourceNode, ConstantSourceNode, এবং OscillatorNode)। উত্স নোড একটি start() পদ্ধতি প্রয়োগ করে।

সোর্স নোডগুলি সাধারণত স্বতন্ত্র অডিও স্নিপেটগুলিকে উপস্থাপন করে যা গেমগুলি বাজায়, উদাহরণস্বরূপ: যখন কোনও খেলোয়াড় একটি মুদ্রা সংগ্রহ করে বা বর্তমান পর্যায়ে বাজানো ব্যাকগ্রাউন্ড মিউজিক যখন বাজানো হয়। গেম ডেভেলপাররা খুব সম্ভবত সোর্স নোডগুলিতে start() ফাংশনটিকে কল করছে যখনই গেমের জন্য এই শব্দগুলির যে কোনও একটির প্রয়োজন হয়৷

একবার আমরা ওয়েব গেমগুলিতে এই সাধারণ প্যাটার্নটিকে স্বীকৃতি দেওয়ার পরে আমরা আমাদের বাস্তবায়নকে নিম্নলিখিতগুলির সাথে সামঞ্জস্য করার সিদ্ধান্ত নিয়েছি:

দুটি শর্ত পূরণ হলে একটি অডিও কনটেক্সট স্বয়ংক্রিয়ভাবে পুনরায় শুরু হবে:

  • ব্যবহারকারী একটি পৃষ্ঠার সাথে যোগাযোগ করেছে।
  • একটি উৎস নোডের start() পদ্ধতি বলা হয়।

এই পরিবর্তনের কারণে, বেশিরভাগ ওয়েব গেমগুলি এখন তাদের অডিও পুনরায় শুরু করবে যখন ব্যবহারকারী গেমটি খেলতে শুরু করবে।

ওয়েব এগিয়ে যাচ্ছে

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

তা সত্ত্বেও, আমরা স্বীকার করি যে বিভিন্ন কারণে ওয়েবসাইটগুলির জন্য সমাধানগুলি প্রয়োগ করা সর্বদা স্বল্পমেয়াদে সম্ভব নয়:

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

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

(function () {
  // An array of all contexts to resume on the page
  const audioContextList = [];

  // An array of various user interaction events we should listen for
  const userInputEventNames = [
    'click',
    'contextmenu',
    'auxclick',
    'dblclick',
    'mousedown',
    'mouseup',
    'pointerup',
    'touchend',
    'keydown',
    'keyup',
  ];

  // A proxy object to intercept AudioContexts and
  // add them to the array for tracking and resuming later
  self.AudioContext = new Proxy(self.AudioContext, {
    construct(target, args) {
      const result = new target(...args);
      audioContextList.push(result);
      return result;
    },
  });

  // To resume all AudioContexts being tracked
  function resumeAllContexts(event) {
    let count = 0;

    audioContextList.forEach(context => {
      if (context.state !== 'running') {
        context.resume();
      } else {
        count++;
      }
    });

    // If all the AudioContexts have now resumed then we
    // unbind all the event listeners from the page to prevent
    // unnecessary resume attempts
    if (count == audioContextList.length) {
      userInputEventNames.forEach(eventName => {
        document.removeEventListener(eventName, resumeAllContexts);
      });
    }
  }

  // We bind the resume function for each user interaction
  // event on the page
  userInputEventNames.forEach(eventName => {
    document.addEventListener(eventName, resumeAllContexts);
  });
})();

এটি উল্লেখ করা উচিত যে এই কোড স্নিপেটটি আইফ্রেমের মধ্যে ইনস্ট্যান্টিয়েট করা অডিও কনটেক্সটগুলি পুনরায় শুরু করতে সহায়তা করবে না, যদি না এই কোড স্নিপেটটি আইফ্রেমের বিষয়বস্তুর সুযোগের মধ্যে অন্তর্ভুক্ত করা হয়।

আমাদের ব্যবহারকারীদের আরও ভাল পরিবেশন করা

নীতি পরিবর্তনের সাথে সাথে আমরা এমন একটি ব্যবস্থাও চালু করছি যাতে ব্যবহারকারীরা স্বয়ংক্রিয় শিক্ষা প্রত্যাশিতভাবে কাজ করছে না এমন ক্ষেত্রে বা পরিবর্তনের ফলে অব্যবহারযোগ্য হয়ে গেছে এমন ওয়েবসাইটগুলির জন্য অটোপ্লে নীতি নিষ্ক্রিয় করতে পারে৷ এই পরিবর্তনটি Chrome 71-এ নতুন নীতির সাথে চালু হবে এবং সাউন্ড সেটিংসে পাওয়া যাবে; সাইট যেখানে ব্যবহারকারী অটোপ্লে অনুমতি দিতে চান অনুমতি তালিকা যোগ করা যেতে পারে.

নতুন ব্যবহারকারীদের জন্য MEI কীভাবে তৈরি করা হয়?

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

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

প্রাক-বীজযুক্ত সাইট তালিকাটি ম্যানুয়ালি কিউরেট করার পরিবর্তে অ্যালগরিদমিকভাবে তৈরি করা হয় এবং যেকোন ওয়েবসাইট অন্তর্ভুক্ত হওয়ার যোগ্য। সাইটগুলিকে তালিকায় যুক্ত করা হয় যদি সেই সাইটটি দেখার পর্যাপ্ত ব্যবহারকারীরা সেই সাইটে অটোপ্লে অনুমতি দেয়৷ এই থ্রেশহোল্ড শতাংশ-ভিত্তিক যাতে বড় সাইটগুলির পক্ষে না যায়৷

ভারসাম্য খোঁজা

আমাদের সিদ্ধান্ত নেওয়ার প্রক্রিয়া এবং এই নীতির পিছনে নকশার যুক্তি সম্পর্কে আরও অন্তর্দৃষ্টি দিতে আমরা নতুন ডকুমেন্টেশন পোস্ট করেছি। পাশাপাশি প্রাক-বীজযুক্ত সাইট তালিকা কীভাবে কাজ করে তার নতুন ডকুমেন্টেশন।

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

প্রতিক্রিয়া