On 6/8/15 12:15 PM, Steven Jacobs wrote:
*IMHO, the first one is "easy" [*] to solve via testing. Either we addproper API testing to Hyracks and ensure Asterix/VXQuery/etc only useproper APIs, and/or we add Asterix/VXQuery/etc builds and tests to thetesting jobs on Jenkins.* -We should be going in the direction of the latter here. As discussed, there are more issues that we see than simple API breakage.Steven On Mon, Jun 8, 2015 at 12:01 PM, Chris Hillery <[email protected]> wrote:I think maybe part of the reason we're having a tough time figuring this out is that we're conflating two different problems. 1. We want to ensure that changes to Hyracks don't break Asterix, VXQuery, etc. 2. We fairly often need to make related changes in Hyracks and Asterix that "go together", ie, Asterix won't build/work with the new change until it can see the corresponding Hyracks change. Those really are completely different problems and may well need different solutions. IMHO, the first one is "easy" [*] to solve via testing. Either we add proper API testing to Hyracks and ensure Asterix/VXQuery/etc only use proper APIs, and/or we add Asterix/VXQuery/etc builds and tests to the testing jobs on Jenkins. The second problem is where we get into the trickiness of Maven releases vs. Apache releases. This is why I asked about the actual requirements and audience. My not-totally-thought-out suggestion for problem #2 would be to not "solve" it at all, and simply state that the tip of Asterix requires the latest tip of Hyracks to build. That's the way we all develop code on our local machines anyway, as far as I know. If there are no outside clients that we have to be concerned about between releases, doesn't this solve the problem? Obviously when it comes time to make a real Hyracks (or Asterix) release we'll need to do a little extra work to ensure those *released* codebases build together. That might mean that we usually need to make Hyracks and Asterix releases at the same time, and I don't know whether that's now harder to achieve in the incubator world. (As a side note, the original proposal to merge the codebases would "solve" [sweep under the rug] problem #1 for Asterix, at the cost of quite possibly making it worse for VXQuery. It would sort of "solve" problem #2 for Asterix as well, because it would physically enforce the same tip-tip rule I'm proposing above. I still believe that we can solve both problems in other strictly superior ways, however.) Ceej aka Chris Hillery [*] - not actually easy. On Mon, Jun 8, 2015 at 6:39 AM, Mike Carey <[email protected]> wrote:All, It feels to me (as one who is completely naive about much of this stuff) like we need two levels of "releases", one level for the outside world(thepublic releases that users might pick up) and a different internal level for the development process (where we essentially want to have tagged/extra-tested checkpoints and want to be able to manage in acarefulway the cross-dependencies from/to other related development processes X-e.g., for X = VXQuery, AsterixDB, and someday Pregelix). When we do an official signed release of anything, we'd need to do one for the DAG of things - so there might be sync'ed "multireleases" (for Hyacks and thenforX). Does that make any sense and/or give anyone more thoughts about howwemight achieve that...? Cheers, MIke On 6/8/15 2:08 AM, Chris Hillery wrote:If not, it may be worth taking a step back and asking what exactly the problem is. I understand the general rule that "we don't want Asterix to be broken", but what precisely does that mean? Is it acceptable that thetipof the Asterix source branch is only guaranteed to build against the tip of the Hyracks branch, for example? If not, why not? What audience are we required to keep things working for at the source level, and what expectations do they have? Ceej aka Chris Hillery On Mon, Jun 8, 2015 at 2:06 AM, Chris Hillery <[email protected]> wrote: So, if we pushed these not-releases to the Nexus repo running at UCI,anddevs pulled from there in preference to "official" repos, that would solve the problem? Ceej aka Chris Hillery On Sun, Jun 7, 2015 at 7:29 PM, Ted Dunning <[email protected]> wrote: If it is pushed to any wider audience than roughly the dev@ list, itisa release. That definitely includes maven central. Artifacts in maven are convenience binaries and this not a release but they should be traceable to an exact source release. Sent from my iPhone On Jun 7, 2015, at 19:10, Till Westmann <[email protected]> wrote:Hmm, good point. It doesn’t have to. One question might be if we canpush it to some maven repository, if it’s not an official release.But I think that should also be fine as long as we don’t push it to arepository that claims to contain official releases.Some mentor input might be helpful on this as well :) Cheers, Till On Jun 7, 2015, at 6:53 PM, Ildar Absalyamov < [email protected]> wrote: Does version bump always mean full-fledged Apache release? We needtheformer just to resolve compile time dependencies. On Jun 7, 2015, at 18:49, Till Westmann <[email protected]> wrote:In principle I agree with this, but creating a new release will bealittle more involved that just running maven, when we do this at theASF.To publish a new release we will have to vet and vote on the release.This takes at least 72 hours in the best case if we’re a TLP, thefirst release candidate is great, and have enough people to vote. Whilewe’restill in the incubator, releasing will take a little longer as we also have to get enough votes for the release in the incubator.As I proposed earlier, it would be really good to go through the fullrelease process once, before we decide how to structure ourprocessesand infrastructure.Cheers,Till On Jun 4, 2015, at 6:37 PM, Ildar Absalyamov < [email protected]> wrote:I am with Chris on repository separation and I think that thesolution to the issue of Hyracks commits breaking Asterix build isusing release Hyracks versions instead of snapshot ones. Yes, that will create a frequent Hyracks releases (we will have to release it each time there is a change which spans both Hyracks & Asterix) and we have abandoned this practice a while ago, but it seems that’s the only way to separate projects logically.Here are few examples to clear the picture. In all examples Hyracksversion is 4.5.6-Snapshot, Asterix version is 1.2.3-Snapshot (butitdepends on previous release version Hyracks 4.5.5):1) The changes span both Asterix & Hyracks.First make sure that Asterix could depend on Hyracks4.5.6-Snapshotwithout API conflicts & switch Asterix dependency to4.5.6-Snapshot.Submit Gerrit review, once it is done as a part of git-asf scriptcommit changes, bump Hyracks version to 4.5.6, make Asterix dependon 4.5.6 and bump Hyracks to 4.5.7-Snapshot right after.2) The changes are located only in Hyracks. Regular review andcommit (with snapshot version) without any version bump.3) The changes are located only in Asterix. Regular review andcommit (with snapshot version) without any version bump.In this scenario Hyracks commit can never make Asterix build fail(since it depends on a stable release) and it’s the responsibilityof the first person, whose commits spans both repos to make sure that the changes in snapshot Hyracks version are properly merged.Regarding the Yingyi’s issue with Gerrit topics: could we modifygit-gerrit script so it would submit both Asterix & Hyracks reviews(granted that the latter is needed), and link them together, settingtheproper topic? Gerrit seems to have API for changing that, right?On Jun 4, 2015, at 15:45, Mike Carey <[email protected]> wrote:Just a quick high-level note from our nearest equivalent of thepointy-haired Dilbert guy (aka me): What would be nice is to haveHyracks changes kick off tests of all "supported client projects" - AsterixDB, VXQuery, maybe also Pregelix, IMRU, and possibly others in the future. I don't think we'll ever prevent such downstream things from beingbrokenunless we run their tests - so I would suggest that we need amechanismto keep Hyracks changes from being permitted to happen without verifying the ongoing integrity of all "blessed" (priority 1) affected projects.... We could have an agreed upon list of such projects and tests for each.... It would be nice to have a "quick check" (hello world still works, basics are working) that was synchronously blocking of such changes, and atleast adaily verification that all's totally well (AFAWK) for them all.Not sure how this affects the still two-sided discussion... :-)Cheers, Mike On 6/2/15 10:00 AM, Chris Hillery wrote:On Mon, Jun 1, 2015 at 9:46 PM, Yingyi Bu <[email protected]>wrote:In my opinion, merging the repository doesn't break theseparation ofhyracks and asterixdb, because the dependencies are controlled bymvn pomfiles.That wasn't the separation I was talking about. I meant APIseparation. Asit is now, when we make a change to both Asterix and Hyracks, weare forcedto consider the API implications, or at least they are put outthere in avery clear way that we need to look at. If we merge them, peoplewill(rightly) treat the whole thing as one product, and there will beno brakeson making wide-ranging API changes.(As an aside: I don't trust Maven's pom files to do a good jobofkeepingthe dependency management clean. In fact I trust it to doprecisely theopposite, by making it both easier to screw up the dependenciesand harderto update them in future.)Again, my point is this: If we truly believe that Hyracks is are-usablecomponent, it should be treated as such from source to build todelivery.By merging in Asterix, we are saying that Asterix is "more equal"thanothers Hyracks clients, to the point that we're tacitly willing tobreakthose other clients in favor of simplifying Asterix development.If that isa fair and true statement, well, then, sure, let's merge them.1) It forces those hyracks-only changes to pass asterixdbregressiontests. Currently hyracks-only change are not verified byasterixdb tests.This is a good point, I will admit. However, I think this samegoal can bemet in other ways. My strong preference would be to create a setof trueAPI tests inside of Hyracks, which both document and test theexternalHyracks API. That will make API-breaking changes in future mucheasier tospot, and also make it clear when Asterix is using internal APIsthat itshould not.2) On my local machine, I don't need to always install hyracks and thenverify asterixdb from time to time. Especially, switchingbranches seemspainful because the installed hyracks snapshot is overwrittenfrom time totime.I haven't tried working on multiple Hyracks branches at thesametime, so Ihaven't experienced this. This seems like a working method error,though.If you're working with two things that are "the same version"(even ifthat's a snapshot version), you'll need to use separate Mavenrepositoriesto install them. In fact, merging the two git repositories woulddo nothingto fix this problem, will it? If the proposal is to put the twosourcerepositories in the same git repo but otherwise leave themuntouched, thennothing would change in the build process. It's possible I'mmissingsomething there, though.3) I only need to make one code review request and one jenkins job.Currently I need to manually change the topic of my asterixdbgerrit CLevery time before I update my hyracks CL, and then manuallyschedulejenkins to run a new asterixdb job. If I forget to schedule thejenkinsjob, the asterixdb CL is still shown to be "verified by jenkins".This is a problem, but it's a problem in commit validation,notinthesource. Modifying the source to work around these issues is stilla badidea IMHO.The "change-topic" issue could be fixed with a bit ofdevelopmentwork(have the topic point to a change, rather than a specific patchseton thechange, so you only need to set it once, for instance).As for manually scheduling Asterix Jenkins jobs, that soundslikeit's onlya problem where your Hyracks change breaks an existing public API.Thatwould be obviated by having true API testing inside of Hyracks,which issomething that we should have regardless of any decisions aboutsourcelocations.In summary / repeating myself again: yes, we have some problemsbecauseHyracks and Asterix are in seperate repositories. But thoseproblems arepointing out true issues with our development and processes.Merging therepositories isn't fixing those problems, it's sweeping them underthe rug.Long term we would be much better off to identify, isolate, andfix theproblems themselves.Ceej aka Chris Hillery Best regards,Ildar Best regards,Ildar
