[Flow] CGL Filenames

Jacob Floyd cognifloyd at gmail.com
Thu Nov 20 23:17:06 CET 2014

On Thu, Nov 20, 2014 at 5:23 AM, Bastian Waidelich <bastian at typo3.org>

> Martin Kutschker wrote:
>  Though isn't it FooInterface right now? That will get us FooAbstract and
>> FooTrait.
> Yes, that's right. <Name>Interface, Abstract<Name> and <Name>Trait

TL;DR; English grammar suggests that this is the best way to do it, even if
the position of the word is not consistent.

At first glance this feels oddly inconsistent; We do, after all, put each
of those at the same position within php code.

But, I think leaving Abstract as a prefix, and Interface/Trait as suffixes
makes sense. Consider the opposite of how we do it: "Interface Foo", "Trait
Foo" both feel slightly odd when I say them out loud, and "Foo Abstract"
feels very wrong. I think that is because of the odd rules of grammar in
English (Oh! English. What an ugly inconsistent language! And yet, it is my
native tongue).

Consider the phrase "the poor man". 'poor' is an adjective that describes
'man', a noun. Poor happens to also work as a noun, but the definition
changes slightly when you use it as a noun instead of an adjective. And, if
you were to flip the phrase around, it would not make much sense, or could
have (sometimes funny) alternative meanings: "the man poor" (Would that
mean someone without a boyfriend?)

The word "Abstract" works quite well as an adjective, but has the wrong
meaning as a noun. An "Abstract" (noun) is "an abridgement or summary" or a
kind of legal document, or any other summary-like document. But we're not
talking about a document, we're talking about the computing definition
which is an adjective: "abstract type". (

"Abstract" can be a noun, an adjective, or a verb. But, we want the
adjective form. "Interface" is a noun or a verb. "Trait" is always a noun.
So, based on current English rules, "Abstract Foo", "Foo Interface" and
"Foo Trait" feel the most natural. English is a living language where words
can move from one part of speech to another, so we could get away with
using the words in different places in the sentence. But that would, at
least to begin with, feel awkward.

So, I blame the inconsistent placement of Abstract, Interface, and Trait on
the English language.

If we choose to change the placement of the terms in the filenames, then
those file names will be more awkward to read aloud. That's not really a
very big deal, so if we decide to change the CGL in favor of more
consistency, I'm ok with that, just be aware of this one potential pitfall.

Jacob Floyd

PS: English Grammar rules are designed to be broken, but you can only break
one if you are fully aware of the rule, and you decide to break it on
purpose with good reason. Dogmatic obedience to English grammar rules is
like lemmings jumping off a cliff just because all the other lemmings are
doing it.

More information about the Flow mailing list