Hi Ede,
Thanks. I let the licencing issue aside as it seems to be resolved. See
my inline answers.
On 11/08/2020 12:01, edgar.sol...@web.de wrote:
tl;dr let's wait how the licensing issue (other email) turns out, apart from
that my answers below.
On 10.08.2020 15:42, Eric wrote:
Hi Ede,
Thanks for your welcome and for your answers. See my inline replies for some of
them (I deleted the other parts).
On 09/08/2020 16:40, edgar.sol...@web.de wrote:
hey Eric,
welcome to the team! see my answers below
On 07.08.2020 20:55, Eric wrote:
Then I checked which OJ lib dependencies rely on JTS and it seems that there is
only deegree 2,
without considering here the plethora of extensions/plugins.
which is the main obstacle. the only clean solution i see is to branch out a
new OJ 2.x that initially will break compatibility to all external plugins.
that's the bad news.
the good news is that this forces us to retouch pretty much all of them and
during this effort we might eventually come up with a working plugin manager
after all.
Less than a day of work should be required (if not less) to update all the
plugins which do not rely on a dependency which relies itself on JTS. I'm going
to test it, to see if it's the case.
I tried with my plugins and I just needed a couple of seconds to do it.
again. we don't have sources for all extensions in OJ Plus at hand or setup to
build at all. the challenge won't be the modding but the finding and setting up
plugin repos.
I wasn't aware of this situation. All of a sudden, it seems to be
another challenge to migrate all the plugins...
This is quite a good news because
if the deegree dependency is updated to its latest version (3.x.x), which
relies on JTS 1.15,
then, theoretically, only the import statements and a few other
com.vividsolutions directly used in the code
need to be modified.
yeah, probably not. deegree2 is afaics used primarily or exclusively for the
WFS extension and i remember checking out deegree3 as a drop in for deegree2
but failing miserably. that's why i stuck with deegree2 happy to have at least
a working WFS extension for the time being.
but again, we can remove WFS from core for OJ 2.x and come up with a working
extension later (if at all).
It seems to be a good compromise for the time being as the migration from
deegree-core 2 to deegree-core 3 isn't straightforward.
agreed
So I'll do that.
- the GeoJSON part (com.vividsolutions.jump.io.geojson) is problematic due to
the jts-io
pom type only, but once imported, this part of the code will be functional
again,
how do you figure? com.vividsolutions.jump.io.geojson was written by myself
from scratch utilizing google's json-simple . it holds no dependency apart from
the jts geometry code. maybe myself placing it in this package has mislead you
Have a look at the GeoJsonReader class for example, and the method
MapGeoJsonGeometryReader (see the comment), or the
GeoJSONFeatureCollectionWrapper class. You will see that there is a dependency
to JTS io.
It doesn't mean that there is a real dependency in the way it works, but JTS io
(now jts-io-common which includes the GeoJSON code) is needed for the code to
compile.
good catch ;). right for creating Geoms from Maps JTS is used. forgot about it.
depending on the size of the import we might just copy the code from the latest
LGPL'd JTS or actually implement it ourselfs. ok, just checked
https://github.com/locationtech/jts/releases/tag/1.17.0
jts-io-common-1.17.0.jar is just 15kB big so let's just keep the JTS code.
OK.
- some classes have been deprecated, removed, or simply moved in the new JTS
versions,
such as com.vividsolutions.jts.geom.DefaultCoordinateSequenceFactory. New
interfaces
have been created in JTS. It shouldn't be too complex to find a solution or a
workaround,
agreed
After the JTS upgrade, only two classes require some changes:
- org.openjump.core.ui.plugin.tools.ReducePointsISAPlugIn -- relatively easy to
solve,
- another written by Michaël, com.vividsolutions.jump.geom.MakeValidOp. For
this one, a few JTS constructors have evolved. The problem is linked to the 4th
dimension, dimension that can't be retrieved any more with a simple getter. One
temporary solution could consist in the creation of a class which extends the
current JTS one with an additional getter / setter for the dimension.
sounds reasonable
I'll then use this temporary solution.
Once these problems of imports are solved, the JTS update should be relatively
straightforward, and some work will probably be needed to update the code
based on deegree. I tried to update one of my plugins, it took me seconds
to do it, and I know that it would be exactly the same for the others, just by
replacing com.vividsolutions.jts by org.locationtech.jts.
sure. problem is not the port but gathering all plugin sources, setting up
build env, porting and releasing the new modification for each and everyone. on
the other hand, there is no alternative since locationtech forced our hand
I answer this point later in the discussion, including a possible migration to
Git.
my maven-fu pretty much is compiled in the OJ pom. never needed it before or
setting up the snapshot/release profiles. so you are on your own there. had to
figure out some Ant for some finetuning but that's it. but it's pretty well
documented, so we will get it into shape if something has to be changed.
OK. Thanks.
going forward i'd suggest you (Eric)
1. work with the stable OJ 1.15 check out
2. remove WFS, here is the adding commit from 2014
https://sourceforge.net/p/jump-pilot/code/4219/
essentially it is the package 'de.latlon.deejump.wfs'
3. fixup a running port to JTS 1.15+
if that worked out you may holler and we can decide how to proceed. i could
imagine
1. doing a "final" OJ 1.16 release only updated on critical issues
2. announcing and moving development focus over to OJ 2.x
3. branch OJ 2.x dev from the OJ 1.16 and apply the changes researched by Eric
3. extension fixup, extension fixup, ...
bonusbonusbonus
b1. maybe even finally porting the svn repo to git (to attract more comitters
and make it easier to apply contributions), what's important to me here is to
keep our commit history so we can still retrace changes after years and find
out why they were done this way by the commit messages or by whom to ask them
b2. tackling java's module system jigsaw, as classpath based loading looks like
to become a thing of the past
so far, so hot ..ede
My plan was nearly identical. Here it is:
- Using OJ 1.15 core including trunk, tags and branches,
there is a critical bug opening JMP project files which should be fixed before
we branch
https://sourceforge.net/p/jump-pilot/bugs/496/
The idea here is to test the migration based on the OJ 1.15 release, to
know if it works and to see what could be improved during the final
migration. Nothing definitive.
- Migrating the code to Git based on something like this:
https://www.atlassian.com/git/tutorials/svn-to-git-prepping-your-team-migration.
It includes the preservation of the commit history (critical point) including
the authors of these commits (more details here -- authors.txt --:
https://www.atlassian.com/git/tutorials/migrating-prepare) -- I don't know yet
if it's possible to link the authors to new Git accounts (this would be great).
Note that this migration automatically recreates the tags and branches,
- Creating a repository with this code on Github or Gitlab (see below for an
open discussion about it),
- At this stage, I would drop the WFS part of the code, including the package
'de.latlon.deejump.wfs' as Ede mentioned but also the 'org.deegree' one. I
would also drop the deegree-core dependency in the pom.xml,
- Removing the two Maven repositories mentioned in a previous message, adding
the new one as mentioned too,
- Updating JTS to a 1.15+ version, ideally the 1.17 as it doesn't change much
between 1.15 and 1.17, both for JTS and JTS io common for the GeoJSON part.
Replacing all com.vividsolutions.jts by org.locationtech.jts and working on a
workaround for both ReducePointsISAPlugIn and MakeValidOp classes. Push the
results once it compiles / works,
- Creating a small document containing all the different undertaken steps.
can be placed under docs/ in the repo
As it's just a test, I thought that it could be good to keep it at the
root of the project, to allow a quick access. But if you prefer the docs
folder, I'll do it.
Any format preference for this document? MD (Markdown) or RST
(reStructuredText)? Both are easily and directly readable from GitHub /
GitLab. I would probably suggest Markdown as it's slightly more common
and because we don't need the specificities of RST at this stage.
- (Bonus) Upgrading the Log4j dependency to v2 and therefore removing the
current security issue in link with it.
the reason that this was not done before is that some extensions were compiled against
it. as we are doing a clean break anyway i am not opposed anymore. note: we have our
"own" com.vividsolutions.jump.workbench.Logger which is supposed to be the one
stop solution for extension but internally uses Log4J again.
What I could do is, once JTS and the OJ code have been updated on the
master branch, to create another branch (based on the latter) to test a
Log4j update. What do you think?
Open discussion:
- Preliminary remark: I don't want at any point of this process, acting as if I
was taking this project under my umbrella/name. As I wrote to Michaël, you're
the drivers/guardians of this project, I'm just a passenger. Therefore, just
let me know what you prefer, the way you want to do things, and I'll act
accordingly. Thanks,
thanks for contributing your time and effort!
It's the least I can do after having used OJ for years.
- The idea is to create a temporary Git project/repository as Ede mentioned
too. There are two main platforms for that, GitHub and GitLab. Let me know
which one you prefer, knowing that it is possible to have both solutions,
working only on one, with a mirroring for the other using this solution (this
includes automated push/pull):
https://docs.gitlab.com/ee/user/project/repository/repository_mirroring.html
good to know.
- Would you prefer an open or a private repository? Why do I consider the
private option here? To avoid any confusion with the current OpenJUMP
repository on sourceforge and to avoid some possible premature forks,
we can easily add notes in the Readme pointing out the provisional status of
the OJ2 development. anyone wanting to fork still i have no objections. after
all it's not called open source for nothing ;)
I'm waiting some other answers (from Peppe, Michaël, etc.) on that. If
none, I'll create a public repository.
- Where do I need to create this project? In my personal account, or an
OpenJUMP organisation is created, and the project takes place there (I would
personally prefer this option, in link with my preliminary remark)? If an
OpenJUMP organisation is created, do you want to create it yourself or is it OK
if I create it?
is "organisation" something like a team definition provided by github/-lab ?
Yes indeed. The term "organisation" is used by GitHub, and the terms
"group" and "subgroup" are used by GitLab:
- (GitHub) https://github.blog/2010-06-29-introducing-organizations/
- (GitLab) https://docs.gitlab.com/ee/user/group/
An Organisation and a Group can contain several projects. It is quite
useful to easily link related projects. In the OJ context, one project
could be the OJ core, another one the default plugins, another the PLUS
plugins, etc. (or a different project for each plugin).
Even if there is no real convention (afaik), organisations and groups
are often written in lower case with hyphens if necessary. For example:
- https://github.com/geotools/geotools
- https://github.com/locationtech/jts
So for OpenJUMP I would suggest:
- openjump for the organisation / group,
- openjump for the main code,
- openjump-test for the temporary project we are talking about here, to
avoid any confusion.
Let me know if you agree with this naming, and what to do, i.e. do you
want that I create this organisation / group or if you prefer doing it?
If you let me do it, I'll transfer immediately the ownership to all of you.
- Have you already got some GitHub/GitLab accounts that I could use to let you
access the project as administrators?
sure, https://github.com/edeso
Thanks.
So if I sum up the questions:
- Github vs Gitlab,
- Open vs private repository (just for the period of this test),
- Where? Personal account vs OpenJUMP organisation,
- GitHub/GitLab accounts for administration.
for preliminary testing on your side feel free to use whichever service
private/public shouldn't matter. for an eventual fork actually used as basis
for OJ2 development let's still talk about details. i'm (and probably the
others as well) not very familiar with setting up projects on either
github/-lab.
If you're happy with a public one, it's probably better as we'll benefit
from better CI/CD tools. This should allow us to test the current OJ
builds, maybe to try different ones if necessary or at least to adapt
the current process within the context of GitHub/GitLab, as it appeared
to be a crucial aspect of the migration.
This is really a test to see the feasibility (Git migration, JTS update,
OJ code update consequently, builds, plugins update, etc.) -- based on
the current OJ 1.15 release for now --, to document the different
undertaken steps in order to be able to reproduce them if needed and
when decided (for example to create OJ 2.x).
About Ede's b2 point: I tested OJ with a Java 11 environment both with OpenJDK
and an Oracle one. It works with both, as far as I tested it. I didn't try with
Java 14. I prefer using OpenJDK as there is no commercial restriction with it.
agreed, we should strive to be openjdk compatible exactly because of the
restrictions that Oracle introduced on their java runtime.
Please let me know what you prefer and I'll act accordingly.
up to you, risking that licensing might not be possible, you may work out a
proper conversion routine to a git service of your choice. using your
documentation we may then using OJ 1.15.1/1.16 as a base for OJ2 development
when/if the licensing is cleared up.
maybe you can shed a light which you think would be the better choice
(github/-lab)?
As a lot of other GIS related projects are already on GitHub, such as
JTS, GeoTools, GeoNode, etc., it seems that it would be a good place to
start with. Some projects like GEOS are directly hosted by OSGeo, then
mirrored on GitHub and GitLab, and thus benefiting from different CI/CD
tools.
Quick summary about the current options:
- choice of GitHub,
- creation of an openjump (lowercase) organisation in GitHub --
question: who does this creation? if you let me do it, I transfer the
co-ownership to Ede, Michaël and Peppe (others?) as soon as I know their
individual GitHub accounts (already known for Ede). This organisation
has a link to the OpenJUMP website, to the OJ mailing list
(jump-pilot-devel@lists.sourceforge.net)
- creation of a openjump-test (lowercase) repository within this
organisation,
- this repository is a public one,
- migration of the OJ core (1.15 release -- revision 6242) containing
the trunk, tags and branches to the openjump-test repository -- being
aware that there is a critical bug reported here:
https://sourceforge.net/p/jump-pilot/bugs/496/,
- this migration uses <sfnetusername>@users.sourceforge.net for the
authors (i.e. all committers), and keeps the history since the first
available SVN revision (using the logs, it seems to be the 859),
- update of JTS (version 1.17) including the update of related OJ code
(solving the two classes mentioned in my previous message), the update
of pom.xml, the removal of deegree-core 2 / deejump code (basically WFS
related code), the creation of a README.md or .rst to clearly state that
this a migration/update test and a link to the current releases / code,
the creation of a documentation / report about this migration at the
root of the repository named MIGRATION.md,
- later, creation of another branch to test if it's possible to use
Log4j v2.
Ede, Michaël and Peppe, could you let me know if you agree or/and
disagree about one or several aspects of this list.
Once all your answers are received and a compromised reached, I'll
proceed accordingly.
Best,
Eric
so far.. thanks! ede
_______________________________________________
Jump-pilot-devel mailing list
Jump-pilot-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel
_______________________________________________
Jump-pilot-devel mailing list
Jump-pilot-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel