<p dir="auto">According to <a href="http://yaml.org/type/merge.html" rel="nofollow">http://yaml.org/type/merge.html</a> one can overwrite keys of merged maps. But since <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="33545204" data-permission-text="Title is private" data-url="https://github.com/symfony/symfony/issues/10902" data-hovercard-type="pull_request" data-hovercard-url="/symfony/symfony/pull/10902/hovercard" href="https://github.com/symfony/symfony/pull/10902">#10902</a> this does not work anymore, which makes merging with anchors useless.</p>
<p dir="auto">Example YAML.</p>
<div class="highlight highlight-source-yaml notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="- key-with-duplicate: &amp;alias1
    foo: bar
    foo: ignore

- key-without-duplicate: &amp;alias2
    foo: other

- changed-value-before-merge:
    foo: overwrite
    &lt;&lt; : *alias1

- changed-value-after-merge:
    &lt;&lt; : *alias1
    foo: overwrite

- multiple-merges-as-repeat:
    &lt;&lt; : *alias1
    &lt;&lt; : *alias2

- multiple-merges-as-array:
    &lt;&lt; : [*alias1, *alias2]"><pre class="notranslate">- <span class="pl-ent">key-with-duplicate</span>: <span class="pl-s">&amp;alias1</span>
    <span class="pl-ent">foo</span>: <span class="pl-s">bar</span>
    <span class="pl-ent">foo</span>: <span class="pl-s">ignore</span>

- <span class="pl-ent">key-without-duplicate</span>: <span class="pl-s">&amp;alias2</span>
    <span class="pl-ent">foo</span>: <span class="pl-s">other</span>

- <span class="pl-ent">changed-value-before-merge</span>:
    <span class="pl-ent">foo</span>: <span class="pl-s">overwrite</span>
    <span class="pl-ent">&lt;&lt; </span>: <span class="pl-s">*alias1</span>

- <span class="pl-ent">changed-value-after-merge</span>:
    <span class="pl-ent">&lt;&lt; </span>: <span class="pl-s">*alias1</span>
    <span class="pl-ent">foo</span>: <span class="pl-s">overwrite</span>

- <span class="pl-ent">multiple-merges-as-repeat</span>:
    <span class="pl-ent">&lt;&lt; </span>: <span class="pl-s">*alias1</span>
    <span class="pl-ent">&lt;&lt; </span>: <span class="pl-s">*alias2</span>

- <span class="pl-ent">multiple-merges-as-array</span>:
    <span class="pl-ent">&lt;&lt; </span>: <span class="pl-s">[*alias1, *alias2]</span></pre></div>
