On Mon, 9 Mar 2015, Michael Zangl wrote:
This is a thing that annoyed me for a long time: JOSM is slow when
zooming out. I would like to improve this and have enough spare time
this summer to work on this as GSoC project.
First: Further improving the drawing speed in JOSM is a very appreciated
goal!
And now the bigger part with the BUT:
I don't think that implementing OpenGL drawing interface will be a
working solution.
* It doesn't look like Java bindings for OpenGL are something which can be
considered a standard. As JOSM is cross-plattform it probably never can
be integrated into the core. See e.g. PROJ4 plugin, which never will
make it into core.
* I doubt that the final drawing speed really is the limiting factor. We
did a lot of optimizations in the last years and these mainly focused on
reducing the number of displayed elements and the element access: This
resulted in major speed improvements. Did you do a simple check and
disable ONLY the final paint functions from drawing and check speed
increase?
* Your proposal contains so much, that it is impossible to get more than a
study in the given time (except you are an software development
magician). NOTE: A solution which does not cover the same display
quality as we have now (i.e. fully support of existing style
capabilities) will be unusable to us later.
Instead of OpenGL a road to have more success seems to be caching
approaches and display data reduction. E.g. we probably draw a lot
information, which actually is not really visible (One example: in low
zoom many streets will be overlayed and displayed as single points - there
is actually no sense in drawing them).
Also in one point I read that "since the map does not change". That's
actually never true. People permanently zoom and pan and change data, so
there are permanent changes.
* An intelligent way to only reevaluate stuff which really changed (we had
already a try to use "dirty" marking and adapted painting, but it never
got working reliable and thus finished) or
* An way to do asynchronous map refresh and simple display of scaled
previous state until done with the proper sectorized refresh (i.e. like
for TMS/WMS) or
* Whatever else clever algorithm to reduce the number of actual redraws
seems a better approach for me.
Regarding development:
JOSM has a continous integration development model. That is largely
incompatible with the idea of GSoC. This means creating a large change in
the JOSM core very likely will fail afterwards. There are two
alternatives:
a) Developing a plugin and doing only minor core changes. A working and
important plugin can then later step-by-step be integrated in the core. I
can't say how easy or complicated that is with the tightly integrated
drawing components, but very likely it is possible to create a small set
of necessary patches to create a usable API. Finding an API which does not
require permanent maintaining the plugin when core changes occur seems not
so easy.
b) Create a separate technology study showing the possibilities of a new
approach which then cut down into pieces and patch by patch integrated.
That needs a lot of additional work after the project is done, may be 5
times longer than the actual GSoc project. Are you willing to do this?
Sorry, but I have not heard of you before, which is not a good sign for
me. I don't know if that approach is allowed within a GSoC project.
Ciao
--
http://www.dstoecker.eu/ (PGP key available)
_______________________________________________
josm-dev mailing list
josm-dev@openstreetmap.org
https://lists.openstreetmap.org/listinfo/josm-dev