You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@isis.apache.org by Andreas Huber <a....@corax.at> on 2017/10/06 17:50:48 UTC

Re: Request for advice

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