Re: Extensions for the 1.0 release (report)

Bryce Harrington <[email protected]> Mon, 8 Apr 2019 09:46:10 -0700
Newsgroups gmane.comp.graphics.inkscape.devel
Message-ID <[email protected]>
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