View Source

<ac:macro ac:name="toc" />


<li>Date: 07 December 2011, 18:00-19:00 UTC</li>
<li><ac:link><ri:page ri:content-title="2011-12-07 Meeting Agenda" /><ac:link-body>Agenda</ac:link-body></ac:link></li>
<li>Moderator: Matthew Weier O'Phinney (nickname weierophinney)</li>
<li>Next meeting: TBD &ndash; supposed to be 21 December 2011, but may be pushed to 4 January 2012</li>


<h3>Application Environment Variable In Config Files</h3>

<p>In mailing list and IRC discussions, several contributors have indicated they thing usage of an <code>APPLICATION_ENV</code> constant is not necessary, and, by extension, environment-specific configuration file sections.</p>

<p>The proposed idea is instead to use configuration globbing, specifying a &quot;global&quot; configuration and a &quot;local&quot; one:</p>

<ac:macro ac:name="code"><ac:plain-text-body><![CDATA[

<p>In the index.php, when specifying a glob pattern for the Config listener, you would then use:</p>

<ac:macro ac:name="code"><ac:plain-text-body><![CDATA[

<p>Typically, you will keep your &quot;local&quot; config files outside of version control (as they could contain credentials or other information you may need to keep secure). &quot;local&quot; would then be &quot;local&quot; to whereever the application is installed.</p>

<p>Matthew (yes, I refer to myself in the 3rd person) suggested that this could be expanded to utilize environment-specific configurations as well:</p>

<ac:macro ac:name="code"><ac:default-parameter>php</ac:default-parameter><ac:plain-text-body><![CDATA[
if (!($env = getenv('APPLICATION_ENV'))) {
$env = 'local';

$glob = glob(__DIR__ . "/config/autoload/*.{global,$env}.php", GLOB_BRACE);

<p>The final outcome of discussion was:</p>

<li>No more environment sections in configuration files.</li>
<li>Standardize on &quot;global&quot; and &quot;local&quot; files, with the former under version control and the latter not.</li>
<li>Standardize on shipping &quot;local.&lt;format&gt;.dist&quot; files as templates for local configuration. (Using the .dist extension breaks syntax highlighting, but this is by design; the idea is that developers would need to copy these to a name without the .dist extension to use them.)</li>
<li>Have a commented block in the generated index.php file indicating how to introduce environment-specific configuration files for globbing.</li>
<li>Provide a .gitignore in the ZendSkeletonApp that ignores non-.dist local configs.</li>

<p><strong>tl;dr:</strong> Environment &quot;sections&quot; in config files are going away, to be replaced by individual config files per-environment. Additionally, the notion of &quot;production&quot; vs. &quot;development&quot; goes away, replaced by &quot;global&quot; settings and &quot;local&quot; settings.</p>

<h3>Deprecation of Mandatory/Recommended PHP_CONSTANTS in Config Files</h3>

<p>In ZF1, we have a history of using constants in our configuration files. This started with the INI format, as <code>parse_ini_*()</code> automatically replace these with the values.</p>

<p>The problems we have are:</p>

<li>They are expensive to parse for and replace in other formats.</li>
<li>They make expectations about use. Constants must be defined prior to loading configuration, which also means you must know what constants the configuration is looking for.</li>
<li>In most cases, constants are being used to define paths for resources such as logging, caching, etc.</li>

<p>The proposed solution is three-fold:</p>

<li>Recommend <em>against</em> using constants in configuration files.</li>
<li>If constants <em>must</em> be used, have opt-in pre/post-parsers (TBD) that would do constant value replacements.</li>
<li>In the case of path configuration, the solution is to have the invoking script <code>chdir()</code> to the application root. Configuration would then either define absolute paths, or paths relative to the application root.</li>

<p>To demonstrate the latter, consider the following structure:</p>

<ac:macro ac:name="code"><ac:plain-text-body><![CDATA[

<p>Configuration could then use relative paths:</p>

<ac:macro ac:name="code"><ac:default-parameter>php</ac:default-parameter><ac:plain-text-body><![CDATA[
return array(
'cache' => array(
'path' => 'data/cache/',
'session' => array(
'save_path' => 'data/session/',

<p>One counter-example provided was modules seeding their own view script directories, as this requires some knowledge of where the module lives in the filesystem. However, Evan Coury and Ben Scholzen both provided examples of how that task could be accomplished using the module's <code>Module.php</code> classfile, and Artur Bodera also indicated that those might be cases for using the pre/post parser for constant value injection.</p>

<p>Artur volunteered to write the configuration pre/post parser for constant value injection.</p>

<p><strong>tl;dr:</strong> Don't use constants in configuration files if possible, and specify paths relative to the application's root directory.</p>

<h3>Endorsement of Application Path</h3>

<p>This basically followed on from the previous topics. Again, the idea is to formalize using the application's root directory as the basis for relative paths. Scripts would <code>chdir()</code> into that directory initially, ensuring that file operations (fopen, file_get_contents, parse_ini_file, glob, etc.) occur relative to that directory.</p>

<p>There were no further arguments and no further discussions at this point; all were in agreement on this approach.</p>

<h3>Pull Request Queue Management</h3>

<p>Per the meeting agenda, the following was proposed:</p>

<blockquote><p>Our workflow is simple; whenever someone who's allowed to push the pull request reviews it, he either merges it, or comments &amp; closes it. If the contributor then updates his pull request the pull requester can just reopen it. That way the queue of open pull requests always resembles the list of pull requests that can potentially be merged.</p></blockquote>

<p>Developers who open a pull request have the option to re-open a pull request on GitHub (as do admins and committers). As such, if a PR is not quite ready to merge, a committer will comment on why, and close the request. The contributor can then perform the work necessary to ready the code for merge, and re-open the request when ready.</p>

<p>Consensus was immediate and enthusiastic. Matthew indicated he will update the <code>README-DEV.txt</code> and <code>README-GIT.txt</code> files, and try and find an appropriate place to call out this process on the ZF2 subsite.</p>

<h3>Schedule Beta 2 Release</h3>

<p>We discussed readiness of the various components slated for the beta2 release.</p>

<li>Mail is ready except for documentation. Matthew indicated he can have this ready in the next day or two.</li>
<li>Cache is not yet ready. Marc Bennewitz, who is leading this effort indicated:
<li>The EventManager usage needs review. (Matthew said he'll assist with that.)</li>
<li>The core functionality is ready, but several adapters are not yet refactored. (We indicated that those could happen at a later beta.)</li>
<li>Many docblocks are missing (prolic and Matthew indicated they can assist here).</li>
<li>End-user docs are not ready (Matthew indicated he can generate skeletons and start filling in details).</li>
<li>Most importantly: consumers of the Cache component need updating to follow the new API.</li>
<li>Log is barely begun. Benoit Durand, leading the effort, indicated he hasn't had time the last two weeks. He said he'll have time starting during the weekend. Matthew urged him to pawn off tasks as much as possible to collaborators in IRC in order to speed development.</li>
<li>Config was originally slated for this beta, but due to the discussions earlier in this meeting, clearly will need further refactoring. Matthew suggested pushing this to beta3.</li>

<p>Based on the fact that neither Cache nor Log are ready, we decided to push a go-no-go vote to next Wednesday (14 December 2011), and push hard as a community to get them ready to go. Ben Scholzen indicated that he can have Config ready in that time frame as well.</p>

<p><strong>tl;dr:</strong> We're waiting a week.</p>


<ac:macro ac:name="html"><ac:parameter ac:name="output">html</ac:parameter><ac:plain-text-body><![CDATA[
pre.log {
white-space: -moz-pre-wrap; /* Mozilla, supported since 1999 */
white-space: -pre-wrap; /* Opera 4 - 6 */
white-space: -o-pre-wrap; /* Opera 7 */
white-space: pre-wrap; /* CSS3 - Text module (Candidate Recommendation) */
word-wrap: break-word; /* IE 5.5+ */
border: 1px solid darkgray;
padding: 0.5em;
<pre class="log">
Dec 07 18:02:22 &lt;weierophinney&gt; Okay, all... let's get started
Dec 07 18:02:31 &lt;weierophinney&gt; Since I forgot to ask for a moderator, I guess that means I'm moderating.
Dec 07 18:02:38 &lt;weierophinney&gt; Agenda is here:
Dec 07 18:02:47 &lt;guilhermeblanco&gt; weierophinney: EvanDotPro can always moderate
Dec 07 18:02:50 &lt;guilhermeblanco&gt; =)
Dec 07 18:02:50 &lt;weierophinney&gt; EvanDotPro and Thinkscape, want to get started?
Dec 07 18:02:51 »» DASPRiD nomiates ChanServ
Dec 07 18:03:03 &lt;weierophinney&gt; guilhermeblanco, EvanDotPro will be talking too much in this one to moderate. :)
Dec 07 18:03:22 &lt;EvanDotPro&gt; weierophinney: haha, probably true
Dec 07 18:03:23 &lt;guilhermeblanco&gt; weierophinney: gimme op and I can kick if someone bugs too much
Dec 07 18:03:31 &lt;weierophinney&gt; guilhermeblanco, LOL
Dec 07 18:03:38 &lt;DASPRiD&gt; (funny that there is most of the time no "nay" vote on that page)
Dec 07 18:03:48 &lt;weierophinney&gt; To open op: the first few topics are about configuration and some proposed changes.
Dec 07 18:04:08 »» guilhermeblanco raises my hand
Dec 07 18:04:11 &lt;weierophinney&gt; Particularly to how we treat "environment-specific" configuration, as well as constants in configuration. They're kinda related.
Dec 07 18:04:19 &lt;weierophinney&gt; guilhermeblanco, yes?
Dec 07 18:04:25 &lt;guilhermeblanco&gt; weierophinney: point about config files is simple
Dec 07 18:04:38 &lt;guilhermeblanco&gt; you do not want to show all devs the prod specific config
Dec 07 18:04:42 &lt;weierophinney&gt; DASPRiD, what's frustrating is that the nay votes don't say why. Anwyays... on to guilhermeblanco
Dec 07 18:04:47 &lt;weierophinney&gt; guilhermeblanco, exactly
Dec 07 18:04:47 &lt;guilhermeblanco&gt; so it's better if you split into local files and global files
Dec 07 18:05:09 &lt;guilhermeblanco&gt; weierophinney: I suggets something compatible to GlobIterator...
Dec 07 18:05:14 &lt;guilhermeblanco&gt; which it's {global, local}
Dec 07 18:05:16 &lt;weierophinney&gt; guilhermeblanco, well, it may not be just two environments. There may be testing, qa, etc. So globbing would take the env into account still.
Dec 07 18:05:30 &lt;weierophinney&gt; guilhermeblanco, yes, eaxctly -- that's also how glob() works.
Dec 07 18:05:38 &lt;guilhermeblanco&gt; weierophinney: for other envs... just use {global,test} when needed
Dec 07 18:05:54 &lt;guilhermeblanco&gt; but main point is it's fixed naming convention
Dec 07 18:05:58 &lt;weierophinney&gt; it'd be "{global,$env}" -- we can use interpolation.
Dec 07 18:05:59 &lt;guilhermeblanco&gt; local for web app
Dec 07 18:06:04 &lt;guilhermeblanco&gt; weierophinney: no
Dec 07 18:06:08 &lt;guilhermeblanco&gt; global, local
Dec 07 18:06:09 &lt;guilhermeblanco&gt; fixed
Dec 07 18:06:12 &lt;guilhermeblanco&gt; and test
Dec 07 18:06:13 &lt;guilhermeblanco&gt; sorry
Dec 07 18:06:14 »» mabe__ is now known as mabe_
Dec 07 18:06:28 &lt;guilhermeblanco&gt; if you wanna modify env specific stuff... just alter local or test files
Dec 07 18:06:33 &lt;guilhermeblanco&gt; like...application.local.php
Dec 07 18:06:38 &lt;guilhermeblanco&gt; or application.test.php
Dec 07 18:06:45 &lt;guilhermeblanco&gt; but all possible config is placed into global file
Dec 07 18:06:56 &lt;guilhermeblanco&gt;
Dec 07 18:07:49 &lt;guilhermeblanco&gt; weierophinney: we don't need to care about envs... user is supposed to configure this information in local and test files
Dec 07 18:08:00 &lt;guilhermeblanco&gt; we can even ship a application.locla.php.dist
Dec 07 18:08:03 &lt;weierophinney&gt; guilhermeblanco, I'm not convinced. I've often used many more environments than that, and wanted a "base" config I can create env-specific ones off of. I think doing this: glob(__DIR__ . "/configs/autoload/{global,$env}.php") is fine
Dec 07 18:08:06 &lt;guilhermeblanco&gt; but not a requirement at all
Dec 07 18:08:15 &lt;EvanDotPro&gt; let's try to focus on what we do and do not want from ZF2 as a framework as far as configs go
Dec 07 18:08:42 &lt;guilhermeblanco&gt; weierophinney: if you're installing on an env... you do not need to care about $env
Dec 07 18:08:48 &lt;guilhermeblanco&gt; EvanDotPro: ok
Dec 07 18:08:52 &lt;weierophinney&gt; the env is configured by the developer, and seeded at the bootstrap stage. Doesn't require a constant, just declaring a variable so that the value can be discovered. It also allows setting env on CLI
Dec 07 18:08:57 &lt;DASPRiD&gt; EvanDotPro, pff, you always want the pudding first
Dec 07 18:09:00 »» guilhermeblanco gives voice to EvanDotPro
Dec 07 18:09:03 &lt;Thinkscape&gt; IMHO environments should not be offered or endorsed out-of-the-box (read: in skeleton or in docs).
Dec 07 18:09:20 &lt;Thinkscape&gt; They should be explained in docs as a separate document.
Dec 07 18:09:28 &lt;weierophinney&gt; Thinkscape, +1
Dec 07 18:09:40 &lt;EvanDotPro&gt; for example, one solution could be that we do not want the framework to be aware of environments, and thus not check configs for a section matching the environment string
Dec 07 18:09:58 &lt;weierophinney&gt; My point is that $env = getenv('APPLICATION_ENV'); is still reasonable
Dec 07 18:09:59 &lt;intiilapa&gt; Hello
Dec 07 18:10:06 &lt;DASPRiD&gt; EvanDotPro, +1
Dec 07 18:10:06 &lt;Thinkscape&gt; Same applies for complex, multi-directory, merged config configurations. It should be KISS from start + docs how to extend/change it.
Dec 07 18:10:20 &lt;weierophinney&gt; EvanDotPro, right -- and you then only glob on "global" or a specific string
Dec 07 18:10:21 &lt;EvanDotPro&gt; weierophinney: but what would the framework _do_ with that?
Dec 07 18:10:29 &lt;guilhermeblanco&gt; weierophinney: it did pretty much of what I wanted:
Dec 07 18:10:36 &lt;weierophinney&gt; EvanDotPro, see above -- it would only be used in the glob pattern
Dec 07 18:10:45 &lt;guilhermeblanco&gt; EvanDotPro: +1
Dec 07 18:11:20 &lt;weierophinney&gt; guilhermeblanco, I'm simply saying that if you want different config envs, you'd have to change that script.
Dec 07 18:11:20 &lt;EvanDotPro&gt; weierophinney: ah, right.. so it can be used, but the framework would have no knowledge of it.
Dec 07 18:11:25 &lt;EvanDotPro&gt; it would be a user choice
Dec 07 18:11:27 &lt;weierophinney&gt; EvanDotPro, exactly.
Dec 07 18:11:30 &lt;DASPRiD&gt; yeah
Dec 07 18:11:33 &lt;DASPRiD&gt; i like that
Dec 07 18:11:33 &lt;EvanDotPro&gt; i'm +1 all over that
Dec 07 18:11:34 &lt;Thinkscape&gt; weierophinney: do we want that included by default in skeleton etc. ? I think it blurs the image ...
Dec 07 18:11:46 &lt;Thinkscape&gt; Arguably local/global is more important than DEV/PRODUCTION
Dec 07 18:11:52 &lt;DASPRiD&gt; then the question is: do we still need inheritance in zend\config
Dec 07 18:11:55 &lt;guilhermeblanco&gt; weierophinney: why would you need diff env files into same application server/box?
Dec 07 18:12:09 &lt;EvanDotPro&gt; theoretically, local and global covers _everything_.
Dec 07 18:12:18 &lt;guilhermeblanco&gt; EvanDotPro: agree
Dec 07 18:12:19 &lt;Thinkscape&gt; EvanDotPro: not really
Dec 07 18:12:24 &lt;weierophinney&gt; Thinkscape, we could simply discuss it in documentation, I suppose. But keeping the basic bootstrap flexible so that folks don't _need_ to modify it for stuff like this has benefits, too.
Dec 07 18:12:32 &lt;DASPRiD&gt; EvanDotPro, should be a user choice whether he uses global/local or base config + env config
Dec 07 18:12:33 &lt;EvanDotPro&gt; well what i'm saying is that 'production' would really fall under local
Dec 07 18:12:47 &lt;Thinkscape&gt; EvanDotPro: I often have same-server, same-directory installations and "swap" envs to test them out...
Dec 07 18:12:48 &lt;DASPRiD&gt; but global + local should be fine in most cases
Dec 07 18:12:50 &lt;EvanDotPro&gt; if they choose to use a different or additional string to "local" that's up to them.
Dec 07 18:12:53 &lt;weierophinney&gt; EvanDotPro, theoretically, yes. In practice, I've had very different qa and testing envs.
Dec 07 18:12:56 &lt;DASPRiD&gt; although you want test configuration be preconfigured
Dec 07 18:13:06 &lt;Thinkscape&gt; weierophinney: like leave that line commented out ?
Dec 07 18:13:07 &lt;DASPRiD&gt; and not to be local
Dec 07 18:13:07 &lt;weierophinney&gt; and they may inherit from each other. So some details I may _want_ in VCS
Dec 07 18:13:13 &lt;guilhermeblanco&gt; EvanDotPro: you may even want to have multiple application.*.php files... all you need to do is symlink the one you be active into app.local.php
Dec 07 18:13:15 &lt;guilhermeblanco&gt; and you're done
Dec 07 18:13:18 &lt;EvanDotPro&gt; weierophinney: no i'm saying you have a conig that's local to qa and a config that's local to testing.
Dec 07 18:13:33 &lt;EvanDotPro&gt; s/conig/config
Dec 07 18:13:35 &lt;DASPRiD&gt; guilhermeblanco, in development, you may want to use two envs at once: development and testing
Dec 07 18:13:38 &lt;guilhermeblanco&gt; symlinks are known to be bad under heavy server load... but it's totally acceptable
Dec 07 18:13:47 &lt;guilhermeblanco&gt; DASPRiD: so just place the symlink
Dec 07 18:13:50 &lt;EvanDotPro&gt; those both qualify as 'local' in my mind
Dec 07 18:13:50 &lt;DASPRiD&gt; development for apache/cli, testing for phpunit
Dec 07 18:13:58 &lt;DASPRiD&gt; guilhermeblanco, without changing symlinks all the time
Dec 07 18:13:59 &lt;EvanDotPro&gt; they're local to some specific environment.
Dec 07 18:13:59 &lt;weierophinney&gt; EvanDotPro, and sometimes those might inherit from each other.
Dec 07 18:14:10 &lt;Thinkscape&gt; simply put: local/global !== devel/production
Dec 07 18:14:12 &lt;guilhermeblanco&gt; DASPRiD:, application.local.php and application.tets.php is what I'm suggesting
Dec 07 18:14:30 &lt;DASPRiD&gt; guilhermeblanco, well, eventually, that is up to the user what he prefers
Dec 07 18:14:34 &lt;guilhermeblanco&gt; Thinkscape: would you ever change local config on a prod server or even in dev box?
Dec 07 18:14:39 &lt;EvanDotPro&gt; they can do that too, just adjust the glob or manually array_replace_recursive from within a php config (my preference as it has total control)
Dec 07 18:14:41 &lt;DASPRiD&gt; we shouldn't discuss about something which will not touch the framework source
Dec 07 18:14:45 &lt;Thinkscape&gt; guilhermeblanco: sure
Dec 07 18:14:51 &lt;guilhermeblanco&gt; Thinkscape: how?
Dec 07 18:15:02 &lt;guilhermeblanco&gt; why not just place a symlink as the active config?
Dec 07 18:15:11 &lt;guilhermeblanco&gt; global, local and test
Dec 07 18:15:14 &lt;guilhermeblanco&gt; that's all I can see
Dec 07 18:15:37 &lt;DASPRiD&gt; global + local / global + test should be merged based on the env then
Dec 07 18:15:41 &lt;EvanDotPro&gt; my proposal is this: Zend Framework itself has no knowledge of what an "environment" is.
Dec 07 18:15:45 &lt;ralphschindler&gt; guys, i think we're really talking about two separate concepts: 1: Development environment ( and then 2) application interface (web, cli, test)
Dec 07 18:15:49 &lt;DASPRiD&gt; EvanDotPro, +1
Dec 07 18:15:50 &lt;Thinkscape&gt; guilhermeblanco: swap db server, add api key, whatever. In my apps, local config relates to local machine (db, api keys etc.) while devel/production relates to log settings, error reports etc. Global holds everything else.
Dec 07 18:15:57 &lt;guilhermeblanco&gt; EvanDotPro: +1
Dec 07 18:16:08 &lt;guilhermeblanco&gt; Thinkscape: if you're doing it in prod... you're doing it wrong
Dec 07 18:16:11 &lt;EvanDotPro&gt; is anyone -1 to that?
Dec 07 18:16:11 &lt;weierophinney&gt; This is what I'm suggesting, btw:
Dec 07 18:16:16 &lt;DASPRiD&gt; Thinkscape, right
Dec 07 18:16:29 &lt;Thinkscape&gt; EvanDotPro: to what extent do we want to include those examples in skeleton and docs ?
Dec 07 18:16:39 &lt;Thinkscape&gt; (last one)
Dec 07 18:16:54 &lt;EvanDotPro&gt; Thinkscape: i dunno, i'd say whatever covers the most common cases.
Dec 07 18:17:01 &lt;DASPRiD&gt; i'm with Thinkscape here
Dec 07 18:17:16 &lt;weierophinney&gt; that was the wrong gist
Dec 07 18:17:19 &lt;Thinkscape&gt; Let's do the following:
Dec 07 18:17:19 &lt;weierophinney&gt; one sec
Dec 07 18:17:22 &lt;weierophinney&gt;
Dec 07 18:17:28 &lt;weierophinney&gt; That's what I was getting at.
Dec 07 18:17:34 &lt;guilhermeblanco&gt; weierophinney: +1
Dec 07 18:17:37 &lt;Thinkscape&gt; - we provide a skeleton that has a single, flat config structure (KISS)
Dec 07 18:17:38 &lt;weierophinney&gt; Which is in line with what EvanDotPro suggests.
Dec 07 18:17:46 &lt;EvanDotPro&gt; weierophinney: exactly
Dec 07 18:17:46 &lt;DASPRiD&gt; weierophinney, should be {global,$env,local} imho
Dec 07 18:17:47 &lt;Thinkscape&gt; - we provide commented-out options for devel/production/staging
Dec 07 18:17:54 &lt;Thinkscape&gt; - we provide commented-out options for local/global
Dec 07 18:18:00 &lt;guilhermeblanco&gt; DASPRiD: that's too much
Dec 07 18:18:04 &lt;Thinkscape&gt; - we write up good explanation in docs on how to use it
Dec 07 18:18:30 &lt;DASPRiD&gt; guilhermeblanco, that are three configs, global and $env should never be touched, local be modified for local settings
Dec 07 18:18:32 &lt;weierophinney&gt; Thinkscape, do we comment them out, though? would we need to with the gist I suggested?
Dec 07 18:18:46 &lt;EvanDotPro&gt; remember this is just an example we're providing devs at this point, not the framework behavior
Dec 07 18:18:52 &lt;Thinkscape&gt; I think yes.
Dec 07 18:18:55 &lt;guilhermeblanco&gt; DASPRiD: I still think that's 3 I/Os
Dec 07 18:18:57 &lt;weierophinney&gt; DASPRiD, I'd argue the env one would likely extend a "local" config or base config.
Dec 07 18:18:59 &lt;Thinkscape&gt; It itroduces the concept
Dec 07 18:19:04 &lt;Thinkscape&gt; you have to explain it ...
Dec 07 18:19:09 &lt;DASPRiD&gt; guilhermeblanco, sure, if you disable all caching
Dec 07 18:19:13 &lt;Thinkscape&gt; I'd say just include global by default...
Dec 07 18:19:22 &lt;Thinkscape&gt; and have 2 extra commented lines with more "complex" scenarios.
Dec 07 18:19:24 &lt;guilhermeblanco&gt; DASPRiD: application is always loaded atm
Dec 07 18:19:29 &lt;Thinkscape&gt; = fast start for newbies
Dec 07 18:19:31 &lt;guilhermeblanco&gt; so I cannot comment on the future
Dec 07 18:19:32 &lt;DASPRiD&gt; weierophinney, extending… mh, should work
Dec 07 18:19:43 &lt;DASPRiD&gt; weierophinney, but then it can also extend the global one
Dec 07 18:19:53 &lt;DASPRiD&gt; weierophinney, which means we only need to load the env config
Dec 07 18:20:00 &lt;weierophinney&gt; Thinkscape, I disagree with only including global by default. We want to encourage developers to keep credentials and whatnot out of their configs. As such, they need a global, and a local that's outside VCS to override.
Dec 07 18:20:15 &lt;Thinkscape&gt; good point
Dec 07 18:20:21 &lt;Thinkscape&gt; but not to mix it with envs
Dec 07 18:20:22 &lt;EvanDotPro&gt; weierophinney: +1
Dec 07 18:20:29 &lt;Thinkscape&gt; so {global,local}
Dec 07 18:20:33 &lt;ralphschindler&gt; +1
Dec 07 18:20:37 &lt;guilhermeblanco&gt; +1
Dec 07 18:20:39 &lt;Thinkscape&gt; because local != development
Dec 07 18:20:46 &lt;weierophinney&gt; Thinkscape, and then commented section showing how to do $env
Dec 07 18:20:52 &lt;EvanDotPro&gt; so i think we have a consensus here... because what we're talking about, imho covers every use case i can think of.
Dec 07 18:20:53 &lt;Thinkscape&gt; correct
Dec 07 18:21:04 &lt;ralphschindler&gt; so, out of curiosity, isn't this kidna the same a .dist.php and then just .php ?
Dec 07 18:21:21 &lt;Thinkscape&gt; + good explanation how to change order, merge local->global, global->local, global->production->local etc.
Dec 07 18:21:23 &lt;guilhermeblanco&gt; ralphschindler: application.local.php.dist
Dec 07 18:21:34 &lt;guilhermeblanco&gt; I'd rather change the terminology there
Dec 07 18:21:42 &lt;weierophinney&gt; ralphschindler, not quite. The ".dist" would be a template for a local file mainly
Dec 07 18:21:46 &lt;Thinkscape&gt; drop the .dist
Dec 07 18:21:51 &lt;RobAllen&gt; IMO dist files are never loaded by app
Dec 07 18:21:56 &lt;guilhermeblanco&gt; this enforces people to rename the file for local changes
Dec 07 18:22:03 &lt;weierophinney&gt; guilhermeblanco, +1
Dec 07 18:22:04 &lt;DASPRiD&gt; idd
Dec 07 18:22:08 &lt;Thinkscape&gt; weierophinney: you just said, it's good to educate people to keep local outside VCS...
Dec 07 18:22:08 &lt;weierophinney&gt; RobAllen, +
Dec 07 18:22:11 &lt;Thinkscape&gt; so no .dist :-)
Dec 07 18:22:26 &lt;DASPRiD&gt; RobAllen, hah, there are a few php apps which actually load .dist if the .php is not present ;)
Dec 07 18:22:32 &lt;ralphschindler&gt; this is now the way phpunit looks at it, but I'm ok with is as having a .dist suffix is something most IDE's don't recognize
Dec 07 18:22:33 &lt;weierophinney&gt; Thinkscape, different concept. .dist is a template
Dec 07 18:22:38 &lt;guilhermeblanco&gt; Thinkscape: you may distribute the dist file... but force dev to rename it. like final ext is .dist
Dec 07 18:22:42 &lt;weierophinney&gt; Thinkscape, and .dist would not get loaded.
Dec 07 18:22:46 &lt;guilhermeblanco&gt; so it's a php recognized file extension
Dec 07 18:22:48 &lt;guilhermeblanco&gt; =)
Dec 07 18:22:53 &lt;Thinkscape&gt; I know it is, but that's "another thing you have to do to make it work"
Dec 07 18:22:54 &lt;guilhermeblanco&gt; and makes it never loaded
Dec 07 18:22:56 &lt;DASPRiD&gt; ralphschindler, you can tell every ide to reconignize ".php.dist"
Dec 07 18:23:00 &lt;guilhermeblanco&gt; so... I agree with you in some parts
Dec 07 18:23:01 &lt;guilhermeblanco&gt; =)
Dec 07 18:23:07 &lt;wilmoore&gt; No secret that I'm a fan of the "application.{format}.dist" route
Dec 07 18:23:21 &lt;ralphschindler&gt; sure DASPRiD, but if its .dist.php it automatically recognizes it
Dec 07 18:23:30 &lt;weierophinney&gt; Thinkscape, if you're making a configurable application, you're going to have these sorts of artifacts.
Dec 07 18:23:36 &lt;DASPRiD&gt; ralphschindler, but tht could fit some glob pattern
Dec 07 18:23:45 &lt;wilmoore&gt; ralphschindler, +1
Dec 07 18:23:49 &lt;Thinkscape&gt; Will it work, if I download skeleton and run it without local.php ? (but with the local.php.dist ? )
Dec 07 18:23:57 &lt;guilhermeblanco&gt; weierophinney: 24min of this topic already
Dec 07 18:24:04 &lt;guilhermeblanco&gt; so.. votes required
Dec 07 18:24:11 &lt;DASPRiD&gt; also, the general "make" way is always to prepend ".in" to a template file
Dec 07 18:24:11 &lt;guilhermeblanco&gt; and next topic
Dec 07 18:24:23 &lt;weierophinney&gt; guilhermeblanco, Agreed. I'll sum up:
Dec 07 18:24:36 &lt;weierophinney&gt; * No application envs INSIDE config files
Dec 07 18:25:00 &lt;weierophinney&gt; * Ship a "global" config, and optionally a "local" config _template_ (likely with a .dist segment)
Dec 07 18:25:13 &lt;weierophinney&gt; * use glob() to aggregate config for merging
Dec 07 18:25:42 »» EvanDotPro proposes that we also include a .gitignore in the skeleton which ignores the non-dist local conig.
Dec 07 18:25:46 &lt;guilhermeblanco&gt; re point 2. Make .dist segment at the end. So dev is enforced to rename it to work.
Dec 07 18:25:49 &lt;weierophinney&gt; * have commented areas in the base index.php showing how you might use an ENV to glob different configs than the shipped.
Dec 07 18:25:54 &lt;weierophinney&gt; EvanDotPro, +1
Dec 07 18:26:00 &lt;wilmoore&gt; EvanDotPro, +1
Dec 07 18:26:01 &lt;guilhermeblanco&gt; EvanDotPro: +1
Dec 07 18:26:13 »» RobAllen_ is now known as RobAllen
Dec 07 18:26:25 »» guilhermeblanco loves standardization =)
Dec 07 18:26:30 &lt;wilmoore&gt; guilhermeblanco, +1 (RE: .dist at the end)
Dec 07 18:26:35 &lt;DASPRiD&gt; +1 @ all
Dec 07 18:26:39 &lt;DASPRiD&gt; (lazy)
Dec 07 18:26:41 &lt;weierophinney&gt; Next topic: deprecate PHP constant usage in config files.
Dec 07 18:26:44 &lt;prolic&gt; +1 for .dist at the end
Dec 07 18:26:47 &lt;DASPRiD&gt; weierophinney, stop plz
Dec 07 18:26:50 &lt;ralphschindler&gt; wait a sec
Dec 07 18:26:59 &lt;weierophinney&gt; ralphschindler, DASPRiD tie it up quickly
Dec 07 18:27:07 &lt;weierophinney&gt; looks like guilhermeblanco has votes at this point. :)
Dec 07 18:27:11 &lt;ralphschindler&gt; if we're talking about a module, .gitignore is useless as you're not suppose to edit configs in the module anywa
Dec 07 18:27:21 &lt;ralphschindler&gt; so whats the point?
Dec 07 18:27:26 &lt;DASPRiD&gt; since we are removing envs from the config files, are we still in need for inheritance in config files?
Dec 07 18:27:31 &lt;weierophinney&gt; ralphschindler, we're talking about the app skeleton
Dec 07 18:27:34 &lt;weierophinney&gt; not the modules
Dec 07 18:27:51 &lt;weierophinney&gt; ralphschindler, module config overrides go into your application config directory
Dec 07 18:27:52 &lt;Thinkscape&gt; DASPRiD: inheritance like in "merging" ?
Dec 07 18:27:55 &lt;ralphschindler&gt; ah, gotcha- sounds good then (as this does not apply to a ZendModuleSkeleton)
Dec 07 18:27:57 &lt;wilmoore&gt; DASPRiD: My vote would be to remove the inheritance
Dec 07 18:27:59 &lt;DASPRiD&gt; Thinkscape, like "extends"
Dec 07 18:28:04 &lt;DASPRiD&gt; wilmoore, dito
Dec 07 18:28:17 &lt;guilhermeblanco&gt; wilmoore: +1
Dec 07 18:28:20 &lt;weierophinney&gt; DASPRiD, I still see some places it could be useful. routes, for instance.
Dec 07 18:28:33 &lt;weierophinney&gt; but most of those cases could likely be covered by merging.
Dec 07 18:28:38 &lt;RobAllen&gt; Are we expecting devs to clone skeleton?
Dec 07 18:28:41 &lt;wilmoore&gt; weierophinney: in that case, I would document that use of Yaml is preferred
Dec 07 18:28:43 &lt;SpiffyJr_&gt; Ah ha. Found it.
Dec 07 18:28:44 &lt;Thinkscape&gt; well, array_replace_recursive() takes care of that ...
Dec 07 18:28:45 &lt;DASPRiD&gt; weierophinney, inheritance for routes? uh?
Dec 07 18:28:51 &lt;DASPRiD&gt; wilmoore, it is not :P
Dec 07 18:28:51 &lt;mabe_&gt; there is also an issue to include config files from another
Dec 07 18:28:51 &lt;weierophinney&gt; RobAllen, that, or console tool would create it
Dec 07 18:28:54 &lt;RobAllen&gt; Yaml?!?!?!?
Dec 07 18:29:06 &lt;wilmoore&gt; DASPRiD: I mean for that use case that weierophinney suggests
Dec 07 18:29:16 &lt;weierophinney&gt; mabe_, that would be importing. :)
Dec 07 18:29:17 &lt;DASPRiD&gt; wilmoore, heh, nah, php is prefered for that :P
Dec 07 18:29:24 &lt;RobAllen&gt; I'm assuming skel will be in my repo
Dec 07 18:29:28 &lt;weierophinney&gt; kk, we're off topic now
Dec 07 18:29:31 &lt;DASPRiD&gt; wilmoore, we will surely not suggest the most slow format ;)
Dec 07 18:29:34 &lt;weierophinney&gt; Move on to next topic NOW
Dec 07 18:29:43 &lt;SpiffyJr_&gt; So, I miss constants?
Dec 07 18:29:45 &lt;DASPRiD&gt; so: drop inheritance?
Dec 07 18:29:45 &lt;weierophinney&gt; "Discuss deprecation of mandatory/recommended PHP_CONSTANTS in config files and documentation"
Dec 07 18:29:46 &lt;Thinkscape&gt; DASPRiD: replace_recursive() (if that's what we use) will take care of that. It will add new routes to existing collection etc.
Dec 07 18:29:47 &lt;SpiffyJr_&gt; Bollocks.
Dec 07 18:29:56 &lt;weierophinney&gt; SpiffyJr_, we're just starting that one. :)
Dec 07 18:29:57 &lt;DASPRiD&gt; Thinkscape, indeed
Dec 07 18:30:02 &lt;SpiffyJr_&gt; woohoo
Dec 07 18:30:09 &lt;guilhermeblanco&gt; weierophinney: conceptually... -1
Dec 07 18:30:11 &lt;weierophinney&gt; Thinkscape, take it away. :)
Dec 07 18:30:12 &lt;EvanDotPro&gt; SpiffyJr_: you missed the application environment thing, and the consensus was what you were hoping for.
Dec 07 18:30:22 &lt;SpiffyJr_&gt; EvanDotPro: Yes!
Dec 07 18:30:23 &lt;weierophinney&gt; guilhermeblanco, why?
Dec 07 18:30:24 &lt;Thinkscape&gt; kk
Dec 07 18:30:31 &lt;Thinkscape&gt; Guys... guys ... guys...
Dec 07 18:30:34 &lt;Thinkscape&gt; (and gals?)
Dec 07 18:30:38 &lt;guilhermeblanco&gt; weierophinney: Paths is an important thing to keep in mind
Dec 07 18:30:51 &lt;Thinkscape&gt; Please give me any good use cases where you use PHP_CONSTANTS inside config files
Dec 07 18:30:56 &lt;Thinkscape&gt; (aside from previously mentioned)
Dec 07 18:30:56 &lt;DASPRiD&gt; paths are exactly the point here
Dec 07 18:30:56 &lt;guilhermeblanco&gt; if you drop constants... how can you play nice with absolute paths?
Dec 07 18:31:01 &lt;wilmoore&gt; weierophinney, +1 (RE: deprecate PHP CONSTANTS in configs)
Dec 07 18:31:03 &lt;weierophinney&gt; guilhermeblanco, paths are still present. They're simply either absolute, or relative to the application root
Dec 07 18:31:20 &lt;DASPRiD&gt; +1 deprecrate them
Dec 07 18:31:21 &lt;SpiffyJr_&gt; +1 for deprecation
Dec 07 18:31:26 &lt;guilhermeblanco&gt; weierophinney: but devs are willing to refer to something like: APPLICATION_ROOT
Dec 07 18:31:36 &lt;Thinkscape&gt; There is no APPLICATION dir any more
Dec 07 18:31:39 &lt;weierophinney&gt; guilhermeblanco, they wouldn't anymore.
Dec 07 18:31:39 &lt;Thinkscape&gt; so no APPLICATION_ROOT
Dec 07 18:31:41 &lt;DASPRiD&gt; (if deprecation means we drop them from the current config readers)
Dec 07 18:31:44 &lt;Thinkscape&gt; any other use case ?
Dec 07 18:31:53 &lt;guilhermeblanco&gt; weierophinney: so how can you map a path without constants?
Dec 07 18:31:54 &lt;EvanDotPro&gt; okay i have a question then.
Dec 07 18:32:00 &lt;DASPRiD&gt; guilhermeblanco, relative
Dec 07 18:32:02 &lt;Thinkscape&gt; DASPRiD: yes, config values will be just string. HOWEVER, we will give you parsing component..
Dec 07 18:32:11 &lt;weierophinney&gt; guilhermeblanco, the idea would be that the bootstrap script changes to the application root directory. fopen/file_get_contents/parse_ini_file/etc. all work relative from the CWD
Dec 07 18:32:15 &lt;DASPRiD&gt; Thinkscape, i'm the "we" here :P
Dec 07 18:32:17 &lt;guilhermeblanco&gt; DASPRiD: relatives implies into include_path inclusions
Dec 07 18:32:19 &lt;guilhermeblanco&gt; #bad
Dec 07 18:32:22 &lt;mabe_&gt; what about something like log to "PHP_SAPI.log"
Dec 07 18:32:23 &lt;DASPRiD&gt; guilhermeblanco, no
Dec 07 18:32:27 &lt;DASPRiD&gt; guilhermeblanco, relative to CWD
Dec 07 18:32:31 &lt;wilmoore&gt; guilhermeblanco: ant, phing, gradle, etc. all handle this.
Dec 07 18:32:34 &lt;DASPRiD&gt; which is the application root
Dec 07 18:32:45 &lt;guilhermeblanco&gt; DASPRiD: I need to see a sample
Dec 07 18:32:46 &lt;Thinkscape&gt; mabe_: explain
Dec 07 18:32:49 &lt;EvanDotPro&gt; if paths must be absolute or relative to the application root, then would we no longer allow any sort of paths relative to a module within module configs (view script paths)
Dec 07 18:32:50 &lt;weierophinney&gt; guilhermeblanco, no, not include_path. That's only for code you include/require. Paths in configs should be about application resources, not class loading
Dec 07 18:32:54 &lt;guilhermeblanco&gt; comment without having code is useless then
Dec 07 18:33:02 &lt;guilhermeblanco&gt; sorry
Dec 07 18:33:06 &lt;DASPRiD&gt; guilhermeblanco, there was a long mailing list entry
Dec 07 18:33:09 &lt;DASPRiD&gt; guilhermeblanco, linekd in the agenda
Dec 07 18:33:11 &lt;Thinkscape&gt; EvanDotPro: I suggest we resolve this inside View\* component ...
Dec 07 18:33:21 &lt;mabe_&gt; Thinkscape a constant to switch between file names
Dec 07 18:33:35 &lt;RobAllen&gt; We use a config define for some stuff unrelated to paths
Dec 07 18:33:37 &lt;guilhermeblanco&gt; DASPRiD: ok... I got it
Dec 07 18:33:51 &lt;guilhermeblanco&gt; +0
Dec 07 18:33:59 &lt;Thinkscape&gt; mabe_: you just switch it in global or local config ...
Dec 07 18:34:00 &lt;guilhermeblanco&gt; I don't really care about this change then
Dec 07 18:34:02 &lt;EvanDotPro&gt; Thinkscape: views were just an example (i don't have a another), but it would potentially come up any time a module wants to have any config value with a path relative to where the module lives.
Dec 07 18:34:17 &lt;guilhermeblanco&gt; EvanDotPro: Thinkscape stick to the topic
Dec 07 18:34:23 &lt;DASPRiD&gt; EvanDotPro, i thought we solved that in the ML already?
Dec 07 18:34:34 &lt;Thinkscape&gt; EvanDotPro: that's a valid point. Because modules are loaded programatically anyways, I'd suggest it should be handled by module manager or module.php
Dec 07 18:34:36 &lt;EvanDotPro&gt; did we?
Dec 07 18:34:36 &lt;weierophinney&gt; EvanDotPro, the question of view script paths is a good one, though. Right now, with PHP config files, it's a non-issue -- use __DIR__. But with other styles, yes, we have issues. But the idea would be to include a pre-parser to substitute values as eneded.
Dec 07 18:34:40 &lt;DASPRiD&gt; EvanDotPro, config gives relative path to module, module makes it to an absolute one
Dec 07 18:34:49 &lt;mabe_&gt; no really if you have more than local+global
Dec 07 18:34:54 &lt;DASPRiD&gt; weierophinney, i wouldnt even do that
Dec 07 18:34:55 &lt;mabe_&gt; or i'm wrong
Dec 07 18:35:10 &lt;Thinkscape&gt; Can I point out one thing?
Dec 07 18:35:27 &lt;Thinkscape&gt; You define module paths explicitly (inside init.php or public.php)
Dec 07 18:35:27 &lt;weierophinney&gt; Thinkscape, go for it
Dec 07 18:35:32 &lt;Thinkscape&gt; so you know those paths ...
Dec 07 18:35:35 &lt;EvanDotPro&gt; i think i might be with Thinkscape on this one... if we need a relative path to the module for something, that's probably best suited to handle in Module.php or similar.
Dec 07 18:35:43 &lt;DASPRiD&gt; Thinkscape, +1
Dec 07 18:35:50 &lt;weierophinney&gt; EvanDotPro, Thinkscape +1
Dec 07 18:35:54 &lt;DASPRiD&gt; Thinkscape, it's not really a configuration thingy like that
Dec 07 18:35:54 &lt;EvanDotPro&gt; i'd say we should discourage "dynamic" values in configs
Dec 07 18:36:01 &lt;DASPRiD&gt; EvanDotPro, right
Dec 07 18:36:02 &lt;Thinkscape&gt; So it boils down to the scenario of: a module with _NO CONFIG_ by default searches for it's OWN view scripts.
Dec 07 18:36:38 &lt;Thinkscape&gt; I'd suggest it's done inside module.php: there you can use __DIR__ and inject it inside ViewScriptStack
Dec 07 18:36:49 &lt;DASPRiD&gt; yep
Dec 07 18:36:51 &lt;EvanDotPro&gt; Thinkscape: exactly
Dec 07 18:37:09 &lt;Thinkscape&gt; We could automate/ease it a bit with some handy function....
Dec 07 18:37:12 &lt;EvanDotPro&gt; and i'd argue that any other scenarios where a similar issue comes up, the solution would be the same
Dec 07 18:37:17 &lt;Thinkscape&gt; (inside Zend\Module\ somewhere)
Dec 07 18:37:21 &lt;DASPRiD&gt; and in case you *want* to configure a path relative to module, you put a relative path in the config, and make in absolute in the Module.php
Dec 07 18:37:29 &lt;DASPRiD&gt; that's really a user choice then
Dec 07 18:37:58 &lt;SpiffyJr_&gt; +1 EvanDotPro Thinkscape
Dec 07 18:38:05 &lt;weierophinney&gt; So, final thoughts on this topic?
Dec 07 18:38:06 &lt;Thinkscape&gt; true. Some people pointed out that modules can be scattered througout the whole filesystem ... but in that case that is NOT a standard scenario to find yourself in. That can be handled with scanners/parsers and __DIR__
Dec 07 18:38:15 &lt;weierophinney&gt; Who wants to write the constant parser functionality?
Dec 07 18:38:33 &lt;EvanDotPro&gt; final thoughts: the one scenario where constants make sense have an alternative suggestion now, so constants in configs can be deprecated
Dec 07 18:38:39 &lt;DASPRiD&gt; weierophinney, will constant parser functionallity go out of Zend\Config\Reader s?
Dec 07 18:38:44 &lt;guilhermeblanco&gt; EvanDotPro: +0
Dec 07 18:38:55 &lt;guilhermeblanco&gt; I'm neutral on this one
Dec 07 18:38:58 &lt;guilhermeblanco&gt; just reading
Dec 07 18:39:01 &lt;EvanDotPro&gt; maybe not deprecated, but not relied upon.
Dec 07 18:39:13 &lt;weierophinney&gt; DASPRiD, I'd say so -- we'd move it into a separate class under the Zend\Config namespace
Dec 07 18:39:21 &lt;Thinkscape&gt; not implicitly (as in ALWAYS) parsed - only opt-in
Dec 07 18:39:24 &lt;weierophinney&gt; (or set of classes, dependent on approach)
Dec 07 18:39:31 &lt;DASPRiD&gt; weierophinney, so Zend\Config\Xml woudl not use <zf:const /> anymore, correct?
Dec 07 18:39:34 &lt;SpiffyJr_&gt; Thinkscape: +1 for opt-in
Dec 07 18:39:40 &lt;MikeA&gt; EvanDotPro: "not relied upon" == confusing
Dec 07 18:39:59 &lt;weierophinney&gt; DASPRiD, it'd be either opt-in, or we'd have a parser that would auto-expand the constant values prior to parsing the file.
Dec 07 18:40:03 &lt;Thinkscape&gt; MikeA: there will be no constant in skeleton app and no global constant inside any Zend\* component
Dec 07 18:40:13 &lt;Thinkscape&gt; weierophinney: me
Dec 07 18:40:17 &lt;EvanDotPro&gt; right now we're 100% reliant on __DIR__ and i'm majorily -1 on that.
Dec 07 18:40:26 &lt;DASPRiD&gt; weierophinney, mh, we gotta talk about implementation details, but later
Dec 07 18:40:27 &lt;weierophinney&gt; Thinkscape, cool
Dec 07 18:40:37 &lt;RobAllen&gt; Consts should only be app specific
Dec 07 18:40:38 &lt;weierophinney&gt; DASPRiD, discuss them with Thinkscape :)
Dec 07 18:40:40 &lt;Thinkscape&gt; Next topic :)
Dec 07 18:40:44 &lt;weierophinney&gt; RobAllen, +1
Dec 07 18:40:54 &lt;EvanDotPro&gt; with Thinkscape's suggestion, we no longer have that particular need for constants (particularly magic constants)
Dec 07 18:41:03 &lt;DASPRiD&gt; indeed
Dec 07 18:41:07 &lt;weierophinney&gt; Next topic is related to the last two:
Dec 07 18:41:14 &lt;weierophinney&gt; "Discuss endorsement of root (main) application path"
Dec 07 18:41:30 &lt;DASPRiD&gt; +1 @ chdir() in entry point
Dec 07 18:41:41 &lt;weierophinney&gt; We've kind of already discussed this with the previous.
Dec 07 18:41:46 &lt;ralphschindler&gt; ie: "Application path becomes a first class constant in Zend\Mvc\Application" ?
Dec 07 18:41:47 &lt;Thinkscape&gt; Does anyone see any problem with chdir(__DIR__) or chdir(__DIR__."/../) and then using relative paths in all other modules/components?
Dec 07 18:41:48 &lt;DASPRiD&gt; somewhat, yeah
Dec 07 18:41:57 &lt;DASPRiD&gt; ralphschindler, no constants
Dec 07 18:41:58 &lt;weierophinney&gt; ralphschindler, no, not a constant
Dec 07 18:41:59 &lt;ralphschindler&gt; constant = concept
Dec 07 18:42:00 &lt;ralphschindler&gt; sorry
Dec 07 18:42:04 &lt;DASPRiD&gt; ralphschindler, ah, heh
Dec 07 18:42:27 &lt;DASPRiD&gt; Thinkscape, i'm fine with that
Dec 07 18:42:36 &lt;weierophinney&gt; Thinkscape, between you and ralphschindler and EvanDotPro, I'm convinced at this time.
Dec 07 18:43:15 &lt;Thinkscape&gt; btw: this and previous one will deprecate things like __DIR__."/../../../../library/foo" ....
Dec 07 18:43:17 &lt;RobAllen&gt; Me too
Dec 07 18:43:23 &lt;EvanDotPro&gt; is getcwd() right now not ./public/?
Dec 07 18:43:27 &lt;ralphschindler&gt; i wasn't arguing one way or the other, i was just pointing out that PHP itself strictly adheres to the current working directory in all filesystem operations
Dec 07 18:43:37 &lt;ralphschindler&gt; EvanDotPro: yes
Dec 07 18:43:38 &lt;DASPRiD&gt; EvanDotPro, that's why we do chdir()
Dec 07 18:43:45 &lt;weierophinney&gt; EvanDotPro, getcwd() will be the public directory -- hence the need to chdir()
Dec 07 18:44:03 &lt;guilhermeblanco&gt; weierophinney: 15min
Dec 07 18:44:04 &lt;SpiffyJr_&gt; weierophinney: presumably in index.php?
Dec 07 18:44:08 &lt;Thinkscape&gt; we have to do chdir() to make _sure_ we have the proper one (bacause i.e. MS IIS handles that differently from Apache)
Dec 07 18:44:11 &lt;ralphschindler&gt; (or any php file dispatched from the public directory or subdirectory that uses your application resources)
Dec 07 18:44:15 &lt;weierophinney&gt; guilhermeblanco, actually, we have up to 45m left.
Dec 07 18:44:17 &lt;DASPRiD&gt; SpiffyJr_, correct
Dec 07 18:44:33 &lt;weierophinney&gt; guilhermeblanco, we alot up to 90, but try to keep it to 60
Dec 07 18:44:40 &lt;weierophinney&gt; SpiffyJr_, yes
Dec 07 18:44:43 &lt;EvanDotPro&gt; Thinkscape: thanks, that's what i was looking for
Dec 07 18:44:47 &lt;Thinkscape&gt; Guys...any counter ideas or arguments?
Dec 07 18:44:51 &lt;weierophinney&gt; any further debate at this time?
Dec 07 18:45:04 &lt;weierophinney&gt; NEXT
Dec 07 18:45:09 &lt;ralphschindler&gt; none from me, i always like utilizing features in PHP :)
Dec 07 18:45:12 &lt;weierophinney&gt; I'm going to skip to the last topic
Dec 07 18:45:17 &lt;weierophinney&gt; and get back to beta2 readiness
Dec 07 18:45:18 &lt;weierophinney&gt; So:
Dec 07 18:45:19 &lt;Thinkscape&gt; ;-)
Dec 07 18:45:25 &lt;weierophinney&gt; "Pull Request Queue Management"
Dec 07 18:45:36 &lt;DASPRiD&gt; +1 for closing
Dec 07 18:45:44 &lt;guilhermeblanco&gt; weierophinney: can I "hijack" and ask for another discussion topic later?
Dec 07 18:45:45 &lt;EvanDotPro&gt; +1 for closing as well
Dec 07 18:45:46 &lt;weierophinney&gt; I think the quote RobAllen put in from Dolf works well.
Dec 07 18:45:49 &lt;EvanDotPro&gt; the stale ones stress me out
Dec 07 18:46:01 &lt;weierophinney&gt; guilhermeblanco, we should only do ones that have been discussed on-list
Dec 07 18:46:06 &lt;weierophinney&gt; if it has, sure.
Dec 07 18:46:16 &lt;guilhermeblanco&gt; weierophinney: it's not... I think we can do later
Dec 07 18:46:34 &lt;Thinkscape&gt; One question: what happens if for a closed PR, someone comments, but the other side "forgets" about it ?
Dec 07 18:46:39 &lt;weierophinney&gt; My feeling is that we should ratify this and have it stated somewhere prominent, so that folks know what to expect.
Dec 07 18:46:45 &lt;Thinkscape&gt; (and does not reopen it)
Dec 07 18:46:57 &lt;weierophinney&gt; Thinkscape, if they don't re-open it, it's their own damn fault. :)
Dec 07 18:47:05 »» prolic does not know how to reopen a pull request
Dec 07 18:47:06 &lt;SpiffyJr_&gt; I agree with closing PR's and only open ones indicating a potential merge. With the removal of the CLA it's going to be essential for new contributors to be able to *quickly* determine if something is fixed or being fixed already.
Dec 07 18:47:16 &lt;wilmoore&gt; +1 for closing
Dec 07 18:47:22 &lt;SpiffyJr_&gt; tldr: +1
Dec 07 18:47:29 &lt;weierophinney&gt; prolic, if you were the person who submitted it, you can revisit it, and there's a nice big "re-open" button
Dec 07 18:47:30 &lt;Thinkscape&gt; Because there are currently few people inside Zend org. on github, there is "fuzzy responsibility"
Dec 07 18:47:39 &lt;RobAllen&gt; Can always open a new PR too
Dec 07 18:47:47 &lt;prolic&gt; thank you weierophinney
Dec 07 18:47:55 &lt;Thinkscape&gt; weierophinney: wait, what? only zend/* people can reopen...
Dec 07 18:47:59 &lt;Thinkscape&gt; not the submitter.
Dec 07 18:48:04 &lt;weierophinney&gt; Thinkscape, NO
Dec 07 18:48:12 &lt;weierophinney&gt; Thinkscape, the SUBMITTER can reopen
Dec 07 18:48:13 &lt;Thinkscape&gt; can I reopen a PR ?
Dec 07 18:48:15 &lt;Thinkscape&gt; ah
Dec 07 18:48:15 &lt;weierophinney&gt; yes
Dec 07 18:48:15 &lt;SpiffyJr_&gt; Thinkscape: No, if your the PR submitter you can reopen.
Dec 07 18:48:18 &lt;Thinkscape&gt; oknm
Dec 07 18:48:32 &lt;Thinkscape&gt; So it's dead simple and should be announced ASAP.
Dec 07 18:48:43 &lt;weierophinney&gt; Thinkscape, :D
Dec 07 18:48:46 &lt;Thinkscape&gt; Let them PR's pour in :)
Dec 07 18:48:49 &lt;weierophinney&gt; that didn't take much convincing. :)
Dec 07 18:48:53 »» SpiffyJr_ waits for emails about his PR's being closed...
Dec 07 18:49:02 &lt;Thinkscape&gt; SpiffyJr_: set it up on github
Dec 07 18:49:08 &lt;RobAllen&gt; Great. That makes life easier :)
Dec 07 18:49:21 &lt;Thinkscape&gt; (email notifications)
Dec 07 18:49:29 &lt;weierophinney&gt; Okay.. I'll put this in the README-DEV.txt, in README-GIT.txt, and find a place on the zf2 subsite to note it.
Dec 07 18:49:46 &lt;weierophinney&gt; So, moving to the last topic:
Dec 07 18:49:52 &lt;weierophinney&gt; "Schedule Beta 2 Release"
Dec 07 18:50:00 &lt;SpiffyJr_&gt; right meow
Dec 07 18:50:06 &lt;weierophinney&gt; Zend\Mail is ready, except for docs. I can get those done by tomorrow.
Dec 07 18:50:12 &lt;EvanDotPro&gt; midnight?
Dec 07 18:50:15 &lt;guilhermeblanco&gt; weierophinney: 2 weeks ago? =P
Dec 07 18:50:21 &lt;RobAllen&gt; Heading home now. Back online later
Dec 07 18:50:26 &lt;weierophinney&gt; I believe mabe_ indicated Zend\Cache is ready?
Dec 07 18:50:28 &lt;Thinkscape&gt; weierophinney: tests? I've taken a peak, and there's been like 20% done
Dec 07 18:50:36 &lt;Thinkscape&gt; peelk
Dec 07 18:50:39 &lt;weierophinney&gt; Thinkscape, on what?
Dec 07 18:50:43 &lt;weierophinney&gt; Mail is tested.
Dec 07 18:50:48 &lt;Thinkscape&gt; Mail
Dec 07 18:50:56 &lt;Thinkscape&gt; hmm..
Dec 07 18:50:56 &lt;weierophinney&gt; Thinkscape, did you look on my branch?
Dec 07 18:50:57 &lt;guilhermeblanco&gt; Thinkscape: I tried test suite yesterday... it was broken to me
Dec 07 18:50:58 &lt;mabe_&gt; cache is ready with some adapters/plugins - see last ML thread
Dec 07 18:51:06 &lt;Thinkscape&gt; yes.
Dec 07 18:51:07 &lt;guilhermeblanco&gt; probably an intermitent issue
Dec 07 18:51:10 &lt;weierophinney&gt; guilhermeblanco, did you test my branch? it's not merged yet.
Dec 07 18:51:21 &lt;EvanDotPro&gt; i have one PR that i am going to be submitting momentarily that i will want in beta2 (removing envs per this meeting)
Dec 07 18:51:26 &lt;Thinkscape&gt; ok, we'll trust you on this one :)
Dec 07 18:51:30 &lt;weierophinney&gt; Thinkscape, The new stuff for the transports, Message, address list, address, and headers is tested. I used TDD as I went.
Dec 07 18:51:33 &lt;Thinkscape&gt; What about Cache?
Dec 07 18:51:35 &lt;guilhermeblanco&gt; weierophinney: no... I'm actually trying to change the EventManager N instances (which it's the topic I wanna inject)
Dec 07 18:51:36 &lt;mabe_&gt; but some is missing like : Memcached, SQLite, apc, ...
Dec 07 18:51:45 &lt;guilhermeblanco&gt; weierophinney: what's supposed to be in b2?
Dec 07 18:51:46 &lt;weierophinney&gt; EvanDotPro, kk, noted
Dec 07 18:51:50 &lt;guilhermeblanco&gt; Cache, Mail and Log?
Dec 07 18:51:55 &lt;weierophinney&gt; mabe_, is the base rewrite ready to go, though?
Dec 07 18:52:09 &lt;mabe_&gt; yes
Dec 07 18:52:12 &lt;DASPRiD&gt; guilhermeblanco, finished zf2 router is in b2
Dec 07 18:52:26 &lt;weierophinney&gt; guilhermeblanco, cache, mail, log, and a bunch of mvc/module imprvements
Dec 07 18:52:29 &lt;EvanDotPro&gt; guilhermeblanco: ah, that... let's talk about that in zftalk.2 with weierophinney after and we'll put it up for the next meeting depending on how the conversation goes
Dec 07 18:52:31 &lt;weierophinney&gt; mabe_, cool -- docs?
Dec 07 18:52:40 &lt;guilhermeblanco&gt; DASPRiD: originally (October-12) we defines that b2 should also include Config
Dec 07 18:52:42 &lt;mabe_&gt; the event manager implementation should be reviewed
Dec 07 18:52:43 &lt;guilhermeblanco&gt; weierophinney: ^
Dec 07 18:52:50 &lt;weierophinney&gt; EvanDotPro, guilhermeblanco I have to leave briefly right after the meeting; I'll ping you when back
Dec 07 18:52:54 &lt;DASPRiD&gt; guilhermeblanco, yeah… except that we had this config discussion right now ;)
Dec 07 18:52:54 &lt;EvanDotPro&gt; guilhermeblanco: (last was re the EventManagerinstances)
Dec 07 18:52:55 &lt;mabe_&gt; docs are missing completely
Dec 07 18:53:05 &lt;EvanDotPro&gt; weierophinney: that's fine
Dec 07 18:53:09 &lt;mabe_&gt; including most phpdocs :(
Dec 07 18:53:20 &lt;weierophinney&gt; mabe_, kk -- how long until you can get docs ready? If I generate skeletons for you, would that help?
Dec 07 18:53:23 &lt;prolic&gt; mabe i can help out with phpdocs
Dec 07 18:53:28 &lt;weierophinney&gt; prolic, awesome
Dec 07 18:54:10 &lt;mabe_&gt; a skeleton helps - i thing end of next week ( fr )
Dec 07 18:54:13 &lt;prolic&gt; i can submit them until friday, is that okay?
Dec 07 18:54:14 &lt;weierophinney&gt; guilhermeblanco, We'll push config changes to b3 now. Too many questions came up in the last two weeks
Dec 07 18:54:23 &lt;guilhermeblanco&gt; weierophinney: ok
Dec 07 18:54:24 &lt;mabe_&gt; prolic great :)
Dec 07 18:54:42 &lt;guilhermeblanco&gt; weierophinney: but we still have to define a commitment here
Dec 07 18:54:43 &lt;weierophinney&gt; mabe_, oof, end of next week is getting a bit late.
Dec 07 18:54:49 &lt;guilhermeblanco&gt; b2 is about to be released when?
Dec 07 18:54:51 &lt;mabe_&gt; weierophinney: can someone review the event manager implementation ?
Dec 07 18:54:57 &lt;weierophinney&gt; guilhermeblanco, was hoping this week
Dec 07 18:55:04 &lt;weierophinney&gt; mabe_, yes, I'll do that ASAP
Dec 07 18:55:07 &lt;mabe_&gt; weierophinney: i'm working
Dec 07 18:55:13 &lt;mabe_&gt; thanks
Dec 07 18:55:21 &lt;prolic&gt; mabe: which branch? cache_beta2 i assume?
Dec 07 18:55:32 &lt;mabe_&gt; prolic yes
Dec 07 18:55:33 &lt;weierophinney&gt; mabe_, I'll fork your branch, and work with prolic on docblocks and docbook skeletons
Dec 07 18:55:35 &lt;prolic&gt; ok
Dec 07 18:55:45 &lt;weierophinney&gt; maybe we can get it in "good enough" state sooner.
Dec 07 18:55:51 &lt;SpiffyJr_&gt; weierophinney: This Friday?
Dec 07 18:55:57 &lt;weierophinney&gt; SpiffyJr_, we can try!
Dec 07 18:56:00 &lt;mabe_&gt; much thanks
Dec 07 18:56:03 &lt;weierophinney&gt; Is intiilapa here?
Dec 07 18:56:06 &lt;SpiffyJr_&gt; Would be nice!
Dec 07 18:56:07 &lt;weierophinney&gt; how is log coming?
Dec 07 18:56:35 &lt;mabe_&gt; how to rewrite dependend components ?
Dec 07 18:56:52 &lt;wilmoore&gt; mabe_: rm -rf
Dec 07 18:56:58 &lt;wilmoore&gt; mabe_: j/k
Dec 07 18:57:06 &lt;intiilapa&gt; weierophinney: yes
Dec 07 18:57:06 &lt;weierophinney&gt; mabe_, hm?
Dec 07 18:57:11 &lt;mabe_&gt; doesn't work well ;)
Dec 07 18:57:17 &lt;weierophinney&gt; intiilapa, what's the state of log?
Dec 07 18:57:43 &lt;intiilapa&gt; I'm overwhelmed right now, and I could not spend any time in ZF since two weeks :\ so at the beginning. I try to continue this week-end.
Dec 07 18:57:51 &lt;weierophinney&gt; mabe_, oh, you mean the components that _consume_ cache?
Dec 07 18:57:53 &lt;mabe_&gt; weierophinney: there are components using Zend\Cache that needs to be changed
Dec 07 18:58:00 &lt;mabe_&gt; oh yes
Dec 07 18:58:18 &lt;weierophinney&gt; mabe_, so, this sounds like we _will_ need to push off until sometime next week
Dec 07 18:58:31 &lt;weierophinney&gt; because we likely don't want to ship with cache broken everywhere.
Dec 07 18:58:41 &lt;prolic&gt; agreed
Dec 07 18:58:42 &lt;weierophinney&gt; mabe_, can you write up the chief changes to consuming the component?
Dec 07 18:58:46 &lt;DASPRiD&gt; weierophinney, then we can probably finish the config rewrite until then
Dec 07 18:58:49 &lt;guilhermeblanco&gt; weierophinney: mabe_ are these components willing to consume cache
Dec 07 18:58:49 &lt;guilhermeblanco&gt; can't we make a boundary to them?
Dec 07 18:58:57 &lt;weierophinney&gt; intiilapa, can you get log ready by this time next week?
Dec 07 18:59:01 &lt;guilhermeblanco&gt; I hate hard dependencies
Dec 07 18:59:02 &lt;mabe_&gt; creating a branch for that and merge to master if ready ?
Dec 07 18:59:14 &lt;weierophinney&gt; guilhermeblanco, that's a good idea -- maybe a compat layer?
Dec 07 18:59:19 &lt;guilhermeblanco&gt; weierophinney: ya
Dec 07 18:59:22 &lt;intiilapa&gt; some news about ralph's idea for bridge and dependency?
Dec 07 18:59:27 &lt;weierophinney&gt; intiilapa, not yet
Dec 07 18:59:28 &lt;prolic&gt; question: should components know about zend\cache or just emit events that a cache listener is listening for?
Dec 07 18:59:30 &lt;mabe_&gt; i'll do that
Dec 07 18:59:37 &lt;intiilapa&gt; weierophinney: when next week?
Dec 07 18:59:41 &lt;weierophinney&gt; prolic, ideally, they'd compose listeners
Dec 07 18:59:41 &lt;guilhermeblanco&gt; interface and you can just attach a control instance that implements the boundary
Dec 07 18:59:48 &lt;weierophinney&gt; intiilapa, this time next week?
Dec 07 19:00:03 &lt;weierophinney&gt; prolic, but that may be a bit much to tackle in a week. :)
Dec 07 19:00:11 &lt;weierophinney&gt; So, I'm going to sum up:
Dec 07 19:00:16 &lt;weierophinney&gt; * Mail is ready except for docs
Dec 07 19:00:36 &lt;weierophinney&gt; * Cache core functionality is ready except for docs; some adapters are not yet ready but can be pushed to a later beta
Dec 07 19:00:39 &lt;wilmoore&gt; of course, that would still break old consumers that assume they need to pass in a Zend_Cache or Zend\Cache instance.
Dec 07 19:00:49 &lt;weierophinney&gt; * Components consuming cache need to be refactored to new API
Dec 07 19:00:59 &lt;wilmoore&gt; weierophinney, +1
Dec 07 19:01:00 &lt;weierophinney&gt; * Log rewrite is just starting
Dec 07 19:01:26 &lt;weierophinney&gt; * tl;dr: Try and get all that done by next week in order to release.
Dec 07 19:01:44 &lt;guilhermeblanco&gt; weierophinney: Components consuming cache should be refactored to not have hard dependency of Cache component
Dec 07 19:01:54 &lt;intiilapa&gt; weierophinney: I _can_ try
Dec 07 19:01:57 &lt;guilhermeblanco&gt; then I'm +1
Dec 07 19:02:04 &lt;weierophinney&gt; guilhermeblanco, that's ideal -- want to assist?
Dec 07 19:02:11 &lt;guilhermeblanco&gt; weierophinney: sure
Dec 07 19:02:17 &lt;weierophinney&gt; intiilapa, anything you can, push off to others to assist
Dec 07 19:02:20 &lt;guilhermeblanco&gt; who's taking care of this change?
Dec 07 19:02:25 &lt;weierophinney&gt; intiilapa, ask in #zftalk.2
Dec 07 19:02:30 &lt;guilhermeblanco&gt; weierophinney: ok
Dec 07 19:02:34 &lt;weierophinney&gt; we'll make helping mabe_ and intiilapa a priority this week!
Dec 07 19:02:48 &lt;intiilapa&gt; weierophinney: add time on my watch XD
Dec 07 19:02:55 &lt;weierophinney&gt; guilhermeblanco, mabe_ is spearheading cache -- work with him, prolic, and myself
Dec 07 19:02:59 &lt;mabe_&gt; :)
Dec 07 19:03:02 &lt;guilhermeblanco&gt; weierophinney: ok
Dec 07 19:03:02 &lt;weierophinney&gt; intiilapa, I'm ON IT!