Chris,

    I would really like to see an acknowledgement from Glenn that there are
some imperfections that need addressing.
I wasn't aware I had given anyone the impression of presenting a perfect
submission. In fact, one of my favorite quotes is Voltaire's  *le mieux est
l'ennemi du bien* "the best [perfect] is the enemy of the good", which a
former colleague Charlie Sandbank (now deceased) used to love to cite at
least once a day in ITU committee meetings.

My coding philosophy is by and large based on a step-wise refinement
process:

(1) make it (some subset of possible features) work
(2) make sure its correct (and regression testable) - or if following BDD,
then do this first
(3) make it (more) understandable/maintainable, i.e., re-factor, improve
comments, documentation, etc
(4) optionally, make it faster and smaller
(5) optionally, add more features
(6) go to (1)

Right now, I've finished steps (1) and (2) to a certain degree for an
initial set of features, a degree that I think is sufficient to merit moving
it into trunk. I have not yet seriously addressed (3) through (6). It would
seem strange to expect that all these points have been addressed at this
point in the process.

If this work goes into the trunk, it will provide greater exposure to help
drive and prioritize the remaining steps. There are trade-offs in time and
money about how to spend my effort on steps (3) to (6). I have a well
defined set of issues already waiting for item (5) [1], so, post merge, I
can spend my time on these features or work on (3) or (4), or could attempt
to divide my time between them. The bottom line is that it is a process that
started some time ago and will continue for an indefinite time into the
future. The current request for merging is just one step in that process.

I expect to be maintaining this code and feature set for the indefinite
future, according to the desires of my sponsor, Basis Technologies, who has
a definite interest in the production use of an internationalized FOP, as
well as others who have expressed a similar interest. As a consequence,
there is little chance that any other FOP dev is going to have to work on
this code any time soon. Of course, if they want to do so, I would certainly
welcome community contributions to additional features, testing,
optimization, documentation, etc., in this area. I have no personal need to
*own* this code if others wish to help, and I certainly encourage it;
however, at the same time, I do have a sponsor who is willing to continue
investing in improving FOP in this area, and that willingness should not be
discounted.

[1] http://skynav.trac.cvsdude.com/fop/report/1

Regarding the comments about line length, file length etc., I will note
that, at least with line length, I have maintained the existing (but
arbitrary) limit of 100 in existing files. In the case of new files, I have
chosen to use a longer line length that works better for my development
process. I use GNU EMACS on a wide-screen MacBook Pro that has an effective
width of 200 columns, and which, when this limit is exceeded, wraps the line
(on display only). I find that arbitrary line lengths like 100 curtail my
coding style, and as I've been coding for 40+ years, it's a pretty well
established style (though back in the days when I wrote Fortran IV using an IBM
026 card 
punch<http://en.wikipedia.org/wiki/IBM_026#IBM_024.2C_026_Card_Punches>,
I had to stick with 80 columns). [If line length followed Moore's Law, we
would be using lines of length 1760, starting from 1967 with 80 columns.]

By the way, I would note that the FOP Coding Conventions [2] do not specify
a maximum line length. In searching through the FOP DEV archives, I also
don't see an explicit discussion about line length (though I may have missed
it). What I do see is the initial introduction of the checkstyle target by
Jeremias in 2002 [4], where it appears he basically adjusted the checkstyle
rules to pass most of the extant code at that time.

[2] http://xmlgraphics.apache.org/fop/dev/conventions.html
[3]
http://marc.info/?l=fop-dev&w=2&r=1&s=%2Bcheckstyle+%2Bline+%2Blength&q=b
[4] http://marc.info/?l=fop-dev&m=103124169719869&w=2

My opinion about the various length limits (parameter count, method length,
file length, line length) as reported by checkstyle is that these should
interpreted as guidelines, and not hard rules. In the case of existing
files, it makes sense to attempt to adhere to them when possible (and I have
done this), while recognizing that some exceptions are inevitable. In the
case of new files, I agree they are reasonable targets, but I would not
readily agree to slavish adherence. Some latitude should be afforded to
individual coders, particularly when they are adding a substantial amount of
code in new files.

Regarding identifier length, neither the FOP coding conventions [2] nor
checkstyle indicates or checks for any kind of limitation; so I will
respectfully decline to change my code based on other author's subjective
notions of what is necessary or sufficient. If folks want to have a
discussion about this in order to reach a consensus, then I would not object
to adhering to a consensus that emerges; but IMO, there are more important
things to do than hammer out such a consensus in an objectively verifiable
rule. What I will agree to do is add (over a reasonable period of time)
comments at the point of defining all static, instance, or local variables
that adequately spell out the meaning of any 'short identifier' save for the
obvious indexers, i, j, k, etc, and basic type variables (String s) and
enumerators (incidentally, where would one draw the line with an objective
rule?).

Regards,
Glenn

On Fri, Oct 21, 2011 at 5:50 PM, Chris Bowditch
<bowditch_ch...@hotmail.com>wrote:

> On 21/10/2011 09:36, Simon Pepping wrote:
>
> Hi Simon,
>
>  I am pleased to learn that you are also in need of this new
>> functionality.
>>
>> I share some of Vincent and Peter's concerns about technical points of
>> the code. On the other hand, this is the only implementation of
>> complex scripts we have, created by Glenn, in the style of Glenn. It
>> is an initial implementation, and it is normal that it requires
>> further work, maybe even design changes to make it more flexible. Does
>> keeping it in a branch make that further work easier? Merging it into
>> trunk will enhance its visibility, and make it available to more
>> users.
>>
>
> I'm not opposing the merge, I simply saw it as an appropriate milesone at
> which to open the debate on our concerns. It feels like we are making some
> progress here, so thanks for helping the debate along. I would really like
> to see an acknowledgement from Glenn that there are some imperfections that
> need addressing. If I saw that then I would give my full backing, but even
> without that I would vote +0 for the merge for the reasons you highlight
> above.
>
> Thanks,
>
> Chris
>
>
>
>> Simon
>>
>> On Thu, Oct 20, 2011 at 02:02:10PM +0100, Chris Bowditch wrote:
>>
>>> On 19/10/2011 19:32, Simon Pepping wrote:
>>>
>>> Hi Simon,
>>>
>>> I think you misunderstood my mail. I don't want to stop the merge. I
>>> simply thought it was an appropriate time to discuss some concerns
>>> that Vincent and Peter had identified. You are preaching to the
>>> converted about the need for supporting Complex scripts. It is an
>>> urgent requirement for us too.
>>>
>>> If we don't discuss our concerns over the code now, then when do we
>>> discuss it?
>>>
>>> Vincent and Peter will be replying to this thread shortly and will
>>> outline their primary concerns then.
>>>
>>> Thanks,
>>>
>>> Chris
>>>
>>>
>>
>

Reply via email to