Ah I agree the JIRA thing would be too heavy handed.  A single JIRA with
well defined components tied to 'repos' is good.

As far as separate code repos we're talking about different releasable
artifacts for which we as a PMC are responsible for the meaning/etc..  As a
many time RM I definitely dislike the mono repo construct as I understand
it to function.  I prefer repos per source release artifact where all
source in that artifact is a function of the release. I am ok with
different convenience binaries resulting from a single source release
artifact though.

Thanks

On Fri, Jul 12, 2019 at 12:26 PM Adam Taft <a...@adamtaft.com> wrote:

> I think the concerns around user management are valid, are they not?
> Overhead in JIRA goes up (assigning rights to users in JIRA is
> multiplied).  Risk to new contributors is high, because each isolated
> repository has its own life and code contribution styles.  Maybe the actual
> apache infra involvement is low, but the negative effects of community and
> source code bifurcation goes up.
>
> Tagging in mono-repos is done by prefixing the name of the component in the
> tag name.  Your release sources are still generated from the component
> folder (not from the root).
>
> Modularization (as being proposed) is a good thing, but can be done in a
> single repository. It's not a requirement to split up the git project to
> get the benefits of modularization.  That's the point I'm hoping is seen in
> this.
>
>
>
> On Fri, Jul 12, 2019 at 10:08 AM Joe Witt <joe.w...@gmail.com> wrote:
>
> > to clarify user management for infra is not a prob.  it is an ldap group.
> >
> > repo creation is self service as well amd group access is tied to that.
> >
> > release artifact is the source we produce.  this is typically correlated
> to
> > a tag of the repo.  if we have all source in one repo it isnt clear to me
> > how we can maintain that.
> >
> > in any event im not making a statement of whether to do many repos or
> not.
> > just correcting some potentially misleading claims.
> >
> > thanks
> >
> > On Fri, Jul 12, 2019, 12:01 PM Adam Taft <a...@adamtaft.com> wrote:
> >
> > > Just as a point of discussion, I'm not entirely sure that splitting
> into
> > > multiple physical git repositories is actually adding any value.  I
> think
> > > it's worth consideration that all the (good) changes being proposed are
> > > done under a single mono-repository model.
> > >
> > > If we split into multiple repositories, you have substantially
> increased
> > > the infra surface area. User account management overhead goes up.
> Support
> > > from the infra team goes up. JIRA issue management goes up,
> > > misfiled/miscategorized issues become common. It becomes harder for
> > > community members to interact and engage with the project, steeper
> > learning
> > > curve for new contributors. There are more "side channel" conversations
> > and
> > > less transparency into the project as a whole. Git history is much
> harder
> > > (or impossible) to follow across the entire project. Tracking down bugs
> > and
> > > performing git blame or git bisect becomes hard.
> > >
> > > There's nothing really stopping all of these changes from occurring in
> > the
> > > existing repo, we don't have to have a maven pom.xml in the root of the
> > > project repository. It's much easier for contributors to just clone a
> > > single repository, read the README at the root, and get oriented to the
> > > project layout.  Output artifacts can still be versioned differently
> (api
> > > can have a different version from extensions).  "Splitting out" modules
> > can
> > > still happen in the mono-repository.  Jenkins and friends can be taught
> > the
> > > project layout.
> > >
> > > tl;dr - The changes being proposed can be done in a single repository.
> > > Splitting into multiple repositories is adding overhead on multiple
> > levels,
> > > which might be a sneaky form of muda. [1]
> > >
> > > Thanks for reading,
> > > Adam
> > >
> > > [1] https://dzone.com/articles/seven-wastes-software
> > >
> > >
> > > On Thu, Jul 11, 2019 at 11:01 AM Otto Fowler <ottobackwa...@gmail.com>
> > > wrote:
> > >
> > > > I agree that this looks great. I think Mike’s idea is worth
> considering
> > > as
> > > > well. I would hope, that as part of this effort some thought will be
> > > given
> > > > to enhancing the developer documentation around the modules would be
> > > given
> > > > as well.
> > > >
> > > >
> > > >
> > > >
> > > > On July 10, 2019 at 18:15:21, Mike Thomsen (mikerthom...@gmail.com)
> > > wrote:
> > > >
> > > > I agree. It's very well thought out. One change to consider is
> > splitting
> > > > the extensions further into two separate repos. One that would serve
> > as a
> > > > standard library of sorts for other component developers and another
> > that
> > > > would include everything else. Things like the Record API would go
> into
> > > the
> > > > former so that we could have a more conservative release schedule
> going
> > > > forward with those components.
> > > >
> > > > On Wed, Jul 10, 2019 at 4:17 PM Andy LoPresto <alopre...@apache.org>
> > > > wrote:
> > > >
> > > > > Thanks Kevin, this looks really promising.
> > > > >
> > > > > Updating the link here as I think the page may have moved:
> > > > >
> > > >
> > > >
> > >
> >
> https://cwiki.apache.org/confluence/display/NIFI/NiFi+Project+and+Repository+Restructuring
> > > > > <
> > > > >
> > > >
> > > >
> > >
> >
> https://cwiki.apache.org/confluence/display/NIFI/NiFi+Project+and+Repository+Restructuring
> > > > > >
> > > > >
> > > > > Andy LoPresto
> > > > > alopre...@apache.org
> > > > > alopresto.apa...@gmail.com
> > > > > PGP Fingerprint: 70EC B3E5 98A6 5A3F D3C4 BACE 3C6E F65B 2F7D EF69
> > > > >
> > > > > > On Jul 10, 2019, at 12:08 PM, Kevin Doran <kdo...@apache.org>
> > wrote:
> > > > > >
> > > > > > Hi NiFi Dev Community,
> > > > > >
> > > > > > Jeff Storck, Bryan Bende, and I have been collaborating back and
> > > forth
> > > > > > on a proposal for how to restructure the NiFi source code into
> > > smaller
> > > > > > Maven projects and repositories based on the discussion that took
> > > > > > place awhile back on this thread. I'm reviving this older thread
> in
> > > > > > order to share that proposal with the community and generate
> > farther
> > > > > > discussion about at solidifying a destination and a plan for how
> to
> > > > > > get there.
> > > > > >
> > > > > > Specifically, the proposal we've started working on has three
> > parts:
> > > > > >
> > > > > > 1. Goals (more or less a summary of the earlier discussion that
> > took
> > > > > > place on this thread)
> > > > > > 2. Proposed end state of the new Maven project and repository
> > > structure
> > > > > > 3. Proposed approach for how to get from where we are today to
> the
> > > > > > desired end state
> > > > > >
> > > > > > The proposal is on the Apache NiFi Wiki [1], so that we can all
> > > > > > collaborate on it or leave comments there.
> > > > > >
> > > > > > [1]
> > > > >
> > > >
> > > >
> > >
> >
> https://cwiki.apache.org/confluence/display/NIFIREG/NiFi+Project+and+Repository+Restructuring
> > > > > >
> > > > > > Thanks,
> > > > > > Kevin, Jeff, and Bryan
> > > > > >
> > > > > > On Thu, May 30, 2019 at 1:31 PM Kevin Doran <kdo...@apache.org>
> > > wrote:
> > > > > >>
> > > > > >> I am also in favor of splitting the nifi maven project up into
> > > smaller
> > > > > >> projects with independent release cycles in order to decouple
> > > > > >> development at well defined boundaries/interfaces and also to
> > > > > >> facilitate code reuse.
> > > > > >>
> > > > > >> In anticipation of eventually working towards a NiFi 2.0 that
> > > > > >> introduces bigger changes for developers and users, I've started
> > > work
> > > > > >> on a nifi-commons project in which I've extracted out some of
> the
> > > code
> > > > > >> that originally got ported from NiFi -> NiFi Registry, and now
> > > exists
> > > > > >> as similar code in both projects, into a standalone modular
> > library.
> > > > > >> That premilinary work is here on my personal github account for
> > now
> > > > > >> [1].
> > > > > >>
> > > > > >> So far, it only contains some security code in a submodule, and
> > is a
> > > > > >> WIP (more work coming when I have time), but the idea is
> > > nifi-commons
> > > > > >> could have several libraries/modules and would be released
> > > > > >> periodically to use across nifi and registry. If we are talking
> > > about
> > > > > >> spliting the nifi project into framework and extensions, then
> > > > > >> nifi-commons might be a good home for code that needs to be
> shared
> > > > > >> across those two sub projects as well, such as the nifi-api bits
> > Joe
> > > > > >> mentioned.
> > > > > >>
> > > > > >> As part of this larger effort, I would be happy to help get a
> > > > > >> nifi-commons repository started in Apache where we can move
> shared
> > > > > >> code such as nifi-api to prepare for splitting nifi-framework
> and
> > > > > >> nifi-extensions. It also occurs to me that if nifi-framework and
> > > > > >> nifi-extensions are being released independently, nifi-assembly
> > > should
> > > > > >> probably just become a project that pulls in and assembles the
> > > latest
> > > > > >> releases of framework and extensions.
> > > > > >>
> > > > > >> Overall, I think this would be beneficial for most of the work
> > going
> > > > > >> on in Apache NiFi, which would not have to cut across these
> > > different
> > > > > >> project and therefore would be easier to code, test, build, and
> > > > > >> release. However, the level of difficulty will increase for
> > changes
> > > > > >> that will need to span multiple projects, though those are fewer
> > in
> > > > > >> number, so overall I think it would be a net win for the dev
> > > > > >> community.
> > > > > >>
> > > > > >> [1] https://github.com/kevdoran/nifi-commons
> > > > > >>
> > > > > >> Thanks,
> > > > > >> Kevin
> > > > > >>
> > > > > >> On Thu, May 30, 2019 at 12:17 PM Andy LoPresto <
> > > alopre...@apache.org>
> > > > > wrote:
> > > > > >>>
> > > > > >>> I am a strong +1 on the separation and reducing the build time.
> > > With
> > > > > that in mind, I think the process I brought up yesterday [1] of
> > signing
> > > > our
> > > > > artifacts with GPG as part of the Maven build is paramount, because
> > we
> > > > > would now be consuming core code across multiple
> > projects/repositories,
> > > > so
> > > > > there is even less guarantee the code is coming from “us”.
> > > > > >>>
> > > > > >>> [1]
> > > > >
> > > >
> > > >
> > >
> >
> https://lists.apache.org/thread.html/5974971939c539c34148d494f11e8bcf0640c440ce5e7a768ee9db01@%3Cdev.nifi.apache.org%3E
> > > > > <
> > > > >
> > > >
> > > >
> > >
> >
> https://lists.apache.org/thread.html/5974971939c539c34148d494f11e8bcf0640c440ce5e7a768ee9db01@%3Cdev.nifi.apache.org%3E
> > > > > >
> > > > > >>>
> > > > > >>> Andy LoPresto
> > > > > >>> alopre...@apache.org
> > > > > >>> alopresto.apa...@gmail.com
> > > > > >>> PGP Fingerprint: 70EC B3E5 98A6 5A3F D3C4 BACE 3C6E F65B 2F7D
> > EF69
> > > > > >>>
> > > > > >>>> On May 30, 2019, at 9:15 AM, Brandon DeVries <b...@jhu.edu>
> > wrote:
> > > > > >>>>
> > > > > >>>> In regards to "We 'could' also split out the 'nifi-api'...",
> > NiFi
> > > > 2.0
> > > > > would
> > > > > >>>> also be a good time to look at more clearly defining the
> > > separation
> > > > > between
> > > > > >>>> the UI and the framework. Where nifi-api is the contract
> between
> > > the
> > > > > >>>> extensions and the framework, the NiFi Rest api is the
> contract
> > > > > between the
> > > > > >>>> UI and framework... These pieces could potentially be built /
> > > > > deployed /
> > > > > >>>> updated independently.
> > > > > >>>>
> > > > > >>>> On Thu, May 30, 2019 at 11:39 AM Jeff <jtsw...@gmail.com>
> > wrote:
> > > > > >>>>
> > > > > >>>>> In the same category of challenges that Peter pointed out, it
> > > might
> > > > > be
> > > > > >>>>> difficult for Travis to build the "framework" and
> "extensions"
> > > > > projects if
> > > > > >>>>> there are changes in a PR that affect both projects.
> > > > > >>>>>
> > > > > >>>>> Is there a good way in Travis to have the workspace/maven
> repo
> > > > shared
> > > > > >>>>> between projects in a single build?
> > > > > >>>>>
> > > > > >>>>> It's probably always in the direction of the extensions
> project
> > > > > needing
> > > > > >>>>> something new to be added to the framework project rather
> than
> > > the
> > > > > other
> > > > > >>>>> way around, but it'll be tricky to get that working right in
> > > Travis
> > > > > if it's
> > > > > >>>>> not possible to set up the Travis build to know it needs to
> > > deploy
> > > > > the
> > > > > >>>>> framework project artifacts into a maven repo that the
> > extension
> > > > > project
> > > > > >>>>> will use.
> > > > > >>>>>
> > > > > >>>>> One way might be to make sure that changes to the framework
> > > project
> > > > > must be
> > > > > >>>>> in master before the extensions project can make use of them,
> > but
> > > > > that
> > > > > >>>>> would require a "default master" build for the framework
> > project
> > > > > which
> > > > > >>>>> builds master after each commit, and deploys the build
> > artifacts
> > > to
> > > > a
> > > > > >>>>> persistent maven repo that the extension project builds can
> > > access.
> > > > > It
> > > > > >>>>> also makes project-spanning change-sets take longer to review
> > and
> > > > > get fully
> > > > > >>>>> committed to master.
> > > > > >>>>>
> > > > > >>>>> On Thu, May 30, 2019 at 11:23 AM Peter Wicks (pwicks) <
> > > > > pwi...@micron.com>
> > > > > >>>>> wrote:
> > > > > >>>>>
> > > > > >>>>>> One more "not awesome" would be that core changes that
> affect
> > > > > extensions
> > > > > >>>>>> will be a little harder to test. If I make a core change
> that
> > > > > changes the
> > > > > >>>>>> signature of an interface/etc... I'll need to do some extra
> > work
> > > > to
> > > > > make
> > > > > >>>>>> sure I don't break extensions that use it.
> > > > > >>>>>>
> > > > > >>>>>> Still worth it, just one more thing to mention.
> > > > > >>>>>>
> > > > > >>>>>> -----Original Message-----
> > > > > >>>>>> From: Joe Witt <joew...@apache.org>
> > > > > >>>>>> Sent: Thursday, May 30, 2019 9:19 AM
> > > > > >>>>>> To: dev@nifi.apache.org
> > > > > >>>>>> Subject: [EXT] [discuss] Splitting NiFi framework and
> > extension
> > > > > repos and
> > > > > >>>>>> releases
> > > > > >>>>>>
> > > > > >>>>>> Team,
> > > > > >>>>>>
> > > > > >>>>>> We've discussed this a bit over the years in various forms
> but
> > > it
> > > > > again
> > > > > >>>>>> seems time to progress this topic and enough has changed I
> > think
> > > > to
> > > > > >>>>> warrant
> > > > > >>>>>> it.
> > > > > >>>>>>
> > > > > >>>>>> Tensions:
> > > > > >>>>>> 1) Our build times take too long. In travis-ci for instance
> it
> > > > > takes 40
> > > > > >>>>>> minutes when it works.
> > > > > >>>>>> 2) The number of builds we do has increased. We do us/jp/fr
> > > builds
> > > > > on
> > > > > >>>>>> open and oracle JDKs. That is 6 builds.
> > > > > >>>>>> 3) We want to add Java 11 support such that one could build
> > > with 8
> > > > > or 11
> > > > > >>>>>> and the above still apply. The becomes 6 builds.
> > > > > >>>>>> 4) With the progress in NiFi registry we can now load
> > artifacts
> > > > > there and
> > > > > >>>>>> could pull them into NiFi. And this integration will only
> get
> > > > > better.
> > > > > >>>>>> 5) The NiFi build is too huge and cannot grow any longer or
> > else
> > > > we
> > > > > >>>>> cannot
> > > > > >>>>>> upload convenience binaries.
> > > > > >>>>>>
> > > > > >>>>>> We cannot solve all the things just yet but we can make
> > > progress.
> > > > I
> > > > > >>>>>> suggest we split apart the NiFi 'framework/application' in
> its
> > > own
> > > > > >>>>> release
> > > > > >>>>>> cycle and code repository from the 'nifi extensions' into
> its
> > > own
> > > > > >>>>>> repository and release cycle. The NiFi release would still
> > pull
> > > in
> > > > > a
> > > > > >>>>>> specific set of extension bundles so to our end users at
> this
> > > time
> > > > > there
> > > > > >>>>> is
> > > > > >>>>>> no change. In the future we could also just stop including
> the
> > > > > extensions
> > > > > >>>>>> in nifi the application and they could be sourced at runtime
> > as
> > > > > needed
> > > > > >>>>> from
> > > > > >>>>>> the registry (call that a NiFi 2.x thing).
> > > > > >>>>>>
> > > > > >>>>>> Why does this help?
> > > > > >>>>>> - Builds would only take as long as just extensions take or
> > just
> > > > > core/app
> > > > > >>>>>> takes. This reduces time for each change cycle and reduces
> > load
> > > on
> > > > > >>>>>> travis-ci which runs the same tests over and over and over
> for
> > > > each
> > > > > pull
> > > > > >>>>>> request/push regardless of whether it was an extension or
> > core.
> > > > > >>>>>>
> > > > > >>>>>> - It moves us toward the direction we're heading anyway
> > whereby
> > > > > >>>>> extensions
> > > > > >>>>>> can have their own lifecycle from the framework/app itself.
> > > > > >>>>>>
> > > > > >>>>>> How is this not awesome:
> > > > > >>>>>> - Doesn't yet solve for the large builds problem. I think
> > we'll
> > > > get
> > > > > >>>>> there
> > > > > >>>>>> with a NiFi 2.x release which fully leverages nifi-registry
> > for
> > > > > retrieval
> > > > > >>>>>> of all extensions.
> > > > > >>>>>> - Adds another 'thing we need to do a release cycle for'.
> This
> > > is
> > > > > >>>>>> generally unpleasant but it is paid for once a release cycle
> > and
> > > > it
> > > > > does
> > > > > >>>>>> allow us to release independently for new cool
> > extensions/fixes
> > > > > apart
> > > > > >>>>> from
> > > > > >>>>>> the framework itself.
> > > > > >>>>>>
> > > > > >>>>>> Would be great to hear others thoughts if they too feel it
> is
> > > time
> > > > > to
> > > > > >>>>> make
> > > > > >>>>>> this happen.
> > > > > >>>>>>
> > > > > >>>>>> Thanks
> > > > > >>>>>> Joe
> > > > > >>>>>>
> > > > > >>>>>
> > > > > >>>
> > > > >
> > > > >
> > > >
> > >
> >
>

Reply via email to