On Tue, Nov 26, 2013 at 12:31 AM, Damjan Jovanovic <dam...@apache.org>wrote:

> On Mon, Nov 25, 2013 at 1:50 PM, Emmanuel Bourg <ebo...@apache.org> wrote:
> > Hi Damjan,
>
> Hi Emmanuel
>
> > I reviewed the API, here are my observations:
>
> Thank you.
>
> Firstly, we discussed several options before for the 1.0 release, and
> agreed that the contents of trunk would be quickly pushed out as 1.0
> with minimal changes (many/most users are using 1.0-SNAPSHOT), and
> then the big API redesign would be 2.0. I've also been thinking of
> doing a complete rewrite for 2.0 and only pulling in some of the good
> bits we have now. So it's extremely discouraging to be pushed for more
> and more changes, many of which will have no post-1.x value, and don't
> even fit in with what was originally agreed on.
>
> > - Would that make sense to move the LZM implementation to
> commons-compress?
>
> I think you mean LZW, and let's discuss that on COMPRESS-243.
>
> > - What is the purpose of CachingInputStream and CachingOutputStream,
> > there is no Javadoc on these classes. Could they be merged into
> commons-io?
>
> It looks like CachingInputStream is used by IccProfileParser, and
> appears to be used to store data that has been read from the
> underlying stream so it can be re-read later. You can copy it to
> commons-io, but I'd prefer not having a runtime dependency on it. And
> it's ByteSourceInputStream you really want in commons-io and/or
> commons-compress, a gem that allows seeking over an InputStream.
>
> > - Why is ZLibUtils in org.apache.commons.imaging.common instead of
> > org.apache.commons.imaging.util ?
>
> The whole org.apache.commons.imaging.util package is a bit dated.
>
> > - FastByteArrayOutputStream is only used by PackBits in the same
> > package, it could be made package private.
>
> Yes.
>
> > - BitArrayOutputStream in org.apache.commons.imaging.common is only used
> > by classes in org.apache.commons.imaging.common.itu_t4. It could be
> > moved into this package and made package private.
>
> Yes.
>
> > - There are several unused public methods in BinaryInputStream
>
> Yes.
>
> > - org.apache.commons.imaging.common.Compression is never used
>
> I imagine the idea was to use it instead of using the different
> compression classes directly, but whoever started writing it never
> finished.
>
> > - RgbBufferedImageFactory is only used in RoundtripTest, should this be
> > moved with the test sources?
>
> Was probably meant to be the way to create all images in the API, but
> again never got finished, and is probably wrong now since some image
> formats produce paletted images.
>
> > - SimpleBufferedImageFactory is only used by ImageParser and could be
> > made package private.
>
> And bears suspiciously high resemblance to RgbBufferedImageFactory.
>
> > - What about replacing org.apache.commons.imaging.common.ByteOrder with
> > java.nio.ByteOrder?
>
> Enum vs public static final, hmm.
>

I think the point is that ByteOrder is a JRE provided class, we should not
reinvent the wheel, unless we need to support middle-endian. Does Java run
on PDP-11? ;)

Gary


