Hey all,

Thank you for you feedback and great discussion. It looks like I am the
only one who prefer multi-repo model (with tools assistance).

BR,
ILYA



From:   Jan Lehnardt <j...@apache.org>
To:     dev@couchdb.apache.org
Date:   2016/04/15 01:39 AM
Subject:        Re: On dependency management and CI issues associated with it



Hey all, love the discussion! :)

I’ve identified these issues in this thread:

1. multi-repo vs. mono-repo
 - with the sub-issues of how mono the repo should be
 - and how to get tooling and process going specifically

2. keeping safe copies of upstream dependencies to avoid left-padding
 - with the sub-issue of not being able to do this for every single one
   because of licensing.

Let’s try to keep those separate :)


* * * Summary

As for 1, I think we have a rough consensus about going back to some form
of mono-repo. I don’t think anyone disagrees with keeping fauxton and the
docs in separate repos as well, same with nano and nmo, essentially
everything “non-core Erlang”.

The open question then is do we bundle *everything* else together,
including
the Erlang apps that are usable standalone as outlined by Paul, or fold
them
in. I think we have to further separate these by “developed by us” and
“forks
from upstream“ like mochiweb, ibrowse and jiffy (although, nice overlap
here :).

2. we should be discussing. Which deps are we afraid of going away, what
should
our policy be, etc? But let’s spin this out in a new thread. If you want to
reply to this, please choose a new Subject line.


* * * Opinion

From a “this sounds neat”-perspective, I’d prefer these three tiers:

1. one repo for all ASF-developed CouchDB bits that are not reasonably
different
   Erlang apps (couch-replicator, chttpd, etc)*
2. one repo each for ASF-developed CouchDB bits that are reasonably used in
   other projects (khash, b64url, snappy, etc)
3. one repo each for upstream forks.

* although they should continue to be separated in src/subdirs, and not all
in
src/couchdb as we did in 1.x.

My assumption is that category 2 deps are usually not the ones causing
trouble
in today’s development flow (please correct me if I’m wrong).

And I don’t know if development tooling gets any easier if we keep some
things
separate and others not, but if at all possible, I think the above is the
most
sensible.

I don’t have too much experience with git subtree, but the docs are surely
not beginner friendly, but I’m sure with a nice dev guide, we should be
able
to follow along.

Best
Jan
--


> On 13 Apr 2016, at 19:42, Robert Newson <rnew...@apache.org> wrote:
>
> As for the separation we have enforcing good practices, I don't buy it.
>
> I don't think it will be difficult to prevent the kind of coupling you
(and I) would find troubling.  It might even be easier to see if a single
commit touches multiple src/ subdirectories that might be missed when
reviewing separate pr's. At least, I'm not sure I could slide a credit card
between them.
>
>> On 13 Apr 2016, at 17:44, Adam Kocoloski <kocol...@apache.org> wrote:
>>
>>
>>> On Apr 13, 2016, at 12:30 PM, Alexander Shorin <kxe...@gmail.com>
wrote:
>>>
>>> Hi Paul!
>>>
>>> Thanks for great input!
>>>
>>>> On Wed, Apr 13, 2016 at 7:11 PM, Paul Davis
<paul.joseph.da...@gmail.com> wrote:
>>>> If anyone has a strong objection to a monolithic Erlang repo I'd like
>>>> to hear it. Otherwise I may work up a lengthier and more thorough
>>>> proposal for dev@ to consider consolidating all of these repositories
>>>> for sanity and profit.
>>>
>>> It's hard to object against that since this actually solves a lot of
>>> problems solution of which will require more work to do and still will
>>> leave a place for mistakes or require quite specific toolchain to
>>> work.
>>>
>>> Making our current repos design work right will require even more work
to apply.
>>>
>>> So, for point of time/resources/usability there is no much choice.
>>>
>>> I think folding the "Erlang repos developed by ASF" list will solve
>>> most part of the problems. However, I think it worth to keep these
>>> apps in own repos:
>>> - rexi
>>> - b64url
>>> - config
>>> - snappy
>>> - khash
>>> - ets-lru
>>> - twig (why we still need it?)
>>>
>>> As they could be reused outside and they shouldn't involve any
>>> dependencies with other couch modules by design. Everyone else may
>>> stand on where they are.
>>>
>>> P.S. I'm not sure if git-subtree will not introduce more new problems
>>> as it's quite tricky thing to live with it.
>>>
>>> --
>>> ,,,^..^,,,
>>
>> +1 Alex. I disagree that “one Erlang repo” is the goal. Erlang is just
starting to get better support for package managers and the like, and it’d
be a shame to miss out on opportunities for adoption of and contribution to
general-purpose libraries like config, rexi, khash or ets-lru by bundling
them into a repo that doesn’t look or feel like an idiomatic Erlang repo.
And at any rate I certainly hope no one is proposing to copy/paste other
upstream deps into one repo — the current practice of hosting a fork that
doesn’t get recognized as a fork in GitHub is already fairly rude behavior
on our part.
>>
>> I’ll agree that some of the repo creation has gotten a bit out of
control. I believe _some_ of the friction is healthy; I think some of my
contributions over the years were better precisely because the repo
structure made bad designs harder to implement. The friction in the CI / CD
pipeline and overall dependency management is not healthy, though.
>>
>> Moving more code back into one repo puts more responsibility on the devs
to architect new enhancements in the right way without the repo structure
there to enforce a few of the best practices. That’s OK so long as we
understand the tradeoff.
>>
>> Adam
>>
>

--
Professional Support for Apache CouchDB:
https://neighbourhood.ie/couchdb-support/



Reply via email to