<p dir="auto">I tested <a href="http://yaml-online-parser.appspot.com/" rel="nofollow">http://yaml-online-parser.appspot.com/</a> and <a href="http://yamltojson.com/" rel="nofollow">http://yamltojson.com/</a> and <a href="http://nodeca.github.io/js-yaml/" rel="nofollow">http://nodeca.github.io/js-yaml/</a> and none of them works correctly.</p>
<p dir="auto">This is a meta-issue that groups all the proposed backward incompatible changes for the upcoming Symfony 3.0 version. It includes more information than <a href="https://github.com/symfony/symfony/milestones/3.0">the 3.0 milestone</a> because sometimes people propose ideas in the comments of the issues and pull requests.</p>
<h4 dir="auto">Commands</h4>
<ul dir="auto">
<li>Make <code class="notranslate">assets:install</code> even smarter and create symlinks by default (without providing the <code class="notranslate">--symlinks</code> option) (<a href="https://github.com/symfony/symfony/pull/11312" data-hovercard-type="pull_request" data-hovercard-url="/symfony/symfony/pull/11312/hovercard">ref</a>)</li>
<li>...</li>
</ul>
<h4 dir="auto">Console</h4>
<ul dir="auto">
<li><del>As one may want to rely on the asset helper to generate URIs outside from a request (i.e., in a command-line, for sending e-mails), it should not depend on the request service, but rather on request_stack, in order to be available in a wider scope. (<a href="https://github.com/symfony/symfony/issues/11653" data-hovercard-type="issue" data-hovercard-url="/symfony/symfony/issues/11653/hovercard">ref</a>, <a href="https://github.com/symfony/symfony/pull/10264" data-hovercard-type="pull_request" data-hovercard-url="/symfony/symfony/pull/10264/hovercard">related</a>)</del></li>
<li><code class="notranslate">InputInterface</code> operates only with arguments passed to the Application. I suggest to add a method that would allow to operate with an input stream (<code class="notranslate">STDIN</code> in case of CLI application). (<a href="https://github.com/symfony/symfony/issues/10844" data-hovercard-type="issue" data-hovercard-url="/symfony/symfony/issues/10844/hovercard">ref</a>)</li>
<li><del><code class="notranslate">Symfony\Component\Console\Output\OutputInteface</code> should include the following methods: <code class="notranslate">isQuiet</code>, <code class="notranslate">isVerbose</code>, <code class="notranslate">isVeryVerbose</code> and <code class="notranslate">isDebug</code>. (<a href="https://github.com/symfony/symfony/pull/10214" data-hovercard-type="pull_request" data-hovercard-url="/symfony/symfony/pull/10214/hovercard">ref</a>, <a href="https://github.com/symfony/symfony/pull/11115" data-hovercard-type="pull_request" data-hovercard-url="/symfony/symfony/pull/11115/hovercard">ref</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="52736590" data-permission-text="Title is private" data-url="https://github.com/symfony/symfony/issues/13086" data-hovercard-type="pull_request" data-hovercard-url="/symfony/symfony/pull/13086/hovercard" href="https://github.com/symfony/symfony/pull/13086">#13086</a>)</del></li>
<li><del>remove the shell feature (not that useful and bad side-effects see <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="40990727" data-permission-text="Title is private" data-url="https://github.com/symfony/symfony/issues/11750" data-hovercard-type="issue" data-hovercard-url="/symfony/symfony/issues/11750/hovercard" href="https://github.com/symfony/symfony/issues/11750">#11750</a>)</del></li>
<li>...</li>
</ul>
<h4 dir="auto">DependencyInjection</h4>
<ul dir="auto">
<li><del>Remove the concept of "scopes" for services. (<a href="https://github.com/symfony/symfony/issues/10557#issuecomment-38811755" data-hovercard-type="issue" data-hovercard-url="/symfony/symfony/issues/10557/hovercard">ref</a> <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="104959582" data-permission-text="Title is private" data-url="https://github.com/symfony/symfony/issues/15693" data-hovercard-type="pull_request" data-hovercard-url="/symfony/symfony/pull/15693/hovercard" href="https://github.com/symfony/symfony/pull/15693">#15693</a>)</del></li>
<li><del>Remove all the <code class="notranslate">*.class</code> container parameters that define the namespace of the classes of the services (<a href="https://github.com/symfony/symfony/issues/11881" data-hovercard-type="issue" data-hovercard-url="/symfony/symfony/issues/11881/hovercard">ref</a> <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="64513688" data-permission-text="Title is private" data-url="https://github.com/symfony/symfony/issues/14070" data-hovercard-type="pull_request" data-hovercard-url="/symfony/symfony/pull/14070/hovercard" href="https://github.com/symfony/symfony/pull/14070">#14070</a>)</del></li>
<li>...</li>
</ul>
<h4 dir="auto">DomCrawler</h4>
<ul dir="auto">
<li>Add support for fallback hidden fields. (<a href="https://github.com/symfony/symfony/issues/11689" data-hovercard-type="issue" data-hovercard-url="/symfony/symfony/issues/11689/hovercard">ref</a>)</li>
<li><del>Cleaning the Crawler API. (<a href="https://github.com/symfony/symfony/issues/15849" data-hovercard-type="issue" data-hovercard-url="/symfony/symfony/issues/15849/hovercard">ref</a>)</del></li>
<li>...</li>
</ul>
<h4 dir="auto">Forms</h4>
<ul dir="auto">
<li><code class="notranslate">IntegerType</code> should be used for whole integers as the name suggests and not for floats. (<a href="https://github.com/symfony/symfony/issues/10240" data-hovercard-type="issue" data-hovercard-url="/symfony/symfony/issues/10240/hovercard">ref</a>)</li>
<li><code class="notranslate">NumberType</code> should be used for floats (rendering as an <code class="notranslate">input[type="number"]</code>), and have a new option (for instance <code class="notranslate">support_locale_strings</code>) so that it renders as <code class="notranslate">input[type="text"]</code> and has the relevant attached <code class="notranslate">NumberToLocalizedStringTransformer</code>. (<a href="https://github.com/symfony/symfony/issues/10240" data-hovercard-type="issue" data-hovercard-url="/symfony/symfony/issues/10240/hovercard">ref</a>)</li>
<li>Remove duplicated HTML attributes. Right now, the attributes passed in the <code class="notranslate">attr</code> option are rendered both in the <code class="notranslate">&lt;form&gt;</code> tag and in the <code class="notranslate">&lt;div&gt;/&lt;table&gt;</code> tag of the form. (<a href="https://github.com/symfony/symfony/issues/7709" data-hovercard-type="issue" data-hovercard-url="/symfony/symfony/issues/7709/hovercard">ref</a>)</li>
<li>...</li>
</ul>
<h4 dir="auto">FrameworkBundle</h4>
<ul dir="auto">
<li><del>Methods of the base <code class="notranslate">Controller</code> class should be <code class="notranslate">protected</code> instead of <code class="notranslate">public</code> (<a href="https://github.com/symfony/symfony/issues/11294" data-hovercard-type="issue" data-hovercard-url="/symfony/symfony/issues/11294/hovercard">ref</a>)</del></li>
<li><del>Removed unused logger from DelegatingLoader</del>, see <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="9221736" data-permission-text="Title is private" data-url="https://github.com/symfony/symfony/issues/6298" data-hovercard-type="pull_request" data-hovercard-url="/symfony/symfony/pull/6298/hovercard" href="https://github.com/symfony/symfony/pull/6298">#6298</a></li>
<li>...</li>
</ul>
<h4 dir="auto">HttpFoundation</h4>
<ul dir="auto">
<li><del>Remove the request service (<a href="http://symfony.com/blog/new-in-symfony-2-4-the-request-stack" rel="nofollow">ref</a>)</del></li>
<li>Lazy initialization of Request headers. This can be a perfomance improvement for all requests which does not operate with request headers (almost all?) (<a href="https://github.com/symfony/symfony/issues/10077" data-hovercard-type="issue" data-hovercard-url="/symfony/symfony/issues/10077/hovercard">ref</a>)</li>
<li><del><code class="notranslate">Request-&gt;getRequestFormat()</code> should only rely on the request attributes. (<a href="https://github.com/symfony/symfony/pull/8967" data-hovercard-type="pull_request" data-hovercard-url="/symfony/symfony/pull/8967/hovercard">ref</a>)</del></li>
<li>Deprecate session as a service (<a href="https://github.com/symfony/symfony/issues/10557" data-hovercard-type="issue" data-hovercard-url="/symfony/symfony/issues/10557/hovercard">ref</a>)</li>
<li>...</li>
</ul>
<h4 dir="auto">HttpKernel</h4>
<ul dir="auto">
<li><del>Remove <code class="notranslate">isClassInActiveBundle()</code> method from <code class="notranslate">Kernel</code> and <code class="notranslate">KernelInterface</code> (<a href="https://github.com/symfony/symfony/issues/11652" data-hovercard-type="issue" data-hovercard-url="/symfony/symfony/issues/11652/hovercard">ref</a>)</del></li>
</ul>
<h4 dir="auto">Security</h4>
<ul dir="auto">
<li><del><code class="notranslate">supportsClass</code> and <code class="notranslate">supportAttribute</code> are actually never used in Symfony except by voters themselves. They should be removed from the <code class="notranslate">VoterInterface</code>. (<a href="https://github.com/symfony/symfony/pull/11183/files#r14050436">ref</a>)</del></li>
<li>A clear exception should be thrown if no voters voted on an attribute. So if you did a typo (e.g. <code class="notranslate">CREETE</code> instead of <code class="notranslate">CREATE</code>), you'd see a clear message, rather than nobody voting and access being granted/denied 100% of the time based on your voting strategy. (<a href="https://github.com/symfony/symfony/pull/11183/files#r14747264">ref</a>)</li>
<li>Update UserInterface and UserProviderInterface to change the name of the methods <code class="notranslate">getUsername()</code> and <code class="notranslate">loadUserByUsername()</code> because they are confusing. You can identify your users bu email for example, so hardcoding <code class="notranslate">username</code> doesn't look right (<a href="https://github.com/symfony/symfony/issues/10722" data-hovercard-type="issue" data-hovercard-url="/symfony/symfony/issues/10722/hovercard">ref</a>, <a href="https://github.com/symfony/symfony/issues/10316" data-hovercard-type="issue" data-hovercard-url="/symfony/symfony/issues/10316/hovercard">ref</a>)</li>
<li><del>Deprecate SecurityContext and move its code to the AuthorizationChecker and TokenStorage. (<a href="https://github.com/symfony/symfony/pull/11690" data-hovercard-type="pull_request" data-hovercard-url="/symfony/symfony/pull/11690/hovercard">ref</a>)</del></li>
<li>Remove the RoleInterface and the Role class in favor of using strings only for roles: <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="15763541" data-permission-text="Title is private" data-url="https://github.com/symfony/symfony/issues/8313" data-hovercard-type="pull_request" data-hovercard-url="/symfony/symfony/pull/8313/hovercard?comment_id=29796993&amp;comment_type=issue_comment" href="https://github.com/symfony/symfony/pull/8313#issuecomment-29796993">#8313 (comment)</a></li>
<li>...</li>
</ul>
<h4 dir="auto">Translation</h4>
<ul dir="auto">
<li>Replace custom and <em>hackish</em> solutions (<a href="https://github.com/symfony/symfony/pull/4884" data-hovercard-type="pull_request" data-hovercard-url="/symfony/symfony/pull/4884/hovercard">PR 4884</a>, <a href="https://github.com/symfony/symfony/pull/5547" data-hovercard-type="pull_request" data-hovercard-url="/symfony/symfony/pull/5547/hovercard">PR 5547</a>) by the standard <code class="notranslate">MessageFormatter</code> PHP class. (<a href="https://github.com/symfony/symfony/issues/6009" data-hovercard-type="issue" data-hovercard-url="/symfony/symfony/issues/6009/hovercard">ref</a>)</li>
<li>...</li>
</ul>
<h4 dir="auto">Web Profiler</h4>
<ul dir="auto">
<li><del>Remove the import/export feature of the Web Profiler. (<a href="https://twitter.com/fabpot/status/504996074684448768" rel="nofollow">ref</a>) -&gt; see <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="105215282" data-permission-text="Title is private" data-url="https://github.com/symfony/symfony/issues/15709" data-hovercard-type="pull_request" data-hovercard-url="/symfony/symfony/pull/15709/hovercard" href="https://github.com/symfony/symfony/pull/15709">#15709</a></del></li>
<li>...</li>
</ul>