Hope you don't mind me, cc'ing this to dev@.
Thanks Dan, you provided great insight ...
On 06.10.2017 18:14, Dan Haywood wrote:
[...]
Right now there are three streams of work:
- dev/2.0.0/ISIS-1276-dn-5-1 ... moving up to DN 5.1 was the original
intention of 1.16.0. However, per wiki page [6], it seems that
there's no objection to making this part of 2.0.0, so that's what I'm
aiming for.
- dev/2.0.0/ISIS-1742-remove-deprecations ... I started to do this on
top of the DN 5.1, then decided to split it out. That's because I'm
hoping to run our app, Estatio on it, see whether there are any
performance gains, but without the "risk" of also moving up to DN
5.1. Once all the deprecated stuff is removed, I'll be looking to
merge the DN 5.1 stuff on top of it.
- master which is for maintenance of 1.15.x. I suspect there will be
a 1.15.2 before the end of the year (though this might end up being
called 1.16.0, see below).
_I've some pending questions regarding current code contributions:_
1) ISIS-1636 [1] You wanted me to contribute the java 8 Time
Support code, but closed my PR.
I don't think I closed your PR, or at least not intentionally. That
said...
No worries.
I think, I'm now able to commit to the apache/isis project on
github directly. Shall I create a new branch with
'dev/2.0.0/java-8-time' on [apache/isis] or on my fork
[andi-huber/isis] or what's your plan and/or advice? (What branch
should I base this new branch on, if at all?)
... yes, I think you should create a branch in apache/isis rather than
your own fork. If you want to branch off
"dev/2.0.0/ISIS-1276-dn-5-1", that's fine. Or, you can even just
commit directly to that branch; I won't be touching it for a while, I
think.
However, it occurs to me that we should double check whether DN 5.1
has built-in support for java8 time anyway... now that I think about
it I have a sneaking suspicion that it might. If so, that would
actually render your PR surplus to requirements.
Not sure if I understand ... DN 5 has built in java 8 time support - I'm
using it over half a year now. (The add-on library that provided this
for DN4 is no longer needed.) However, ISIS does not know what to do
with these new value types, when it comes to rendering. Hence my PR
regarding ISIS-1636. (Not to confuse with ISIS-1015 which is active on
your Jira Board.)
I like your suggestion to branch off on dev/2.0.0/ISIS-1276-dn-5-1.
2) ISIS-1698 [2] - CollectionLayout.defaultView not honored. Am I
alone having this issue? (Could you reproduce it/did you see it on
your side?)
This fix [3] is not yet merged into master. You commented:
The pr-84 fix, while perhaps correct, has an impact on any code
written exploiting its behaviour. Maybe that's fine, in which
case will just revert *this* commit. But will look at in more
detail first.
Anything I should be aware of or look into? (I'm using the fix in
production.)
I spoke with Johan about this, he confirms it is an issue. I just got
"cold feet" about applying the change because I didn't quite
understand what I had broken that required the fix, and I wanted to
get 1.15.1 out of the door because I knew it had some other important
fixes.
I think that this fix [3] should go into master, with a view to it
being in the next release 1.15.x release (or 1.16.0 if we call it
that). If you want to merge it in there, please do.
I'll merge this into master.
3) ISIS-1740 [4] - New Feature: Where am I
I'm using it in production. Feedback is positive. I'm sorry having
to confess, that the existing breadcrumb solution is disabled in
all my projects. Do you think there is potential to pull the new
feature into core?
I don't think the current breadcrumb solution has many fans, so no
apologies needed. Very happy to try out a better approach if you have
one.
I think the concept is strong. However, my 'proof of concept' [5]
code - though work's perfectly fine - would need some refactoring
to better integrate with existing framework mechanics. That's
something I'm not sure I could do on my own.
Perhaps you could create a branch off master and merge it into there?
Then I could tidy it up and merge it into master.
The implementation uses java 8 code style, so I guess it won't work with
the current master branch. Anyhow it can wait until there is a joined
2.0.0-SNAPSHOT branch. For anyone interested to try it out, the source
is already available here [4].
Regarding Java 8 in general, I don't know if you heard about the
vavr.io project. I found 2 classes they introduced highly useful, namely
... Lazy and Try.
I have my own customized variants of these and I literally would not
know how to survive without 'Try' [7] in Lambda-Land.
Maybe it's a topic for discussion on its own, how to accumulate the best
ideas out there into ISIS to be fit for java 8+. (You already discussed
lombok, which I find indispensable.)
Since this is a new feature, this is reason enough to call the next
release 1.16.0.
4) I'm having a difficult time understanding how to not pollute
the git tree. Having yet learned some basics, I'm still confused
and lack some best-practice experience on how to organize branches
in a way that is less confusing. If you have any hint for me to
cope with that, that would be much appreciated. Otherwise I'm
learning by doing, I guess. (I better stay on my fork by now,
instead of contributing directly ... I don't know.)
Are you unsure about git, or about how we're using it in the isis
project? If the former, I can provide some pointers. If the latter,
we probably will have to work it out (on dev@ ) as we go along.
the latter
When I'm working on Estatio with Jeroen and Johan, we tend to use
rebasing as a strategy. That is, we'll each have our own branch, but
before we merge back into master, we'll do a rebase first.
As a slight variation on this, I actually like to do a git merge
--no-ff before hand. To my mind this gives the best of both worlds...
the full history of commits is preserved, but the merge commit acts
like a "squash".
For example:
dev A: git checkout -b ISIS-1234-cool-thing
dev B: git checkout -b ISIS-4321-other-thing
dev A and dev B hack away, committng on their branch
dev A finishes, and so does:
git checkout master
git pull # updates master to origin/master; no commits so nothing
changes
git merge --no-ff ISIS-1234-cool-thing # brings in the branch as a
single merge commit
dev B finishes, and so does same thing
git checkout master
git pull # updates master to origin/master; dev A committed and so
master moves forward
git checkout ISIS-4321-other-thing # sping back to dev branch...
git rebase master # ... and rebase on
top of updated master
git checkout master # back to master in
order to do the merge commit
git merge --no-ff ISIS-1234-cool-thing
^^ the above could be streamlined, this is the long version.
I need to digest this. Seems that information is exactly what I was
looking for. Thx again!
Let me know what you think, and we'll move some of this onto dev@
Cheers
Dan
Thanks in advance.
Cheers, Andi
---
[1] https://issues.apache.org/jira/browse/ISIS-1636
[2] https://issues.apache.org/jira/browse/ISIS-1698
[3]
https://github.com/andi-huber/isis/commit/25c3f8e357f090d09d4592b4d68a3afbe850ae75
[4] https://issues.apache.org/jira/browse/ISIS-1740
[5] https://github.com/andi-huber/isis-addon-where_am_i
[6]
https://cwiki.apache.org/confluence/display/ISIS/ApplibCandidatesForRemovalInApacheIsis2
[7] http://www.javadoc.io/doc/io.vavr/vavr/0.9.1