<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/">
  <channel>
    <title>Blog Entries - ZF Blog</title>
    <description>Blog Entries - ZF Blog</description>
    <pubDate>Thu, 02 Jun 2016 21:15:00 +0000</pubDate>
    <generator>Zend_Feed_Writer 2 (http://framework.zend.com)</generator>
    <link>http://framework.zend.com/blog.html</link>
    <atom:link rel="self" type="application/rss+xml" href="http://framework.zend.com/blog-rss.xml"/>
    <item>
      <title>Zend Framework 3 Update for 2016-06-02</title>
      <pubDate>Thu, 02 Jun 2016 21:15:00 +0000</pubDate>
      <link>http://framework.zend.com/blog/2016-06-02-zf3-update.html</link>
      <guid>http://framework.zend.com/blog/2016-06-02-zf3-update.html</guid>
      <author>matthew@zend.com (Matthew Weier O'Phinney)</author>
      <dc:creator>Matthew Weier O'Phinney</dc:creator>
      <content:encoded><![CDATA[<p>This is an installment in an ongoing series of posts on ZF3 development status.
Since the last status update:</p>
<ul>
<li>~130 pull requests merged, and ~100 issues closed.</li>
<li>Over 30 component releases.</li>
<li>Completion of the component documentation migration.</li>
<li>Tagging of zend-mvc 3.0.</li>
<li>Completion of the new skeleton application and related installers.</li>
</ul><h2>Documentation</h2>
<p>Since the last update, we managed to complete the migration of documentation to
components, as well as publish documentation for all components!</p>
<p>You can view a list of all documented components via GitHub Pages:</p>
<ul>
<li>
<a href="https://zendframework.github.io/">https://zendframework.github.io/</a>
</li>
</ul>
<p>Each component contains a link in the topnav to scroll in the component list,
allowing you to navigate to other components.</p>
<p>Please help us thank <a href="http://www.froschdesignstudio.de">Frank Brückner</a> for the
enormous amount of assistance he provided driving this milestone to completion!</p>
<h2>zend-mvc 3.0 stability</h2>
<p>After copious testing with the skeleton application (more on that below), and
prepping components such as zend-test to work with it, we decided that zend-mvc
was ready to tag with a 3.0 stable version!</p>
<p>For those not following previous updates, the main goals of the zend-mvc v3 effort were:</p>
<ul>
<li>De-couple from other components. Many components were listed as development
requirements and suggestions due to the fact that zend-mvc contained
zend-servicemanager integrations for them. We have moved those integrations
into the components themselves.</li>
<li>Reduce dependencies to exactly what's needed for a basic zend-mvc application:
<ul>
<li>EventManager</li>
<li>HTTP</li>
<li>ModuleManager</li>
<li>Router</li>
<li>ServiceManager</li>
<li>Standard Library</li>
<li>View</li>
</ul>
</li>
<li>Split optional integrations into their own packages. These included:
<ul>
<li>Console integration (now provided via zend-mvc-console)</li>
<li>i18n integration (now provided via zend-mvc-i18n)</li>
<li>Several plugins had requirements on additional libraries, including:
<ul>
<li>PRG (uses zend-session)</li>
<li>FilePRG (uses zend-form and zend-session)</li>
<li>FlashMessenger (uses zend-session)</li>
<li>Identity (uses zend-authentication)</li>
</ul>
</li>
</ul>
</li>
</ul>
<p>During the process, we were able to remove around 75% of the code, making the
component much smaller, more maintainable, and more focused.</p>
<p>Once zend-mvc was tagged 3.0, we quickly followed up with a zend-test 3.0
release, and stable releases of zend-mvc-console, zend-mvc-i18n, and the
various zend-mvc-plugin packages.</p>
<h2>Skeleton application</h2>
<p>We'd begun refactoring the skeleton application previously, and were able to
complete the work in the past couple weeks. The new skeleton:</p>
<ul>
<li>Migrates to PSR-4 directory layout for the shipped <code>Application</code> module.</li>
<li>Relies on Composer for all autoloading, including the <code>Application</code> module.</li>
<li>Removes all translations. These were of dubious use, and were quite difficult
to maintain.</li>
<li>Depends only on zend-mvc, zend-component-installer (which automates injecting
components and modules into application configuration during installation), and
zend-skeleton-installer (more on this below).</li>
<li>We removed almost 8000 lines of code, adding only 800!</li>
</ul>
<p>zend-skeleton-installer is a new Composer plugin that prompts the user during installation to:</p>
<ul>
<li>Decide if they want a minimal install, or want to add optional packages.</li>
<li>Prompts for a number of common optional packages, including caching, logging,
console integration, i18n, etc.</li>
<li>When installation is complete, <em>it removes itself from the project!</em>
</li>
</ul>
<p>Matthew plans to blog on the code behind zend-skeleton-installer in the near future.</p>
<p>You can test out the new skeleton using the following:</p>
<pre><code class="language-bash">$ composer create-project &quot;zendframework/skeleton-application:dev-develop&quot; zend-project
</code></pre>
<p>The above will use the new develop branch, and create a project in the
directory <code>zend-project</code>.</p>
<p>Finally, we added both an updated <code>Vagrantfile</code> and Docker support to the
skeleton, allowing you to start developing in a consistent, de-coupled
environment immediately.</p>
<p>For Vagrant, after you've installed, execute:</p>
<pre><code class="language-bash">$ vagrant up
</code></pre>
<p>For Docker, you will need to use <a href="https://docs.docker.com/compose/">docker-compose</a>;
once you have that available, execute:</p>
<pre><code class="language-bash">$ docker-compose up -d --build
</code></pre>
<p>With each, we bind your host port 8080 to the container's port 80, allowing you to visit
it at http://localhost:8080/</p>
<p>We're excited about the new skeleton, and look forward to getting your feedback on it!</p>
<h2>Final milestones</h2>
<p>We have a few last milestones before we're ready to announce the completion of the
Zend Framework 3 initiatives.</p>
<p>First, because PHP 5.5 support ends at the end of June, we will be releasing a new minor
version of all components setting the minimum supported PHP version to 5.6. (Many already
have such versions in place.)</p>
<p>Second, now that the skeleton application is ready, we will be migrating our tutorials
to a new repository, converting them to Markdown and MkDocs, and updating them to follow
the new skeleton and component changes.</p>
<p>Finally, we will be deciding what the zendframework/zendframework package will look like
for a version 3 tag. In large part, it becomes unnecessary, as we can ship even the
skeleton with a minimal set of components; however, for those who want &quot;everything at
once&quot;, keeping it around as a metapackage may have value. We'll be announcing
the plans for it soon.</p>
<h2>Until next time</h2>
<p>If you want to help:</p>
<ul>
<li>Test the new skeleton (see the directions above) and provide feedback.</li>
<li>Search for <a href="https://github.com/issues?utf8=%E2%9C%93&amp;q=is:issue+org:zendframework+is:open+label:%22help+wanted%22+">help wanted</a>
or <a href="https://github.com/issues?utf8=%E2%9C%93&amp;q=is:issue+org:zendframework+is:open+label:%22EasyFix%22+">EasyFix</a>
issues (most of the latter are documentation).</li>
</ul>
<p>Many thanks to all the contributors who have provided feedback, patches, reviews,
or releases since the last update!</p>]]></content:encoded>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Announcement: ZF repository renamed!</title>
      <pubDate>Tue, 03 May 2016 16:30:00 +0000</pubDate>
      <link>http://framework.zend.com/blog/2016-05-03-zf-repo-rename.html</link>
      <guid>http://framework.zend.com/blog/2016-05-03-zf-repo-rename.html</guid>
      <author>matthew@zend.com (Matthew Weier O'Phinney)</author>
      <dc:creator>Matthew Weier O'Phinney</dc:creator>
      <content:encoded><![CDATA[<p>As <a href="/blog/2016-04-27-zf2-repo-rename.html">announced last week</a>, today, we have
<em>renamed the &quot;zf2&quot; repository on GitHub to &quot;zendframework&quot;</em>.</p>
<p>Per the <a href="https://help.github.com/articles/renaming-a-repository/">GitHub documentation on renames</a>,
existing links will be automatically redirected, and will persist as long as we
do not create a new repository with the name &quot;zf2&quot;. Redirects occur for:</p>
<ul>
<li>issues</li>
<li>wikis</li>
<li>stars</li>
<li>followers</li>
<li>git operations</li>
</ul><h2>Update your remotes</h2>
<p>While git operations pushing and pulling from the original repository URLs will
continue to work, GitHub recommends you update your git remotes to point to the
new location. You can do this with the following in the CLI:</p>
<pre><code class="language-bash">$ git remote set-url origin https://github.com/zendframework/zendframework.git
</code></pre>
<p>Note the following:</p>
<ul>
<li>Replace <code>origin</code> with the name of the remote you use locally; <code>upstream</code> is
also commonly used. Run <code>git remote -v</code> to see what you're actually using.</li>
<li>Valid remote URLs now include:
<ul>
<li>
<code>https://github.com/zendframework/zendframework.git</code>
</li>
<li>
<code>git://github.com/zendframework/zendframework.git</code>
</li>
<li>
<code>git@github.com:zendframework/zendframework.git</code>
</li>
</ul>
</li>
</ul>
<h2>Composer</h2>
<p>Because <a href="https://packagist.org/">Packagist</a> points to GitHub, it will
seamlessly redirect. Additionally, all sha1s for all commit remain identical.
As such, there should be no impact to end-users for the change for existing
installs.</p>
<p>We have updated Packagist to point to the new URL as well, so that as
users update, their <code>composer.lock</code> files will start pointing to the new
URL.</p>]]></content:encoded>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Announcement: ZF repository rename 2016-05-03</title>
      <pubDate>Wed, 27 Apr 2016 14:45:00 +0000</pubDate>
      <link>http://framework.zend.com/blog/2016-04-27-zf2-repo-rename.html</link>
      <guid>http://framework.zend.com/blog/2016-04-27-zf2-repo-rename.html</guid>
      <author>matthew@zend.com (Matthew Weier O'Phinney)</author>
      <dc:creator>Matthew Weier O'Phinney</dc:creator>
      <content:encoded><![CDATA[<p>In contrast to Zend Framework 2, which was a complete rewrite and break with
the architecture of Zend Framework 1, the Zend Framework 3 initiative is more
of an evolutionary change. We are laser-focused on keeping as much backwards
compatibility as possible, and providing reasonable migration steps for our
users. Instead of moving development to a new repository, we have split code
into multiple component repositories, and made the main Zend Framework repository
a &quot;meta&quot; repository, containing dependency information only.</p>
<p>Another way of putting it: changes to the main repository are happening
incrementally, and version 3 will just be a new major version update within
the existing repository.</p>
<p>However, such evolutionary change poses a slight logistical problem: the
repository is currently named &quot;zf2&quot;.</p><p>As such, we've decided to rename the repository to remove the version identifier.
It will become simply &quot;zendframework&quot;.</p>
<p>This naming is already reflected in our Composer package, which is named
&quot;zendframework/zendframework&quot;. Additionally, GitHub will provide long-lived
redirects for all links to the repository, including those to issues, comments,
pull requests, etc.; those redirects also work at the git level for each of
HTTPS, SSH, and git protocol access. Because no sha1s change, this means that
Composer installs will not suffer any issues, either.</p>
<p>We've also verified with GitHub that references of the form
<code>zendframework/zf2#...</code> within commits, comments, etc. will continue to work,
and redirect to the new location.</p>
<p>With all our concerns satifisied, <strong>we'll be making the change on 3 May 2016</strong>,
and will post to the blog with details on how to update your git remotes to
point to the renamed repository at that time.</p>]]></content:encoded>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Zend Framework 3 Update for 2016-04-21</title>
      <pubDate>Thu, 21 Apr 2016 21:45:00 +0000</pubDate>
      <link>http://framework.zend.com/blog/2016-04-21-zf3-update.html</link>
      <guid>http://framework.zend.com/blog/2016-04-21-zf3-update.html</guid>
      <author>matthew@zend.com (Matthew Weier O'Phinney)</author>
      <dc:creator>Matthew Weier O'Phinney</dc:creator>
      <content:encoded><![CDATA[<p>This is an installment in an ongoing series of posts on ZF3 development status.
In the last three weeks, we've done a lot:</p>
<ul>
<li>~160 pull requests merged, and ~110 issues closed.</li>
<li>Over 60 component releases.</li>
<li>Completion of the zend-mvc version 3 refactors.</li>
<li>All components are now forwards-compatible with existing v3 releases, including those that depend on zend-stdlib.</li>
<li>Progress on the documentation initiatives, including 11 new components documented.</li>
<li>Announcement of issue closures.</li>
</ul><h2>MVC Refactor</h2>
<p>In the <a href="/blog/2016-03-24-zf3-update.html">previous update</a>, we provided a
<a href="https://github.com/zendframework/maintainers/wiki/zend-mvc-v3-refactor:-reduce-components">roadmap for the zend-mvc v3 refactor</a>;
at the time, we'd just begun the initiative, but still had the bulk of the work remaining.</p>
<p>As of last week, however, we have completed all tasks related to the refactor! These include:</p>
<ul>
<li>a component installer Composer plugin, which will automatically inject
installed components into application configuration as modules. (It is also
forwards-compatible with upcoming Expressive releases!)</li>
<li>console functionality as a separate component (<a href="https://zendframework.github.io/zend-mvc-console">zend-mvc-console</a>).</li>
<li>separation of controller plugins with additional dependencies into their own
packages, including:
<ul>
<li>
<a href="https://zendframework.github.io/zend-mvc-plugin-prg">PostRedirectGet</a>
</li>
<li>
<a href="https://zendframework.github.io/zend-mvc-plugin-fileprg">FilePostRedirectGet</a>
</li>
<li>
<a href="https://zendframework.github.io/zend-mvc-plugin-flashmessenger">FlashMessenger</a>
</li>
<li>
<a href="https://zendframework.github.io/zend-mvc-plugin-identity">Identity</a>
</li>
</ul>
</li>
<li>separation of i18n integration into a separate component (<a href="https://zendframework.github.io/zend-mvc-i18n">zend-mvc-i18n</a>).</li>
<li>separation of the code for wiring zend-di into zend-servicemanager into a
dedicated component (<a href="https://zendframework.github.io/zend-servicemanager-di">zend-servicemanager-di</a>).</li>
<li>removal of all factories and integrations with components that fall outside
the core dependencies.</li>
</ul>
<p>This latter required that we move the various factories, service integrations,
and event listener wiring code into the components themselves. This affected
eight components, though we ended up addressing another five components that were
already defining factories for zend-servicemanager as well:</p>
<ul>
<li>zend-filter</li>
<li>zend-form</li>
<li>zend-hydrator</li>
<li>zend-inputfilter</li>
<li>zend-log</li>
<li>zend-navigation</li>
<li>zend-serializer</li>
<li>zend-validator</li>
<li>zend-cache</li>
<li>zend-db</li>
<li>zend-mail</li>
<li>zend-paginator</li>
<li>zend-session</li>
</ul>
<p>For each of these, we created two new classes in their defined namespaces,
<code>ConfigProvider</code> and <code>Module</code>. The first is an invokable class returning
configuration, which might include service configuration, plugin configuration,
etc. <code>Module</code> is a class specific to the Zend Framework ecosystem, and returns
configuration, but, in several cases, also wired other code into the zend-mvc
workflow. All of the above components received new minor releases once these
were in place, and zend-mvc was updated to remove dependencies on them.</p>
<p>The core dependencies in zend-mvc are now:</p>
<ul>
<li>zend-eventmanager</li>
<li>zend-http</li>
<li>zend-modulemanager</li>
<li>zend-router</li>
<li>zend-servicemanager</li>
<li>zend-stdlib</li>
<li>zend-view</li>
</ul>
<p>Once we were done, the lines of code had dropped to approximately 25% of the size
in the version 2 releases!</p>
<h2>Skeleton application</h2>
<p>With the zend-mvc refactor complete, we decided to work on the skeleton application.</p>
<p>Feedback we've had includes:</p>
<ul>
<li>While having i18n support is interesting in terms of seeing how it's done,
it's mostly worthless in the skeleton application. The provided translations are
only valid for the home page shipped with the skeleton, which is replaced essentially
100% of the time with custom content. Additionally, it poses maintenance overhead
with regards to reviewing and accepting new translations. Finally, with the split
of zend-mvc-i18n, keeping it in meant adding additional dependencies which might
never be used.</li>
<li>Related, we've had a lot of folks indicate that they'd like an option for a minimal
skeleton. Many developers don't want the i18n, console, forms, cache, logging, and
other facilities, or want to pick and choose which ones they configure.</li>
<li>As PSR-0 is deprecated, our skeleton should reflect PSR-4 for the default
<code>Application</code> module.</li>
<li>Related, we want to encourage using composer for all autoloading.</li>
</ul>
<p>To get the ball rolling, I created a <a href="https://github.com/zendframework/ZendSkeletonApplication/pull/329">pull request proposing a streamlined skeleton</a>.
This has already generated a fair bit of discussion, and we have a number of new
ideas we're going to investigate, including setting up Expressive-like installation
questions to allow bringing in common features during the first install.</p>
<h2>JSON Refactor</h2>
<p>We also did some refactoring of the zend-json component. Several users have
complained that it includes too much: the JSON-RPC functionality is not
generally useful for those who only want JSON de/serialization, and the
XML2JSON implementation is only needed by a subset of users.</p>
<p>As such, we split it into three:</p>
<ul>
<li>
<a href="https://zendframework.github.io/zend-json/">zend-json</a> contains the JSON
de/serialization logic <em>only</em>, starting with its v3 release.</li>
<li>
<a href="https://zendframework.github.io/zend-json-server">zend-json-server</a> contains
the JSON-RPC server implementation.</li>
<li>
<a href="https://zendframework.github.io/zend-xml2json">zend-xml2json</a> contains
the XML2JSON implementation.</li>
</ul>
<p>We'd like to thank <a href="https://github.com/webit4me">Ali Bahman</a> for his assistance
with these changes!</p>
<h2>Forwards compatibility</h2>
<p>This week, we discovered half-a-dozen components that declare a dependency on
zend-stdlib, but which had not been updated to allow usage with zend-stdlib's
v3 releases. As such, we quickly updated each to do so, releasing new
maintenance releases when ready. These include:</p>
<ul>
<li>zend-code</li>
<li>zend-expressive-skeleton</li>
<li>zend-ldap</li>
<li>zend-mime</li>
<li>zend-soap</li>
<li>zend-xmlrpc</li>
</ul>
<h2>Documentation</h2>
<p>With the MVC initiatives complete, we have begun working on the documentation
in earnest again.</p>
<p>The first thing we did was recognize that while it's nice to be publishing the
documentation, we really need mechanisms for navigating to other components. As such,
we created a topnav button that, when clicked, fetches a list of components with
documentation, and slides the list in from the top of the page.</p>
<p>We've also been either documenting components as we create them (see the MVC
plugins and JSON changes, above), or publishing documentation as we create new
releases on components we update. Since the last update, we've published documentation
for the following components:</p>
<ul>
<li>
<a href="https://zendframework.github.io/zend-json/">zend-json</a>
</li>
<li>
<a href="https://zendframework.github.io/zend-json-server/">zend-json-server</a>
</li>
<li>
<a href="https://zendframework.github.io/zend-mime/">zend-mime</a>
</li>
<li>
<a href="https://zendframework.github.io/zend-mvc-plugin-fileprg/">zend-mvc-plugin-fileprg</a>
</li>
<li>
<a href="https://zendframework.github.io/zend-mvc-plugin-flashmessenger/">zend-mvc-plugin-flashmessenger</a>
</li>
<li>
<a href="https://zendframework.github.io/zend-mvc-plugin-identity/">zend-mvc-plugin-identity</a>
</li>
<li>
<a href="https://zendframework.github.io/zend-mvc-plugin-prg/">zend-mvc-plugin-prg</a>
</li>
<li>
<a href="https://zendframework.github.io/zend-servicemanager-di/">zend-servicemanager-di</a>
</li>
<li>
<a href="https://zendframework.github.io/zend-soap/">zend-soap</a>
</li>
<li>
<a href="https://zendframework.github.io/zend-xml2json/">zend-xml2json</a>
</li>
<li>
<a href="https://zendframework.github.io/zend-xmlrpc/">zend-xmlrpc</a>
</li>
</ul>
<p>Many thanks to <a href="http://www.froschdesignstudio.de">Frank Brückner</a> for the copious
documentation updates he's provided!</p>
<p>There's plenty left to do, however (32 components left at the time of writing).
We've <a href="https://github.com/zendframework/maintainers/wiki/Documentation-TODO">created a list of components and tasks to perform</a>
if you are interested in helping!</p>
<h2>Issue closures</h2>
<p>Last week, <a href="https://blog.hock.in">Gary Hockin</a> posted to the ZF blog about a
<a href="/blog/2016-04-11-issue-closures.html">plan to perform housekeeping of issues posted against the main zendframework repository</a>.
The basic summary is: issues against the main ZF repository have been tagged as
<a href="https://github.com/zendframework/zf2/issues?q=is:open+is:issue+label:%22To+Be+Closed%22">&quot;To Be Closed&quot;</a>,
and will be closed in early May <em>unless you comment on an issue and tag user @GeeH before 3rd May 2016</em>.</p>
<h2>Pull request and issue activity</h2>
<p>Since the last update, we've
<a href="https://github.com/issues?utf8=%E2%9C%93&amp;q=is:pr+is:merged+org:zendframework+closed:%222016-03-24+..+2016-04-21%22+">merged around 160 pull requests</a>,
and <a href="https://github.com/issues?utf8=%E2%9C%93&amp;q=is:issue+org:zendframework+closed:%222016-03-24+..+2016-04-21%22+">resolved around 110 issues</a>.
(links require a GitHub account).</p>
<h2>Notable releases</h2>
<p>As noted at the beginning of this post, we've done over 60 component releases
since the last update (approximately four weeks ago). Notable amongst them:</p>
<ul>
<li>
<a href="http://framework.zend.com/blog/zend-framework-1-12-18-released.html">Zend Framework 1.12.18</a>
</li>
<li>
<a href="https://github.com/zendframework/zend-json/releases/tag/3.0.0">zend-json 3.0.0</a>, which removes
the JSON-RPC and XML2JSON functionality (as those are now in separate components)</li>
<li>
<a href="https://github.com/zendframework/zend-inputfilter/releases/tag/release-2.6.1">zend-inputfilter 2.6.1</a>,
which fixes a long-standing issue with localization of <code>NotEmpty</code> validation
messages generated for required inputs.</li>
<li>
<a href="https://github.com/zendframework/zend-math/releases/tag/release-2.7.0">zend-math 2.7.0</a>
provides a security hardening patch for <code>Zend\Math\Rand</code>, forcing usage of PHP 7's
<code>random_bytes()</code> and <code>random_int()</code> when available, and requiring ircmaxell/RandomLib
for earlier PHP versions.</li>
<li>
<a href="https://github.com/zendframework/zend-session/releases/tag/release-2.7.0">zend-session 2.7.0</a>
updates the component to use ext/mongodb + the MongoDB PHP client library instead of ext/mongo,
and adds session identifier validation by default.</li>
<li>
<a href="https://github.com/zendframework/zend-db/releases/tag/release-2.7.1">zend-db 2.7.1</a>
updates the <code>Pgsql</code> adapter to accept the <code>charset</code> option; fixes <code>Zend\Db\Sql\Insert</code> to properly
manage arrays of column names when generating SQL INSERT statements; fixes an issue with how row
counts were reported in <code>Oci8</code> result sets; and updates the <code>IbmDb2</code> adapter to allow <code>#</code> characters
in identifiers.</li>
<li>
<a href="https://github.com/zendframework/zend-cache/releases/tag/release-2.7.0">zend-cache 2.7.0</a>
offers a ton of new features, including a new APCu adapter, upgraded support for XCache and Redis,
and numerous bugfixes.</li>
<li>
<a href="https://github.com/zendframework/zend-stdlib/releases/tag/release-2.7.7">zend-stdlib 2.7.7</a> and
<a href="https://github.com/zendframework/zend-stdlib/releases/tag/release-3.0.1">zend-stdlib 3.0.1</a>
fix declaration of <code>Zend\Json\Json::GLOB_BRACE</code> when on systems based on
non-gcc versions of glob.</li>
</ul>
<h2>Until next time</h2>
<p>If you want to help:</p>
<ul>
<li>Help complete the <a href="https://github.com/zendframework/maintainers/wiki/Documentation-TODO">documentation migration</a>!</li>
<li>Test the <a href="https://github.com/zendframework/ZendSkeletonApplication/pull/329">new skeleton</a>
and provide feedback.</li>
<li>Review <a href="https://github.com/zendframework/zf2/issues?q=is:open+is:issue+label:%22To+Be+Closed%22">issues to be closed</a>
</li>
<li>Search for <a href="https://github.com/issues?utf8=%E2%9C%93&amp;q=is:issue+org:zendframework+is:open+label:%22help+wanted%22+">help wanted</a>
or <a href="https://github.com/issues?utf8=%E2%9C%93&amp;q=is:issue+org:zendframework+is:open+label:%22EasyFix%22+">EasyFix</a>
issues (most of the latter are documentation).</li>
</ul>
<p>Many thanks to all the contributors who have provided feedback, patches, reviews,
or releases since the last update!</p>]]></content:encoded>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Zend Framework 1.12.18 Released!</title>
      <pubDate>Wed, 13 Apr 2016 16:30:00 +0000</pubDate>
      <link>http://framework.zend.com/blog/zend-framework-1-12-18-released.html</link>
      <guid>http://framework.zend.com/blog/zend-framework-1-12-18-released.html</guid>
      <author>matthew@zend.com (Matthew Weier O'Phinney)</author>
      <dc:creator>Matthew Weier O'Phinney</dc:creator>
      <content:encoded><![CDATA[<p>The Zend Framework community is pleased to announce the immediate availability
of:</p>
<ul>
<li>Zend Framework <strong>1.12.18</strong>
</li>
</ul>
<p>You can download Zend Framework at:</p>
<ul>
<li>
<a href="http://framework.zend.com/downloads/latest#ZF1">http://framework.zend.com/downloads/latest#ZF1</a>
</li>
</ul><h2>Security Fixes</h2>
<p>Zend Framework 1.12.18 includes a fix for <a href="/security/advisory/ZF2016-01">security advisory ZF2016-01</a>,
a potential insufficient entropy vulnerability in a number of methods exposed
in Zend Framework 1, including:</p>
<ul>
<li>
<code>Zend_Ldap_Attribute::createPassword</code>
</li>
<li>
<code>Zend_Form_Element_Hash::_generateHash</code>
</li>
<li>
<code>Zend_Gdata_HttpClient::filterHttpRequest</code>
</li>
<li>
<code>Zend_Filter_Encrypt_Mcrypt::_srand</code>
</li>
<li>
<code>Zend_OpenId::randomBytes</code>
</li>
</ul>
<p>Moreover, the fix mitigates a flaw in <code>openssl_random_pseudo_bytes()</code>, ensuring
sufficient entropy will be used for any random number generated.</p>
<h2>Other changes</h2>
<p>In addition to the security patch, the release includes fourteen other patches,
primarily around documentation. You can view a full list at:</p>
<ul>
<li>
<a href="/changelog/1.12.18">Zend Framework 1.12.18 Changelog</a>
</li>
</ul>
<p>Many thanks to our contributors, and particularly the maintainers who
coordinated this version: Frank Brückner, Rob Allen, and Enrico Zimuel.</p>]]></content:encoded>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Issues, Tags, and Closures (oh my)</title>
      <pubDate>Tue, 12 Apr 2016 17:45:00 +0000</pubDate>
      <link>http://framework.zend.com/blog/2016-04-11-issue-closures.html</link>
      <guid>http://framework.zend.com/blog/2016-04-11-issue-closures.html</guid>
      <author>gary@hock.in (Gary Hockin)</author>
      <dc:creator>Gary Hockin</dc:creator>
      <content:encoded><![CDATA[<p>Hello Zend Frameworkians.</p>
<p>I want to make you aware of some upcoming changes to the issues that are
currently logged in GitHub. We currently have 426 open issues that are logged
against the (now) meta <a href="https://github.com/zendframework/zf2">zf2 repository</a>.
The vast majority of these are now in the wrong place, as we've split our once
monolithic single repository into the many single component repositories. These
issues should be moved from the zf2 repository to the correct component that
the issue relates to.</p>
<p>In preparation for this, we've been doing a little housekeeping and have
already closed a few minor issues that have been open since before we even used
GitHub for issue tracking. Matthew, Enrico and I also had a long discussion at
Midwest PHP on the best way to handle these issues, and we came up with a plan
of attack that hopefully will allow us to close off a bunch of historical
issues that are no longer relevant, and then move issues that need to be moved
to the correct place.</p><p>You may have noticed that over the last few weeks, a number of issues have been
tagged with the new label of &quot;To Be Closed&quot;. These are issues that have been
open for a number of years and still haven't been fixed. Its probable that a
number of these issues <em>should not be closed</em> as they are still relevant all
this time later (after all, just because an issue has been open for many years
does not mean that it will never be addressed). However, at some point these
issues need to be triaged so that issues that are old and not relevant can be
closed, and this is the convenient time.</p>
<p>So, in early may, all the issues that are tagged with &quot;To Be Closed&quot; will be
closed. <strong>If you feel an issue needs to remain open for any reason, then please
comment on the issue with a mention of my username (GeeH)</strong>. I will then remove
the &quot;To Be Closed&quot; tag. Next, no sooner than the 3rd May 2016, we will run a script
that will automatically close every tagged issue, commenting on it to advise
the original author to re-open an issue on the correct repository if they feel
that issue is still valid.</p>
<p>Once this has been done, we will be left with around 100-150 issues by my
estimation. Most of these have already been labelled with the correct
repository to move them to (thanks to the sterling work of the community). The
next step will be to run a script that opens a new issue with the same body
text on the correct repository, adding a link to the original issue on the
central zf2 repo. A comment will be added referencing the new issue on the
original, and the original will be closed.</p>
<p>Hopefully, once this process is complete, we will be left with a few issues
that are either in the right place (after all, some issues will relate to the
meta package on the zf2 repository), or can be moved by hand.</p>
<blockquote>
<h2>TLDR</h2>
</blockquote>
<blockquote>
<p>You need to comment on an issue mentioning <em>GeeH</em> BEFORE the 3rd
May 2016 to ensure it remains open after that date (if it's currently tagged
<a href="https://github.com/zendframework/zf2/issues?q=is:open+is:issue+label:%22To+Be+Closed%22">&quot;To Be Closed&quot;</a>).</p>
</blockquote>]]></content:encoded>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Zend Framework 3 Update for 2016-03-24</title>
      <pubDate>Thu, 24 Mar 2016 20:45:00 +0000</pubDate>
      <link>http://framework.zend.com/blog/2016-03-24-zf3-update.html</link>
      <guid>http://framework.zend.com/blog/2016-03-24-zf3-update.html</guid>
      <author>matthew@zend.com (Matthew Weier O'Phinney)</author>
      <dc:creator>Matthew Weier O'Phinney</dc:creator>
      <content:encoded><![CDATA[<p>This is an installment in an ongoing series of posts on ZF3 development status.
It's been more than a month since the last update, and we've been quite
busy with:</p>
<ul>
<li>~160 pull requests merged, and ~125 issues closed.</li>
<li>~60 component releases.</li>
<li>Completion of the zend-servicemanager/zend-eventmanager migrations.</li>
<li>Completion of the component/module installer.</li>
<li>Progress on the zend-mvc version 3 changes, including separation of routing
and console tooling to separate packages.</li>
<li>Publication of documentation for 5 components to GitHub Pages.</li>
</ul><h2>Compatibility Migrations</h2>
<p>During the first week of March, we completed the forwards compatibility
migrations of components. As a reminder, we were working on updating components
that depend on any of:</p>
<ul>
<li>zend-eventmanager</li>
<li>zend-servicemanager</li>
<li>zend-stdlib</li>
</ul>
<p>to be forwards compatible with the version 3 releases of each. In particular,
the first two have version 2 releases that allow developers to make their
code forwards compatible with the version 3 releases, and we were doing
precisely that with the various Zend Framework components. As of 2 March 2016,
we completed this task — a major milestone in the ZF3 initiative!</p>
<p>The following component releases were made since the <a href="/blog/2016-02-12-zf3-biweekly-update.html">last blog update</a>
and mark the current stable versions that are forwards compatible with the v3
releases:</p>
<ul>
<li>
<a href="https://github.com/zendframework/zend-authentication/releases/tag/2.5.3">zend-authentication 2.5.3</a>
</li>
<li>
<a href="https://github.com/zendframework/zend-barcode/releases/tag/2.6.0">zend-barcode 2.6.0</a>
</li>
<li>
<a href="https://github.com/zendframework/zend-captcha/releases/tag/2.5.4">zend-captcha 2.5.4</a>
</li>
<li>
<a href="https://github.com/zendframework/zend-db/releases/tag/2.7.0">zend-db 2.7.0</a>
</li>
<li>
<a href="https://github.com/zendframework/zend-eventmanager/releases/tag/3.0.1">zend-eventmanager 3.0.1</a> (which updates the component to use zend-stdlib v3)</li>
<li>
<a href="https://github.com/zendframework/zend-file/releases/tag/2.6.1">zend-file 2.6.1</a>
</li>
<li>
<a href="https://github.com/zendframework/zend-form/releases/tag/2.7.0">zend-form 2.7.0</a>
</li>
<li>
<a href="https://github.com/zendframework/zend-hydrator/releases/tag/1.1.0">zend-hydrator 1.1.0</a>
</li>
<li>
<a href="https://github.com/zendframework/zend-hydrator/releases/tag/2.1.0">zend-hydrator 2.1.0</a>
</li>
<li>
<a href="https://github.com/zendframework/zend-inputfilter/releases/tag/2.6.0">zend-inputfilter 2.6.0</a>
</li>
<li>
<a href="https://github.com/zendframework/zend-log/releases/tag/2.7.1">zend-log 2.7.1</a>
</li>
<li>
<a href="https://github.com/zendframework/zend-mail/releases/tag/2.6.1">zend-mail 2.6.1</a>
</li>
<li>
<a href="https://github.com/zendframework/zend-modulemanager/releases/tag/2.7.1">zend-modulemanager 2.7.1</a>
</li>
<li>
<a href="https://github.com/zendframework/zend-mvc/releases/tag/2.7.3">zend-mvc 2.7.3</a>
</li>
<li>
<a href="https://github.com/zendframework/zend-navigation/releases/tag/2.6.1">zend-navigation 2.6.1</a>
</li>
<li>
<a href="https://github.com/zendframework/zend-paginator/releases/tag/2.6.0">zend-paginator 2.6.0</a>
</li>
<li>
<a href="https://github.com/zendframework/zend-progressbar/releases/tag/2.5.2">zend-progressbar 2.5.2</a>
</li>
<li>
<a href="https://github.com/zendframework/zend-session/releases/tag/2.6.2">zend-session 2.6.2</a>
</li>
<li>
<a href="https://github.com/zendframework/zend-test/releases/tag/2.6.1">zend-test 2.6.1</a>
</li>
<li>
<a href="https://github.com/zendframework/zend-uri/releases/tag/2.5.2">zend-uri 2.5.2</a>
</li>
<li>
<a href="https://github.com/zendframework/zend-validator/releases/tag/2.6.0">zend-validator 2.6.0</a>
</li>
<li>
<a href="https://github.com/zendframework/zend-view/releases/tag/2.6.5">zend-view 2.6.5</a>
</li>
</ul>
<p>In addition to the migration changes, we made a number of other updates to zend-mvc, including:</p>
<ul>
<li>addition of a new <code>MiddlewareListener</code>, allowing routing to PSR-7 middleware in the MVC layer.</li>
<li>modifications to the <code>EventManagerAwareInterface</code> initializers; since shared managers are
injected in <code>EventManager</code> instances via the constructor in zend-eventmanager v3, the initializers
needed changes in order to work with both v2 and v3.</li>
<li>
<code>AbstractController::getServiceLocator()</code> now raises an <code>E_USER_DEPRECATED</code>
notice. zend-servicemanager v3 removes the <code>ServiceLocatorAwareInterface</code>, and
zend-mvc will remove the implementations with version 3. Users should start
updating their controllers to accept dependencies via constructor injection.</li>
</ul>
<p>The above are messaged in more detail in the <a href="http://zendframework.github.io/zend-mvc/migration/">zend-mvc migration guide</a>.</p>
<h2>Component / Module Installer</h2>
<p>One goal for zend-mvc is to reduce the number of dependencies. Much of the
functionality within zend-mvc is not directly related to execution of the MVC,
but rather integrating components. Typically this is done by either providing and
wiring factories for components, or providing and/or wiring event listeners for
components.</p>
<p>We already have functionality that allows doing these tasks via the
zend-modulemanager component, which means we can expose components as application
modules. However, this creates an installation issue: just like modules, you would need to:</p>
<ol>
<li>Install the package containing the module.</li>
<li>Enable the module in your application.</li>
</ol>
<p>To automate the second task, we developed <a href="https://zendframework.github.io/zend-component-installer">zend-component-installer</a>
back in December.  As part of the current milestones, we completed that
component, by making the following changes:</p>
<ul>
<li>It now acts as a <a href="https://getcomposer.org/doc/articles/plugins.md">composer plugin</a>.
You install it as a development dependency, and it will then inspect any
package you install to see if it can handle installation tasks.
This vastly simplifies the previous iteration, which required downloading
a self-updating PHAR to install the composer scripts within an application.</li>
<li>It now prompts you to ask which file to inject the detected component or
module into, allowing you to choose from:
<ul>
<li>
<code>config/application.config.php</code> (vanilla zend-mvc application)</li>
<li>
<code>config/modules.config.php</code> (Apigility application)</li>
<li>
<code>config/development.config.php</code> (application using zend-development-mode)</li>
<li>
<code>config/config.php</code> (for Expressive users using the expressive-config-manager)</li>
<li>or &quot;do not inject&quot;.</li>
</ul>
</li>
<li>It now prompts you to ask if you want to use the selection made on additional
packages being installed.</li>
</ul>
<p>We've become quite excited about the possibilities Composer plugins and
installer scripts offer, and plan to leverage them as much as possible!</p>
<h2>zend-mvc v3 progress</h2>
<p>Several weeks ago, we created a <a href="https://github.com/zendframework/maintainers/wiki/zend-mvc-v3-refactor:-reduce-components">detailed plan for the zend-mvc v3 refactor</a>.
The work is primarily around reducing the number of dependencies zend-mvc
requires; the above work on the component installer directly enables these changes,
but much more needs to be done.</p>
<p>Since we posted that, we've also started work on the various milestones it details.
In particular, we've done the following:</p>
<ul>
<li>Created the <a href="https://zendframework.github.io/zend-router/">zend-router</a> component,
to provide all routing capabilities. This reduces the amount of code in zend-mvc
tremendously, and also makes it easier to re-use routing in other projects
(e.g., <a href="https://github.com/zendframework/zend-expressive-zendrouter/pull/6">zend-expressive-zendrouter</a>).
We also removed console routing from the component, letting it focus on HTTP
routing only (more on this).</li>
<li>Created the <a href="https://zendframework.github.io/zend-mvc-console/">zend-mvc-console</a>
component, to provide integration between zend-console, zend-mvc, zend-router,
and zend-view. Essentially, all console-related functionality from zend-mvc,
zend-router, and zend-view were pushed into this component.</li>
<li>Created <a href="https://zendframework.github.io/zend-mvc-plugin-prg/">zend-mvc-plugin-prg</a>,
which makes a standalone component out of the <code>prg()</code> controller plugin. This is the
first of <a href="https://github.com/zendframework/maintainers/wiki/zend-mvc-v3-refactor:-reduce-components#split-out-some-controller-plugins">several component plugins</a>
being developed.</li>
</ul>
<p>As part of this effort, we are <a href="https://github.com/zendframework/zend-mvc/blob/develop/doc/book/migration/to-v3-0.md">documenting migration steps</a>
needed by end-users, to ensure that developers will be able to update their
applications once version 3 is tagged.</p>
<h2>Documentation</h2>
<p>The documentation effort was put on the back-burner during these past few weeks so that
we can focus on the development efforts. Regardless, we managed to publish 5 components
to GitHub Pages:</p>
<ul>
<li>
<a href="https://zendframework.github.io/zend-barcode/">zend-barcode</a>
</li>
<li>
<a href="https://zendframework.github.io/zend-mvc/">zend-mvc</a>
</li>
<li>
<a href="https://zendframework.github.io/zend-mvc-console/">zend-mvc-console</a>
</li>
<li>
<a href="https://zendframework.github.io/zend-mvc-plugin-prg/">zend-mvc-plugin-prg</a>
</li>
<li>
<a href="https://zendframework.github.io/zend-router/">zend-router</a>
</li>
</ul>
<p>Additionally, a number of contributors, and notably <a href="http://www.froschdesignstudio.de">Frank Brückner</a>,
have been providing patches to resolve issues created following the automated
documentation migration.</p>
<h2>Diactoros, Stratigility, and Expressive</h2>
<p>A fair number of issues and feature patches have been reported on the <a href="https://github.com/zendframework/zend-diactoros">Diactoros (PSR-7)</a>,
<a href="https://github.com/zendframework/zend-stratigility">Stratigility (PSR-7 middleware foundation)</a>, and
<a href="https://zendframework.github.io/zend-expressive/">Expressive</a> projects, and we had
a short sprint to resolve these.</p>
<ul>
<li>The latest version of Diactoros is <a href="https://github.com/zendframework/zend-diactoros/releases/tag/1.3.5">1.3.5</a>,
and it incorporates around 20 bugfixes and documentation fixes; among others,
if fixes detection of HTTP/2 requests in the <code>ServerRequestFactory</code>.</li>
<li>The latest version of Stratigiliy, <a href="https://github.com/zendframework/zend-stratigility/releases/tag/1.2.0">1.2.0</a>,
makes the behavior of its internal <code>Response</code> class less error-prone following
calls to <code>end()</code>. Additionally, it:
<ul>
<li>ensures that exception details are not emitted in production mode, and makes
production mode the default.</li>
<li>adds a <code>FinalHandler::setOriginalResponse()</code> method, to allow injection
after instantiation.</li>
<li>adds support for catching <code>Throwable</code> errors in PHP 7 applications within
the dispatcher.</li>
<li>provides a more meaningful <code>InvalidMiddlewareException</code> that is raised by
<code>MiddlewarePipe::pipe()</code> for non-callable middleware.</li>
</ul>
</li>
<li>
<a href="https://github.com/zendframework/zend-expressive-skeleton/releases/tag/1.0.1">zend-expressive-skeleton</a>
provides a number of fixes:
<ul>
<li>It updates the Pimple container script to cache factory instances for re-use.</li>
<li>It updates the <code>composer.json</code> to allow installing zend-servicemanager v3,
whoops v2, and ProxyManager v2.</li>
<li>It fixes an issue in the installer whereby specified constraints were not
being passed to Composer prior to dependency resolution, resulting in
stale dependencies.</li>
<li>It removes error/exception display from the shipped default error templates,
to make them secure by default.</li>
</ul>
</li>
<li>
<a href="https://github.com/zendframework/zend-expressive-zendviewrenderer/releases/tag/1.1.0">zend-expressive-zendviewrenderer 1.1.0</a>
updates the component to be forward-compatible with the zend-servicemanager
and zend-eventmanager v3 releases.</li>
<li>
<a href="https://github.com/zendframework/zend-expressive-zendrouter/releases/tag/1.1.0">zend-expressive-zendrouter 1.1.0</a>
updates the component to depend on zend-router instead of zend-mvc.</li>
</ul>
<h2>Pull request and issue activity</h2>
<p>Since the last update, we've
<a href="https://github.com/issues?utf8=%E2%9C%93&amp;q=is:pr+is:merged+org:zendframework+closed:%222016-02-12+..+2016-03-24%22">merged around 160 pull requests</a>,
and <a href="https://github.com/issues?utf8=%E2%9C%93&amp;q=is:issue+org:zendframework+closed:%222016-02-12+..+2016-03-24%22+">resolved around 125 issues</a>.
(links require a GitHub account).</p>
<p>Unlike previous posts, we are not detailing every component release this time;
the sheer number of them (around 60!) would result in a very long read!</p>
<h2>Until next time</h2>
<p>If you want to help:</p>
<ul>
<li>Help complete the <a href="https://github.com/issues?utf8=%E2%9C%93&amp;q=is:open+is:issue+org:zendframework+label:documentation+label:EasyFix">documentation migration</a>!</li>
<li>You can help with the <a href="https://github.com/zendframework/maintainers/wiki/zend-mvc-v3-refactor:-reduce-components">MVC milestone</a>;
the linked page provides plenty of detail on how you can assist.</li>
<li>Search for <a href="https://github.com/issues?utf8=%E2%9C%93&amp;q=is:issue+org:zendframework+is:open+label:%22help+wanted%22+">help wanted</a>
or <a href="https://github.com/issues?utf8=%E2%9C%93&amp;q=is:issue+org:zendframework+is:open+label:%22EasyFix%22+">EasyFix</a>
issues (most of the latter are documentation).</li>
</ul>
<p>Many thanks to all the contributors who have provided feedback, patches, reviews,
or releases since the last update!</p>]]></content:encoded>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Zend Framework 3 Update for 2016-02-12</title>
      <pubDate>Fri, 12 Feb 2016 17:40:00 +0000</pubDate>
      <link>http://framework.zend.com/blog/2016-02-12-zf3-biweekly-update.html</link>
      <guid>http://framework.zend.com/blog/2016-02-12-zf3-biweekly-update.html</guid>
      <author>matthew@zend.com (Matthew Weier O'Phinney)</author>
      <dc:creator>Matthew Weier O'Phinney</dc:creator>
      <content:encoded><![CDATA[<p>This is an installment in an ongoing series of bi-weekly posts on ZF3 development status.</p>
<p>The highlights:</p>
<ul>
<li>~60 pull requests merged, and ~100 issues closed.</li>
<li>Another v3 release: zend-stdlib!</li>
<li>16 components updated to zend-servicemanager/zend-eventmanager/zend-stdlib v3
changes, and tagged with stable releases.</li>
<li>25 component releases.</li>
<li>Publication of documentation for 13 components to GitHub Pages.</li>
</ul><h2>New 3.0 versions</h2>
<p>We released another component with version 3.0 stability, <a href="https://zendframework.github.io/zend-stdlib/">zend-stdlib</a>.
This release got the major version bump for a number of reasons:</p>
<ul>
<li>Per version 2.7.0, the hydrator sub-component was deprecated (it has been
moved into its own component, <a href="https://github.com/zendframework/zend-hydrator">zend-hydrator</a>).
With the new major version, we were able to remove it.</li>
<li>A number of features existed as polyfills to provide forwards-compatibility
support from PHP 5.3 or PHP 5.4 to later PHP versions. Since we now support
only PHP 5.5+, we could remove these.</li>
</ul>
<p>Unless a component depends specifically on the hydrators, it's essentially
<em>already</em> forwards-compatible with the new version 3! As such, we'll be
gradually updating components that depend on zend-stdlib to depend on <code>^2.7 || ^3.0</code>.</p>
<h2>Compatibility Migrations</h2>
<p>The past two weeks have been heavily focused on preparing components to be
forwards compatible with the version 3 releases of zend-stdlib,
zend-eventmanager, and zend-servicemanager. We had several breakthroughs that
are enabling these migrations.</p>
<p>First, we can test the different versions via additional Travis-CI jobs. As an
example, consider these PHP 5.5 entries from the zend-cache test matrix:</p>
<pre><code class="language-yaml">matrix:
  include:
    - php: 5.5
      env:
        - EXECUTE_CS_CHECK=true
        - PECL_INSTALL_APCU='apcu-4.0.8'
    - php: 5.5
      env:
        - SERVICE_MANAGER_VERSION=&quot;^2.7.5&quot;
        - EVENT_MANAGER_VERSION=&quot;^2.6.2&quot;
        - PECL_INSTALL_APCU='apcu-4.0.8'
</code></pre>
<p>Note that in the second entry, we specify specific v2 versions of
zend-eventmanager and zend-servicemanager to use.</p>
<p>Later, in our <code>before_install</code> section, we do the following:</p>
<pre><code class="language-yaml">before_install:
  - if [[ $SERVICE_MANAGER_VERSION != '' ]]; then composer require --no-update &quot;zendframework/zend-servicemanager:$SERVICE_MANAGER_VERSION&quot; ; fi
  - if [[ $SERVICE_MANAGER_VERSION == '' ]]; then composer require --no-update &quot;zendframework/zend-servicemanager:^3.0.3&quot; ; fi
  - if [[ $SERVICE_MANAGER_VERSION == '' ]]; then composer remove --dev --no-update zendframework/zend-session ; fi
  - if [[ $EVENT_MANAGER_VERSION != '' ]]; then composer require --no-update &quot;zendframework/zend-eventmanager:$EVENT_MANAGER_VERSION&quot; ; fi
  - if [[ $EVENT_MANAGER_VERSION == '' ]]; then composer require --no-update &quot;zendframework/zend-eventmanager:^3.0&quot; ; fi
</code></pre>
<p>Essentially, we have two builds. One against the v2 components, and one against
the v3 components; the items above force one or the other for the particular
build. This allows us to verify that the code works against both versions, and
that any later changes require that both versions continue to work.</p>
<p>What about that line to <em>remove</em> dependencies, though?</p>
<p>The tricky part of migration has been unravelling dependencies. If a dependency
of a component being migrated <em>also</em> depends on one of the updated components,
we have to wait until the dependency is migrated. Or do we?</p>
<p>In many cases, these dependencies are marked as <em>suggestions</em>, and as
<em>development</em> dependencies only; they are not <em>hard requirements</em> of the
component. Realizing this, we discovered the following workflow:</p>
<ul>
<li>We can remove dependencies when testing against v3 components <strong>if</strong>:
<ul>
<li>the dependency is not yet migrated</li>
<li>the dependency is <em>optional</em> (only listed in <code>require-dev</code> and/or <code>suggest</code>)</li>
</ul>
</li>
<li>We can update the tests to skip tests that depend on those particular
components <em>if classes or interfaces from that component are missing</em>.</li>
</ul>
<p>This means that we're testing specifically that the <em>current</em> component is
forwards-compatible with the new versions. Later, once those dependencies are
updated, we can re-enable those tests.</p>
<p>Finally, a contributor wrote a trait that we can compose in plugin manager
tests to verify that a plugin manager implementation is both v2 and v3
compatible. By adding these to components, we're able to verify with much more
confidence that the code works on both versions.</p>
<p>With these findings and tools in place, we were able to complete migration of
16 components these past two weeks, tagging each with new stable versions!
These include:</p>
<ul>
<li>
<a href="https://github.com/zendframework/zend-math/releases/tag/release-2.6.0">zend-math 2.6.0</a>
(technically, this one <em>removes</em> the dependency on zend-servicemanager, as it
was an internal detail, and not necessary)</li>
<li>
<a href="https://github.com/zendframework/zend-serializer/releases/tag/release-2.6.0">zend-serializer 2.6.0</a> /
<a href="https://github.com/zendframework/zend-serializer/releases/tag/release-2.6.1">zend-serializer 2.6.1</a>
</li>
<li>
<a href="https://github.com/zendframework/zend-tag/releases/tag/release-2.6.0">zend-tag 2.6.0</a> /
<a href="https://github.com/zendframework/zend-tag/releases/tag/release-2.6.1">zend-tag 2.6.1</a>
</li>
<li>
<a href="https://github.com/zendframework/zend-permissions-acl/releases/tag/release-2.6.0">zend-permissions-acl 2.6.0</a>
</li>
<li>
<a href="https://github.com/zendframework/zend-crypt/releases/tag/release-2.6.0">zend-crypt 2.6.0</a>
(this one replaces zend-servicemanager with container-interop)</li>
<li>
<a href="https://github.com/zendframework/zend-filter/releases/tag/release-2.6.0">zend-filter 2.6.0</a>
</li>
<li>
<a href="https://github.com/zendframework/zend-http/releases/tag/release-2.5.4">zend-http 2.5.4</a>
</li>
<li>
<a href="https://github.com/zendframework/zend-server/releases/tag/release-2.6.1">zend-server 2.6.1</a>
</li>
<li>
<a href="https://github.com/zendframework/zend-json/releases/tag/release-2.6.1">zend-json 2.6.1</a>
</li>
<li>
<a href="https://github.com/zendframework/zend-config/releases/tag/release-2.6.0">zend-config 2.6.0</a>
</li>
<li>
<a href="https://github.com/zendframework/zend-text/releases/tag/release-2.6.0">zend-text 2.6.0</a>
</li>
<li>
<a href="https://github.com/zendframework/zend-console/releases/tag/release-2.6.0">zend-console 2.6.0</a>
</li>
<li>
<a href="https://github.com/zendframework/zend-log/releases/tag/release-2.7.0">zend-log 2.7.0</a>
</li>
<li>
<a href="https://github.com/zendframework/zend-i18n/releases/tag/release-2.6.0">zend-i18n 2.6.0</a>
</li>
<li>
<a href="https://github.com/zendframework/zend-feed/releases/tag/release-2.7.0">zend-feed 2.7.0</a>
</li>
<li>
<a href="https://github.com/zendframework/zend-cache/releases/tag/release-2.6.0">zend-cache 2.6.0</a> /
<a href="https://github.com/zendframework/zend-cache/releases/tag/release-2.6.1">zend-cache 2.6.1</a>
</li>
</ul>
<p>We've made every effort to ensure that these releases continue to work with
existing version 2 functionality; however, occasionally, errors occur. If you
notice such errors, please report them as soon as you can, with as many details
as you can, so we can correct them. Additionally, please be aware that
developers are fellow human beings, and be respectful in your communication.
Nobody is intentionally trying to break your applications, and contributors
desire a smooth migration for you as well.</p>
<p>At this point, we're about half-done with the migrations, and of the remaining
half, around half have patches under review. If you want to assist, please review the
<a href="https://github.com/zendframework/maintainers/wiki/ZF3-ServiceManager-component-refactors,-phase-2">migrations page</a>
to see which patches are need review, and where you might be able to help.</p>
<h2>Documentation</h2>
<p>As noted in <a href="/blog/2016-01-28-zf3-biweekly-update.html">our last update</a>, <a href="http://blog.hock.in/">Gary
Hockin</a> performed an automated migration of our
documentation from our reStructuredText sources to per-component Markdown a few
weeks ago, and opened issues against each component to guide review of the
documentation before publication. We also mentioned a plan to host
documentation via <a href="https://pages.github.com/">GitHub Pages</a>.</p>
<p>As part of the migration process, we decided to review and ready documentation
for publication for any component getting a new minor release. This has resulted in
new documentation for the following 13 components!</p>
<ul>
<li>
<a href="https://zendframework.github.io/zend-servicemanager/">zend-servicemanager</a>
</li>
<li>
<a href="https://zendframework.github.io/zend-stdlib/">zend-stdlib</a>
</li>
<li>
<a href="https://zendframework.github.io/zend-hydrator/">zend-hydrator</a>
</li>
<li>
<a href="https://zendframework.github.io/zend-tag/">zend-tag</a>
</li>
<li>
<a href="https://zendframework.github.io/zend-permissions-acl/">zend-permissions-acl</a>
</li>
<li>
<a href="https://zendframework.github.io/zend-filter/">zend-filter</a>
</li>
<li>
<a href="https://zendframework.github.io/zend-config/">zend-config</a>
</li>
<li>
<a href="https://zendframework.github.io/zend-text/">zend-text</a>
</li>
<li>
<a href="https://zendframework.github.io/zend-console/">zend-console</a>
</li>
<li>
<a href="https://zendframework.github.io/zend-log/">zend-log</a>
</li>
<li>
<a href="https://zendframework.github.io/zend-i18n/">zend-i18n</a>
</li>
<li>
<a href="https://zendframework.github.io/zend-feed/">zend-feed</a>
</li>
<li>
<a href="https://zendframework.github.io/zend-cache/">zend-cache</a>
</li>
</ul>
<p>We're very excited about the new documentation, particularly as it's
mobile-friendly, and has in-site search!</p>
<h2>Pull request and issue activity</h2>
<p>Since the last update, we've
<a href="https://github.com/issues?utf8=%E2%9C%93&amp;q=is:pr+is:merged+org:zendframework+closed:%222016-01-28+..+2016-02-12%22+">merged around 60 pull requests</a>,
<a href="https://github.com/issues?page=2&amp;q=is:issue+org:zendframework+closed:%222016-01-28+..+2016-02-12%22&amp;utf8=%E2%9C%93">closing over 100 issues</a>.
(links require a GitHub account). Activity has been particularly high on
documentation issues.</p>
<h2>Component Releases</h2>
<p>The following is a list of component releases since the last update, minus
those noted in the migration section already.  While not all releases are
related to ZF3 specifically, this list is intended to detail activity within
the organization.</p>
<ul>
<li>
<a href="https://github.com/zendframework/zend-expressive-twigrenderer/releases/tag/1.1.1">zend-expressive-twigrenderer 1.1.1</a>
updates the <code>TwigExtension</code> to implement <code>Twig_Extension_GlobalsInterface</code>, to
ensure it is forwards-compatible with Twig v2.</li>
<li>
<a href="https://github.com/zendframework/zend-servicemanager/releases/tag/release-2.7.5">zend-servicemanager 2.7.5</a>
fixes the behavior of the <code>InvokableFactory</code> for situations when options are
passed via a plugin manager, and provides tests for validating plugin managers
are ready for both v2 and v3.</li>
<li>
<a href="https://github.com/zendframework/zend-servicemanager/releases/tag/release-3.0.3">zend-servicemanager 3.0.3</a>
provides a number of fixes:
<ul>
<li>cyclical alias detection and reporting.</li>
<li>skips alias resolution if no aliases are present.</li>
<li>adds tests to verify plugin managers are v3-ready.</li>
<li>publishes documentation to GitHub Pages.</li>
</ul>
</li>
<li>
<a href="https://github.com/zendframework/ZendXml/releases/tag/release-1.0.2">ZendXml 1.0.2</a>
updates the PHP dependency to <code>^5.3.3 || ^7.0</code>, allowing it to work with any
ZF component, in any supported PHP version. It also expands the test matrix to
include PHP 7.</li>
<li>
<a href="https://github.com/zendframework/zend-i18n/releases/tag/release-2.6.0">zend-i18n 2.6.0</a>,
while previously noted, also contained the following changes:
<ul>
<li>adds support for <code>NumberFormatter</code> text attributes when using the <code>NumberFormat</code> view helper.</li>
<li>provides updated postal code verifications for Mauritius and Serbia.</li>
<li>allows multiple invocations of the <code>DateTime</code> validator with different sets of input.</li>
<li>provides null checks on provided message strings.</li>
</ul>
</li>
</ul>
<h2>Until next time</h2>
<p>If you want to help:</p>
<ul>
<li>Help complete the <a href="https://github.com/issues?utf8=%E2%9C%93&amp;q=is:open+is:issue+org:zendframework+label:documentation+label:EasyFix">documentation migration</a>!</li>
<li>Also, as noted above, you can assist with <a href="https://github.com/zendframework/maintainers/wiki/ZF3-ServiceManager-component-refactors,-phase-2">refactoring components to support v2 + v3 of zend-servicemanager</a>.</li>
<li>Search for <a href="https://github.com/issues?utf8=%E2%9C%93&amp;q=is:issue+org:zendframework+is:open+label:%22help+wanted%22+">help wanted</a>
or <a href="https://github.com/issues?utf8=%E2%9C%93&amp;q=is:issue+org:zendframework+is:open+label:%22EasyFix%22+">EasyFix</a>
issues (most of the latter are documentation).</li>
</ul>
<p>Many thanks to all the contributors who have provided feedback, patches, reviews,
or releases these past two weeks!</p>]]></content:encoded>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Zend Framework 3 Update for 2016-01-28</title>
      <pubDate>Thu, 28 Jan 2016 16:45:00 +0000</pubDate>
      <link>http://framework.zend.com/blog/2016-01-28-zf3-biweekly-update.html</link>
      <guid>http://framework.zend.com/blog/2016-01-28-zf3-biweekly-update.html</guid>
      <author>matthew@zend.com (Matthew Weier O'Phinney)</author>
      <dc:creator>Matthew Weier O'Phinney</dc:creator>
      <content:encoded><![CDATA[<p>This is an installment in an ongoing series of bi-weekly posts on ZF3 development status.</p>
<p>The highlights:</p>
<ul>
<li>&gt; 70 pull requests merged</li>
<li>2 components updated to zend-servicemanager/zend-eventmanager v3 changes</li>
<li>23 releases of components, <strong>including <a href="/blog/2016-01-28-expressive-1.0-stable.html">Expressive 1.0</a></strong>, and new
maintenance releases of Apigility and the ZF2 package.</li>
<li>Kickstarting of the documentation migration</li>
</ul><h2>Expressive 1.0!</h2>
<p>Following <a href="/blog/2016-01-19-expressive-rc6-rc7.html">two</a>
<a href="/blog/2016-01-21-expressive-rc7-rc8.html">final</a> release candidates, and after
three months in release candidate status, we've finally tagged
<a href="/blog/2016-01-28-expressive-1.0-stable.html">Expressive 1.0 stable</a>!
Among other things, we've created a <a href="https://zendframework.github.io/zend-expressive/">dedicated documentation site</a>,
which will update automatically as features are merged to the project.</p>
<p>We feel Expressive is the true cornerstone of the ZF3 initiative, and we look forward
to seeing the middleware-based projects people develop using it!</p>
<h2>ZF2 and Apigility</h2>
<p>We noted that the <code>zendframework/zendframework</code> package, which since 2.5.0 has been a metapackage
aggregating the various independent components, was using <code>~2.5.0</code> for component constraints.
This is problematic, as many components have 2.6 and even 2.7 versions, and some of those contain
security fixes. To fix this, we released version 2.5.3, which modifies the component constraints
to <code>^2.5</code>, allowing them to get the latest 2.X series of any given component.</p>
<p>We also released version 1.3.2 of Apigility, to bring in some changes merged many months ago
to fix things like DB Autodiscovery, as well as to pick up the 2.5.3 version of ZF2.</p>
<h2>Documentation</h2>
<p><a href="http://blog.hock.in">Gary Hockin</a> generously donated some time and wrote
scripts to automate translation of individual component documentation from the
ZF2 reStructured Text sources to markdown, and submitted pull requests across
all components, which we have now merged. These are incomplete; some syntax
cannot be translated correctly, imports within files could not be automated,
etc.</p>
<p>If you want to assist, we've
<a href="https://github.com/issues?utf8=%E2%9C%93&amp;q=is:open+is:issue+org:zendframework+label:documentation+label:EasyFix">labeled all documentation tasks</a>
(link requires github login); feel free to jump in on the effort!</p>
<p>We're also working on a plan to host the documentation via <a href="https://pages.github.com">GitHub Pages</a>, to
allow constant, up-to-date documentation, based on the work we did for the Expressive
documentation. Most of the tooling for this is now <a href="https://github.com/zendframework/zf-mkdoc-theme">created</a>,
and we will be able to start pushing it out to components once their documentation
is ready to publish.</p>
<h2>Pull request activity</h2>
<p>Since the last update, we've
<a href="https://github.com/issues?utf8=%E2%9C%93&amp;q=is:pr+org:zendframework+is:merged+closed:%222016-01-14+..+2016-01-28%22">merged over 70 pull requests</a>
(link requires a GitHub account). Activity has been particularly high on
Expressive and documentation issues.</p>
<h2>Component Releases</h2>
<p>The following is a list of component releasessince the last update, minus a
number of Expressive releases leading to the stable release.  While not all
releases are related to ZF3 specifically, this list is intended to detail
activity within the organization.</p>
<ul>
<li>
<a href="https://github.com/zendframework/zend-view/releases/tag/release-2.5.3">zend-view 2.5.3</a>
adds support for the <code>itemprop</code> HTML attribute in the <code>headLink()</code> view
helper, and updates <code>PhpRenderer::render()</code> to no longer lazy-instantiate a
<code>FilterChain</code> if none is already present.</li>
<li>
<a href="https://github.com/zendframework/zend-servicemanager/releases/tag/release-2.7.4">zend-servicemanager 2.7.4</a>
fixed an issue with resolving aliases of aliases due to canonicalization
changes in previous versions.</li>
<li>
<a href="https://github.com/zendframework/zend-servicemanager/releases/tag/release-3.0.1">zend-servicemanager 3.0.1</a>
removes the dependency on zend-stdlib by inlining the <code>ArrayUtils::merge()</code>
routine into the <code>Config</code> class.</li>
<li>
<a href="https://github.com/zendframework/zend-expressive-twigrenderer/releases/tag/1.1.0">zend-expressive-twigrenderer 1.1.0</a>
adds several new features:
<ul>
<li>
<code>url</code> and <code>absolute_url</code> template functions for generating URL paths and absolute URIs.</li>
<li>New &quot;globals&quot; configuration for specifying variables to make available in all templates.</li>
</ul>
</li>
<li>
<a href="https://github.com/zendframework/zend-servicemanager/releases/tag/release-3.0.2">zend-servicemanager 3.0.2</a>
fixes an issue whereby the creation context was not being passed correctly to
abstract factories from plugin managers, and provides a performance boost for
alias resolution.</li>
<li>
<a href="https://github.com/zendframework/zend-code/releases/tag/release-3.0.1">zend-code 3.0.1</a>
moves the phpcs dependency to the require-dev section, and ensures that the
method name is required when adding a method to the class generator.</li>
<li>
<a href="https://github.com/zfcampus/zf-apigility-admin/releases/tag/1.4.1">zend-apigility-admin 1.4.1</a>
fixes an issue in the <code>RpcServiceModel</code> to ensure that a correct pattern is
generated when fetching a service by name.</li>
<li>
<a href="https://github.com/zfcampus/zf-apigility-admin-ui/releases/tag/1.2.2">zend-apigility-admin-ui 1.2.2</a>
fixes a number of issues discovered, including:
<ul>
<li>DB Autodiscovery was failing due to inability to properly select the DB
adapter name.</li>
<li>Custom authentication adapters are now displayed.</li>
<li>The regex for validating custom content-types was fixed to ensure it only
allows valid MIME type specifications.</li>
<li>Fixes validation for REST and RPC service names, raising a warning on
invalid input.</li>
</ul>
</li>
</ul>
<h2>ZF3 Refactors</h2>
<p>Our refactoring effort has slowed due to our focus on getting Expressive
stabilized, though we're starting to get a number of community contributions to
aid the effort.</p>
<p>If you wish to assist, please read the
<a href="https://github.com/zendframework/maintainers/wiki/ZF3-ServiceManager-component-refactors,-phase-2">ZF3 ServiceManager refactoring guide</a>;
be sure to edit the wiki to indicate when you're working on a component, as well
as to indicate the relevant pull request.</p>
<h2>Until next time</h2>
<p>If you want to help:</p>
<ul>
<li>As noted above, help complete the <a href="https://github.com/issues?utf8=%E2%9C%93&amp;q=is:open+is:issue+org:zendframework+label:documentation+label:EasyFix">documentation migration</a>!</li>
<li>Also, as noted above, you can assist with <a href="https://github.com/zendframework/maintainers/wiki/ZF3-ServiceManager-component-refactors,-phase-2">refactoring components to support v2 + v3 of zend-servicemanager</a>.</li>
</ul>
<p>Many thanks to all the contributors who have provided feedback, patches, reviews,
or releases these past two weeks!</p>]]></content:encoded>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Expressive 1.0.0 STABLE Released!</title>
      <pubDate>Thu, 28 Jan 2016 16:00:00 +0000</pubDate>
      <link>http://framework.zend.com/blog/2016-01-28-expressive-1.0-stable.html</link>
      <guid>http://framework.zend.com/blog/2016-01-28-expressive-1.0-stable.html</guid>
      <author>matthew@zend.com (Matthew Weier O'Phinney)</author>
      <dc:creator>Matthew Weier O'Phinney</dc:creator>
      <content:encoded><![CDATA[<p>The Zend Framework community is pleased to announce the immediate availability
of <a href="https://zendframework.github.io/zend-expressive/">Expressive</a> 1.0.0 STABLE!</p>
<p>You can install it using <a href="https://getcomposer.org">Composer</a>,
via the <code>create-project</code> command:</p>
<pre><code class="language-bash">$ composer create-project zendframework/zend-expressive-skeleton expressive
</code></pre>
<p>If you were using a release candidate, you can update your existing applications using:</p>
<pre><code class="language-bash">$ composer require &quot;zendframework/zend-expressive:^1.0&quot;
</code></pre><h2>What's new in the stable version?</h2>
<p>Nothing!</p>
<p>Well, not &quot;nothing&quot;. Since last week, we merged a few documentation fixes, but,
more importantly, finalized our documentation. This included a few changes:</p>
<ul>
<li>Some re-organization, to better categorize the documentation hierarchy.</li>
<li>Switching from <a href="http://bookdown.io">bookdown</a> to <a href="http://www.mkdocs.org">MkDocs</a>
as our build engine of choice. We'd already been using MkDocs to publish on
<a href="http://rtfd.org">ReadTheDocs</a>, so this wasn't a huge change. The choice was made
based on stability, maturity, and ecosystem; MkDocs has been around for quite some
time, and enabled us to accomplish a number of ideas quite quickly.</li>
<li>Automated publishing to <a href="https://pages.github.com">GitHub Pages</a>, via
Travis-CI. Any time we push to our master branch, the documentation will be
updated.</li>
</ul>
<p>We're quite proud of <a href="https://zendframework.github.io/zend-expressive/">the results</a>,
and hope that the new documentation serves our users well.</p>
<h2>What's to look forward to?</h2>
<p>Shipping a stable version means that you can depend on the API going forward.
As such, we're messaging that it's production ready; start building and shipping
your applications on it today!</p>
<p>For the next feature version, we already have a few things scheduled:</p>
<ul>
<li>Removal of the deprecated <code>pre_routing</code>/<code>post_routing</code> configuration support, as
messaged in the <a href="http://zendframework.github.io/zend-expressive/reference/migration/rc-to-v1/#timeline-for-migration">migration documentation</a>.</li>
<li>Providing <a href="https://github.com/zendframework/zend-expressive-skeleton/pull/31">modular functionality</a>
by default (with opt-out). This will likely include also providing a solution
similar to the <a href="https://github.com/zendframework/zend-component-installer">component installer</a>
to aid with auto-registering installed packages.</li>
</ul>
<h2>Kudos</h2>
<p><a href="https://github.com/zendframework/zend-expressive-router/graphs/contributors">We</a>
<a href="https://github.com/zendframework/zend-expressive-aurarouter/graphs/contributors">wish</a>
<a href="https://github.com/zendframework/zend-expressive-fastroute/graphs/contributors">to</a>
<a href="https://github.com/zendframework/zend-expressive-zendrouter/graphs/contributors">thank</a>
<a href="https://github.com/zendframework/zend-expressive-template/graphs/contributors">everyone</a>
<a href="https://github.com/zendframework/zend-expressive-platesrenderer/graphs/contributors">who</a>
<a href="https://github.com/zendframework/zend-expressive-twigrenderer/graphs/contributors">contributed</a>
<a href="https://github.com/zendframework/zend-expressive-zendviewrenderer/graphs/contributors">to</a>
<a href="https://github.com/zendframework/zend-expressive-helpers/graphs/contributors">the</a>
<a href="https://github.com/zendframework/zend-expressive/graphs/contributors">Expressive</a>
<a href="https://github.com/zendframework/zend-expressive-skeleton/graphs/contributors">project</a>!
(That previous sentence is a link for every one of our 11 Expressive repositories!)</p>
<p>Additionally, we thank everyone who has provided us feedback — whether in
the form of questions, bug reports, or suggestions — these past few
months; without the critical feedback, the project would not be where it is
today.</p>
<p>A few folks stand out:</p>
<ul>
<li>
<a href="http://www.zimuel.it">Enrico Zimuel</a>, who started it all!</li>
<li>
<a href="https://xtreamwayz.com">Geert Eltink</a>, who did the hard work of making the installer work!</li>
<li>
<a href="http://harikt.com">Hari K T</a>, who nudged us to split the repository into discrete, single-purpose projects!</li>
<li>
<a href="https://github.com/michaelmoussa">Michael Moussa</a>, who suggested the idea that middleware specifications
could be pipelines themselves — and then implemented the solution!</li>
</ul>
<h2>Write your next project Expressively!</h2>
<p>Write your PSR-7 middleware today! Consult
<a href="https://zendframework.github.io/zend-expressive/">the documentation</a> to get started!</p>]]></content:encoded>
      <slash:comments>0</slash:comments>
    </item>
  </channel>
</rss>
