Re: Extensions for the 1.0 release (report)

[email protected] Mon, 08 Apr 2019 23:52:21 -0400
Newsgroups gmane.comp.graphics.inkscape.devel
Message-ID <[email protected]>
Thanks Bryc

On Mon, 2019-04-08 at 09:46 -0700, Bryce Harrington wrote:
> On Mon, Apr 01, 2019 at 10:15:24PM -0400, [email protected] wrote:
> > Extensions 1.0 - 2019-03-24 to 2019-04-01
> > 
> > I've completed a very exausting slog through all of our extensions
> > for
> > the Inkscape 1.0 release. Below is a detailed report on where we
> > currently stand with our extensions repository.
> 
> Thanks for putting this list together.
> 
> Am I adding things up correctly, that there are 149 total
> dependencies,
> of which 95 (64%) are in perfect shape?
> 
> Of the remaining 56, then, half work but produce different output,
> and
> the other half we either don't know how to test it or the extension
> has
> other troubles.
> 
> The work that's gone into the extension repository so far has been
> long needed.  We've accepted extensions with a wide diversity of
> coding
> standards (including a lot of messy cut-and-paste coding), so this
> effort ups our game in a big way here.  We've never required
> extensions
> to include testing, so establishing testability at any level is a
> huge
> advance.  This effort will make our core extensions much more
> maintainable through the future.
> 
> It would be nice to get all of these old extensions to 100% perfect
> in
> our new processes, however that may be too unrealistic in a practical
> timeframe.  "Perfect is the enemy of the good".  So, what if we did a
> bit of triage on this list?  Some extensions may not be that
> important
> to users and could be moved to branches (with corresponding bug
> reports
> so we don't forget about them.)
> 
> Perhaps a the goal of 95% working with perfect test matches could be
> set
> for us to start the beta release?  That would be a significant
> improvement over 64%, but still leave breathing room for problematic
> extensions.  That number could be reached by:
> 
>   a) Writing and improving tests for important extensions
>   b) Fixing extensions with bad test results
>   c) Dropping unimportant extensions with bad or no tests
>   d) Bringing in some new extensions (boosting the denominator)
> 
> > There are some decisions to make wrt how we support dependancies,
> > how
> > we test extensions that call out to outside programs and how we fix
> > the remaining issues.
> 
> Extensions that rely on external programs do sound like they'll be
> particularly tricky to test.  On the other hand, my guess is that
> many
> of these enable interoperability with other applications, or do file
> format conversion, both of which are going to be of high importance
> to
> chunks of our userbase.
> 
> So, while difficult, figuring out an effective way to do testing of
> these would be hugely valuable.
> 
> > == Overview ==
> > 
> >  * 23 Extensions without comparison tests
> > 
> >  * 119 Added Comparison Tests
> >   - 0 Causing an Error (all fixed)
> >   - 95 Working extensions with perfect matches
> >   - 24 Failed to match (output is different)
> > 
> >  * 7 Missing, Removed or untestable extensions
> >   - 1 Delayed fix because of Merge Request
> >   - 1 None Inkex based python extension
> >   - 4 Removed extensions
> >   - 1 Windows extension
> > 
> > === Failed Extensions ===
> > 
> > Large number of differences or just borked:
> > 
> >  - perspective, pixelsnap
> > 
> > Large number of differences or format is not svg:
> > 
> >  - dpiswitcher, extrude, dxf_outlines, hpgl_output
> 
> Guessing these extensions are important for plotting/engraving?
> 
> > Medium number of differences related to path transformatons:
> > 
> >  - foldablebox, polyhedron_3d, summersnight
> 
> These sound fairly specialized?  Maybe not as crucial?
> 
> > Medium number of differences, various attributes missing from
> > output:
> > 
> >  - grid_polar, grid_cartesian, lindenmayer, whirl
> 
> The first two are probably of more general usefulness than the latter
> two, but guessing all four would have some value in bringing up to
> date.
> 
> > Tiny or single difference related to finding layer center:
> > 
> >  - render_barcode, render_barcode_datamatrix,
> > render_barcode_qrcode,
> > render_gear_rack, render_gears, spirograph, split, triangle,
> > wireframe_sphere, grid_isometric, hershey
> 
> Sounds like these are the low hanging fruit of this list, and some of
> those we know are high importance.
> 
> > === Removed: External dependancy, shell script (not python) ===
> > 
> >  - eqtexsvg, plt_output, sk1_output, wmf_output,
> 
> Are these the uniconverter based extensions?  Are there any others?
> 
> A question is whether people are actively using these file formats.
> 
> > === Other ===
> > 
> > gcodetools - Held up because of merge request, cleanup is very
> > large.
> 
> May be worth pushing through on this one.
> 
> > dm2svg - None inkex python extension, could be converted
> 
> "import a DHW file from ACECAD DigiMemo".  I'm not sure what that is
> so
> no idea on its importance, but looks like Thomas Holder did some work
> on
> it so presumably it's close?
> 
> > print_win32_vector - Windows only (untestable) but also an
> > infurating
> > copy of dxf_outlines.py AND untestable because it requires access
> > to
> > printers to print things.
> 
> Looks like it hooks into winspool.drv and gdi32.dll, that may become
> hard to test even on windows going forward.  Is it possible this is
> not
> used much?  If so, then this might be a good candidate to move out of
> the main repo to a branch.
> 
> > === Extensions without comparison tests ===
> > 
> > color_randomize, dxf12_outlines, fractalize, frame,
> > generate_voronoi,
> > gimp_xcf, inkwebeffect, interp_attr_g, jitternodes, layout_nup,
> > loren_ipsum, markers_strokepaint, measure, pathmodifier,
> > pathscatter,
> > prepare_file_save_as, print_win32_vector, render_alphabetsoup,
> > rtree,
> > rubberstretch, synfig_output, synfig_prepare, text_randomcase
> 
> Are color_randomize, fractilize, generate_voronoi, jitternodes,
> pathscatter, and text_randomcase problematic due to their use of
> randomness?  Would adding support for fixed seeding help make testing
> them more tractable?
> 
> Several of the others are file format or external app interop
> extensions, so may be difficult to test for that reason (but still
> important to give attention to.)
> 
> Of the remainder, those sound like priorities for doing test work on,
> they may be reasonably straightforward to get off this list.
> 
> > == Work Done ==
> > 
> >  - Unit Tests: 149 files changed, 1311 insertions(+), 1462
> > deletions(-)
> >  - Test Framework:  3 files changed, 308 insertions(+), 23
> > deletions(-)
> >  - Extensions: 57 files changed, 862 insertions(+), 1185
> > deletions(-)
> >  - Inkex API: 9 files changed, 216 insertions(+), 40 deletions(-)
> 
> Thanks again for this list, hoping progress continues strong so we
> can
> get this resolved and proceed with the release.  Keep us updated, I'd
> like to keep track of what percentage of the extensions are
> considered
> perfect, so I have a feel for roughly when we'll be hitting 85, 90,
> and
> 95%.
> 
> Bryce