> > - Several methods in BinaryFunctions have an unused 'name' parameter.
>
> Sometimes it's used to form exception text.
>
> > - UnicodeUtils is only used by PngWriter and could be made package
> > private. Considering that any byte sequence is a valid ISO-8859-1 string
> > this class could also be removed.
>
> Yes.
>
> > - Why does RationalNumberUtilities extend Number? And shouldn't this
> > class be named RationalNumberUtils for consistency with the other *Utils
> > classes? I think the class could simply be merged into RationalNumber.
>
> Merging seems best.
>
> > - There are several unused methods in ColorTools, I don't know if they
> > are actually useful and are just missing a unit test.
>
> Not sure.
>
> > - ZigZag is only used in JpegDecoder and could be made package private
>
> Yes.
>
> > - The public permissive field in JpegImageParser is never used
>
> Yes.
>
> > - The public Attribute_Tag field in TiffField is never used
>
> Yes.
>
> > - Some public static final constants don't have an uppercased name, I
> > fixed them on the trunk
>
> Thank you, but that probably broke compatibility for 1.0-SNAPSHOT
> users, so now we have to release RC7 as 1.0 :-).
>
> > - The PixelParser classes in
> > org.apache.commons.imaging.formats.bmp.pixelparsers seems to be used
> > only internally by BmpImageParser. They can't be made package private
> > but could at least be excluded from the Javadoc.
>
> Hidden Javadocs don't hide packages from IDE code completion. There is
> only 2 choices w.r.t. packages: keeping everything in one package to
> hide internal classes by giving them package private access, and
> keeping classes in different packages to better structure code but
> then having to make them public as a result (and choice 3, a pipe
> dream, use OSGi and don't export the packages with internal classes).
> Maybe a public factory method in a public base class returning
> package-private subclasses would work?
>
> > - Same comment for org.apache.commons.imaging.formats.bmp.writers
> >
> > - The Dct, JpegInputStream and YCbCrConverter classes in
> > org.apache.commons.imaging.formats.jpeg.decoder are only used internally
> > by JpegDecoder and could be made package private.
>
> Yes. YCbCrConverter could also be moved into ColorConversions, but I
> also think there's better ways to write it than the massive lookup
> tables I used.
>
> > - What about moving the methods in ColorConversions into the respective
> > Color classes? For example, ColorConversions.convertCIELuvtoXYZ() could
> > become ColorCieLuv.toXYZ(). Another idea would be to use a fluent
> > interface to perform the conversions. Something like
> > ColorConverter.fromRGB(r, g, b).toHSL().
>
> Maybe the former. Some of these conversions are lossy, and there is no
> standard canonical color format that fromRGB() could return, so I'm
> not sure you want to chain them. Also color conversions are also done
> per pixel, so they're performance critical, and 2 method calls, 2
> format conversions, and potentially an extra memory allocation in
> fromRGB(), are going to be very slow. Already I think those methods
> should be made to operate on reusable rewritable pre-allocated objects
> they get passed in, not allocate and return a new object per pixel.
>
> >
> > I haven't reviewed everything yet, but I have the feeling the public API
> > could be better polished to remove unused or internal stuff that are
> > probably not useful for the end users.
>
> Yes, there's plenty more. But users are begging for a 1.0 release, not
> higher API standards.
>
> Thank you again for the review - it will all get fixed or replaced at
> some stage.
>
> Finally, please remember: 1.0 releases are usually the ones that never
> work :-).
>
> > Emmanuel Bourg
>
> Damjan
>
> > Le 24/11/2013 17:54, Damjan Jovanovic a écrit :
> >> Please vote on releasing commons-imaging 1.0 from RC7.
> >>
> >> Last failed vote was for RC5, RC6 had a bust POM. Many improvements
> >> were made since:
> >> * PMD configured better and all PMD warnings fixed, the ones remaining
> >> now are bugs in PMD itself.
> >> * Test coverage greatly improved in many areas, only a few packages
> >> now have < 50% coverage, and that's due to obscure TIFF photometric
> >> interpreters and PSD data parsers that require special images to test
> >> which Imaging can't itself generate, a massive barely used
> >> semi-obsolete Debug class that drags down coverage for
> >> org.apache.commons.imaging.util, and areas of code I don't understand
> >> and so can't easily test (ICC, PSD). While improving test coverage, I
> >> also found and fixed 2 bugs.
> >> * Added package-level Javadoc for image formats.
> >> * RAT exclusions for text-based images, and made a single info.txt
> >> with image formation for all images and added a license header to it.
> >> * Fixed Jacoco configuration in the POM and started using it instead
> >> of that 40+ minute Cobertura nonsense.
> >> * Fixed website broken links.
> >> * Also started assembling a list of why making releases is such a
> >> pain, email coming later :).
> >>
> >> Imaging 1.0 RC7 is available here:
> >> https://dist.apache.org/repos/dist/dev/commons/imaging/ (SVN revision
> 3671)
> >>
> >> Maven artifacts:
> >>
> https://repository.apache.org/content/repositories/staging/org/apache/commons/commons-imaging/
> >>
> >> Change log(s):
> >>
> https://dist.apache.org/repos/dist/dev/commons/imaging/RELEASE-NOTES.txt
> >> http://people.apache.org/~damjan/imaging-1.0-RC7/changes-report.html
> >> http://people.apache.org/~damjan/imaging-1.0-RC7/jira-report.html
> >>
> >> Tag:
> >>
> https://svn.apache.org/repos/asf/commons/proper/imaging/tags/IMAGING_1_0_RC7
> >> (SVN revision 1544953)
> >>
> >> Site:
> >> http://people.apache.org/~damjan/imaging-1.0-RC7/
> >>
> >> KEYS:
> >> http://www.apache.org/dist/commons/KEYS
> >>
> >> I have tested it with OpenJDK 6 on FreeBSD 9.1.
> >>
> >> Please review and vote. This vote will close no sooner than 72 hours
> >> from now, on Wednesday 27 November 2013 at 19:00 GMT.
> >>
> >> [ ] +1 Release these artifacts
> >> [ ] +0 OK, but...
> >> [ ] -0 OK, but really should fix...
> >> [ ] -1 I oppose this release because...
> >>
> >> Thank you!
> >>
> >> Damjan Jovanovic
> >>
> >> ---------------------------------------------------------------------
> >> To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
> >> For additional commands, e-mail: dev-h...@commons.apache.org
> >>
> >
> >
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
> For additional commands, e-mail: dev-h...@commons.apache.org
>
>


-- 
E-Mail: garydgreg...@gmail.com | ggreg...@apache.org
Java Persistence with Hibernate, Second Edition<http://www.manning.com/bauer3/>
JUnit in Action, Second Edition <http://www.manning.com/tahchiev/>
Spring Batch in Action <http://www.manning.com/templier/>
Blog: http://garygregory.wordpress.com
Home: http://garygregory.com/
Tweet! http://twitter.com/GaryGregory

Reply via email to