Return-Path: X-Original-To: apmail-reef-dev-archive@minotaur.apache.org Delivered-To: apmail-reef-dev-archive@minotaur.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id DEBC718643 for ; Tue, 19 Jan 2016 09:20:16 +0000 (UTC) Received: (qmail 18268 invoked by uid 500); 19 Jan 2016 09:20:16 -0000 Delivered-To: apmail-reef-dev-archive@reef.apache.org Received: (qmail 18239 invoked by uid 500); 19 Jan 2016 09:20:16 -0000 Mailing-List: contact dev-help@reef.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@reef.apache.org Delivered-To: mailing list dev@reef.apache.org Received: (qmail 18227 invoked by uid 99); 19 Jan 2016 09:20:16 -0000 Received: from Unknown (HELO spamd2-us-west.apache.org) (209.188.14.142) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 19 Jan 2016 09:20:16 +0000 Received: from localhost (localhost [127.0.0.1]) by spamd2-us-west.apache.org (ASF Mail Server at spamd2-us-west.apache.org) with ESMTP id ED9761A087C for ; Tue, 19 Jan 2016 09:20:15 +0000 (UTC) X-Virus-Scanned: Debian amavisd-new at spamd2-us-west.apache.org X-Spam-Flag: NO X-Spam-Score: 3.15 X-Spam-Level: *** X-Spam-Status: No, score=3.15 tagged_above=-999 required=6.31 tests=[DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, HTML_MESSAGE=3, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=disabled Authentication-Results: spamd2-us-west.apache.org (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.com Received: from mx1-eu-west.apache.org ([10.40.0.8]) by localhost (spamd2-us-west.apache.org [10.40.0.9]) (amavisd-new, port 10024) with ESMTP id WleEFHYs6Zn8 for ; Tue, 19 Jan 2016 09:20:06 +0000 (UTC) Received: from mail-io0-f173.google.com (mail-io0-f173.google.com [209.85.223.173]) by mx1-eu-west.apache.org (ASF Mail Server at mx1-eu-west.apache.org) with ESMTPS id 16B4020BC2 for ; Tue, 19 Jan 2016 09:20:05 +0000 (UTC) Received: by mail-io0-f173.google.com with SMTP id 1so527551575ion.1 for ; Tue, 19 Jan 2016 01:20:05 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :content-type; bh=WUQQuGBwOTDr8VWH6tUAVbEUfWk4NBGBukj40eqewn8=; b=EiEOUZ6sCLx3baHsD0jLrYAfES2lmb35x3TIrBFEFgvcpbRulPVUXTzSMTeIUYp41c wu9BHxjZ2+FUcfap3ZlZLiZ9K9xQ5I0ugk/x8Zhj5ItVviTVTjw7KUPNBw1x+veuNVAD YkRaSUhiXa7JDOiwUaBiFcxxKvkQ+thqYFqH+oCRYnIcsGQFXGXl1LuRzsR8wpvj0top e8Uqd5IIjg7lz7/jpp0RL1u8eVtk6HqhGLNxLVhSXBvHBMsPKztYdEPvKonluhRU8Slz 5bQuVslVOLvS+3SRvWMV3VOLxEnfze1RjRFQUyLeEJitWhrPFGxc3TX3rWRAB4bhTROu ZwDA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:content-type; bh=WUQQuGBwOTDr8VWH6tUAVbEUfWk4NBGBukj40eqewn8=; b=PzbTQx2+33nlE/nI+SirVQE54/2JnI1HAbvK66ITZUzUhb19yMWnE3J+Ajh8/73euO QghU3BZN7VqRxKDjJi8VpNIM0at9y3CY4bmP74zgjSy8mNiG7s+OBF7u4ThbNDX218pu faXtrfMmqFkkuQLjHjL2dvI6YztELJo3ztR7OLOJYIZ/SAYPZaGeJJi87YYounDZJc/V RKP4FJVvTECXdzVE+D0Xykr5OJrIJAC6g1mTDteE2zTS/09FDlMtLzQ7XyviPWurTT+T t6Vdwfqx852o1gpJg8FeqwSKcrvohmQUxsrJd2WpEk+6TjKzwBjdOI6/VyoGHhTaSEEL aXZw== X-Gm-Message-State: ALoCoQnybil4pFFLPcDOq5k2RxkRiL/rtzgZNt0v3RaP0PYj7WkWsgRrSkM7aPgOmCrRvRWovR78J3L+KMMunIxlH7iTrTM3lg== X-Received: by 10.107.168.67 with SMTP id r64mr24458971ioe.179.1453195198161; Tue, 19 Jan 2016 01:19:58 -0800 (PST) MIME-Version: 1.0 Received: by 10.36.21.74 with HTTP; Tue, 19 Jan 2016 01:19:38 -0800 (PST) In-Reply-To: References: <569855A6.9060404@weimo.de> From: Anupam Date: Tue, 19 Jan 2016 01:19:38 -0800 Message-ID: Subject: Re: Improving dev experience for REEF .NET To: dev@reef.apache.org Content-Type: multipart/alternative; boundary=001a1142201a936b250529ac5ff4 --001a1142201a936b250529ac5ff4 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Thanks everyone for replying. Few things I would like to respond to and add. "What should we do beyond annotating that code with `[Unstable]`?" Mix of [Unstable] and "stable" APIs in the same assembly and namespace are hard to work with for both REEF developers and users. As a user, Visual Studio is not giving me intellisense on what I am not supposed to use. I feel that developing APIs in internal REEF assembly and then graduating the APIs over time to the public SDK assembly would be a better way of handling this. As long as the user compiles their code against only SDK assembly, they will be fine. (making this change cleanly without making a breaking change would be a difficult thing to accomplish as you pointed out) RTC vs CTR I had collected these items over months and now I think 5.a is much more of and issue than 5.b. I have usually had good experience with PRs wrt 5.b since I have been working on REEF-70, REEF-227 and related JIRAs. If anything, on a spectrum of RTC to CTR I would like to see more rigorous RTC than we do now. "This will be tricky to enforce, as we have plenty of "trivial" code changes flying by." Except for typos/cosmetic changes, there should either be a unittest added or changed at the very least. We are not an old enough codebase to justify non-addition of tests as the rigidity existing design. If we follow good practices while writing the code in the first place, adding/changing unittests should be extremely cheap (in some places that is not the case, which clearly shows in the interfaces which are strongly coupled). We would leave it to the collective wisdom of the contributor and code reviewer to justify and accept no addition of unittest. In any case it should exception and not the norm. We could also keep track of code coverage, with a grain of salt. "we somehow need to agree among the committers on review standards" Please take a look at https://cwiki.apache.org/confluence/display/SPARK/Contributing+to+Spark#Con= tributingtoSpark-CodeReviewCriteria or https://wiki.apache.org/hadoop/CodeReviewChecklist. We could begin from something simple like these. "So far, the coding guidelines are a straight copy from CoreFx, with the added emphasis on immutability in REEF." Personally I haven't seen much being followed except the immutability part :). I doubt that all contributors and committers have gone through the CoreFx guidelines, as they are too verbose and much of it does not apply to us. Which brings me to the next point. "Please have a look at our contributors guide and improve as you see fit" Will do. Will basically borrow heavily from publicly available PR guidelines (Hadoop, CoreFx, Spark etc) and send a draft. Will need some help on the Java specific details. +1 on generating nice website documentation. It also makes it easier to point out problems with documentation. I will be filing JIRA on few of the actionable items here. @bgchun: as engineers we all just see (never ending?) room for improvement... It is fun to contribute on REEF .NET :) Please don't consider this as a wrap up of this thread. Feel free to add more comments and more issues that you have noticed. Thanks, On 15 January 2016 at 12:27, Mariia Mykhailova wrote: > A couple of comments: > > >> b. Documentation for new features. What should be the process? > > However, that documentation is currently largely in vain, as we haven't > found a way to generate a nice website from it like we do on the Java sid= e. > > REEF-113, easy to do if we're willing to use external tools for site > generation. I've just tried to configure Doxygen ( > http://www.stack.nl/~dimitri/doxygen/, free open-source), and it produces > a very similar site with very little configuration effort. I have several > questions about appearance of the website, will ask in JIRA. > > >> 3. Build flakiness 4. Test coverage > > Yes, we need to put more emphasis on test quality. > Right now we have two ongoing issues with existing tests, REEF-1079 which > I'm looking at, and REEF-1040 which is pretty much abandoned. > > -Mariia > > > -----Original Message----- > From: Markus Weimer [mailto:markus@weimo.de] > Sent: Thursday, January 14, 2016 6:13 PM > To: dev@reef.apache.org > Subject: Re: Improving dev experience for REEF .NET > > thanks for putting these together! > > > On 2016-01-14 17:17, Anupam wrote: > > 1. Stable APIs a. Tagging new API which could change frequently b. > > API spread too thin across assemblies c. Accidentally public APIs and > > their deprecation > > We are acting on those, right? Once REEF-1087 is completed, we should be > in much better shape in terms of making only the real APIs `public`. > That in turn should enable us to act on the assembly structure. > > > b. Documentation for new features. What should be the process? > > There are two levels of documentation: API docs and prose on that what an= d > why of a new feature. I think we should absolutely have API docs for ever= y > `public` interface, class and method. However, that documentation is > currently largely in vain, as we haven't found a way to generate a nice > website from it like we do on the Java side. > > Regarding tutorials and such, we are doing badly. Some work has been done= , > but this clearly can be improved. Not sure how to make the time for that, > though. Everybody agrees that we *should* do something, but feature work > seems to get in the way of that pretty reliably. > > > d. Example code should be exemplary 3. Build flakiness 4. Test > > coverage > > +1 on each of them. > > All of these are "easy" fixes. We know how this should be done, we just > haven't. > > > 5. Pull request process > > This is the thorny one. Like most Big Data projects in Apache, we've > decided on a review-then-commit (RTC) workflow, which means every > contribution needs to somehow motivate a committer to review it. > Further, we somehow need to agree amongst the committers on review > standards. Both of these `somehow` statements are extremely tricky in > practice. > > > b. (Subjective) Lack of process for unstable APIs along with PR > > turn-around time (sometimes) makes me wary of splitting work into > > small PRs. > > What should we do beyond annotating that code with `[Unstable]`? > > PR turn-around time will always be dependent on the load on the > committers, unless we decide to ditch RTC for CTR. If we do that, the wor= k > of the release manager becomes more substantial: They'd have to orchestra= te > several rounds of cleanups before the release can be cut. > Other projects do that, so it isn't out of the question. > > > Make a separate project named something like > > Org.Apache.REEF.SDK/Org.Apache.REEF.APIs which has all the supported > > stable and public APIs. [...] Consumption: Split NuGets into SDK and > > Runtime (absolute minimum to run a REEF app) packages. IMRU and such > > applications can have their own NuGets. > > +1, with one change: We need one each for REEF, Wake, Tang. > > One issue I see with this is that we either have to rename all types agai= n > or have to have projects where the DLL, NuGet and default namespace all > have different names. > > > Build flakiness: Use IDE features as much as possible. Minimize > > manually changing build files as much as possible. Clean up > > build.props to not have Targets but just have aliases. Remove hidden > > common operations done via build.props across multiple project builds, > > this makes us susceptible to build concurrency issues. > > +1, this is a bug and really shouldn't need a list discussion to drive > consensus. Feel free to file JIRAs. > > > Test coverage: Mandating addition of unittests for all new code added. > > Add E2E tests, run them on localruntime as well as one box setup of > > YARN (Mesos?). We need to add stress tests. > > [REEF-111] captures the infrastructure aspects of this. I believe Mariia > is looking into it. Regarding the mandate for new tests: This will be > tricky to enforce, as we have plenty of "trivial" code changes flying by. > Asking for tests in addition to those would likely slow us down. For new > features, I am all with you. Which brings us back to the question of how = to > set common expectations for PR reviews. > > > Pull request: We need to come up with PR guidelines > > Please have a look at our contributors guide and improve as you see fit: > > > https://na01.safelinks.protection.outlook.com/?url=3Dhttps%3a%2f%2fcwiki.= apache.org%2fconfluence%2fdisplay%2fREEF%2fContributing&data=3D01%7c01%7cma= mykhai%40microsoft.com%7c511e60c6254e4edf2b9908d31d51680f%7c72f988bf86f141a= f91ab2d7cd011db47%7c1&sdata=3De4UKAdvf4%2fWoRe4Xagl2DXeAkuf24L2YRKf2K%2fKyq= kE%3d > > So far, the coding guidelines are a straight copy from CoreFx, with the > added emphasis on immutability in REEF. > > Markus > --=20 Anupam Bellevue, WA Ph: +1 (425)-777-5570 --001a1142201a936b250529ac5ff4--