JamesMutton

</JamesM>




On 1/17/14 11:09 AM, "Noah Slater" <nsla...@apache.org> wrote:

>Good plan. What's your wiki username? I'll add you.
>
>On 17 January 2014 20:01, Mutton, James <jmut...@akamai.com> wrote:
>> Might I suggest that this sounds like good info to document on the wiki
>> for committers getting started.  I'd add it but I'm not in the
>>allow-list.
>> :)
>>
>> </JamesM>
>>
>>
>>
>>
>> On 1/17/14 4:00 AM, "Garren Smith" <gar...@apache.org> wrote:
>>
>>>I'm claiming 2nd person added!
>>>
>>>On 17 Jan 2014, at 1:28 PM, Noah Slater <nsla...@apache.org> wrote:
>>>
>>>> Psst. A little birdy tells me that if you ask nicely, the infra folks
>>>> will add you to the Apache GitHub org too, so you can show off your
>>>> Apache affiliation. I was the first person added. Because I may have
>>>> been the first to ask. ;)
>>>>
>>>> On 17 January 2014 11:56, Noah Slater <nsla...@apache.org> wrote:
>>>>> Awesome, thanks Paul.
>>>>>
>>>>> Note to all devs: if you want your contributions to CouchDB to show
>>>>>up
>>>>> on your GitHub profile, you have to star each of the repositories.
>>>>> (That's just how GitHub mechanics work for repo mirrors.)
>>>>>
>>>>> You can find them all here:
>>>>>
>>>>> https://github.com/apache
>>>>>
>>>>> On 17 January 2014 00:00, Paul Davis <paul.joseph.da...@gmail.com>
>>>>>wrote:
>>>>>> New repos are up: https://git-wip-us.apache.org/repos/asf?s=couchdb
>>>>>>
>>>>>> I'm gonna go through and initialize them with history from master or
>>>>>> one of the bigcouch and rcouch branches as appropriate.
>>>>>>
>>>>>> On Thu, Jan 16, 2014 at 2:12 PM, Paul Davis
>>>>>><paul.joseph.da...@gmail.com> wrote:
>>>>>>> Infrastructure ticket opened:
>>>>>>>https://issues.apache.org/jira/browse/INFRA-7203
>>>>>>>
>>>>>>> On Thu, Jan 16, 2014 at 1:42 PM, Jan Lehnardt <j...@apache.org>
>>>>>>>wrote:
>>>>>>>>
>>>>>>>> On 16 Jan 2014, at 20:42 , Paul Davis
>>>>>>>><paul.joseph.da...@gmail.com>
>>>>>>>>wrote:
>>>>>>>>
>>>>>>>>> It doesn't appear that this is objectionable to anyone. Does
>>>>>>>>>anyone
>>>>>>>>> have an objection to us having infra/me create these repos to use
>>>>>>>>>for
>>>>>>>>> the bigcouch/rcouch merge work? This won't affect master or
>>>>>>>>>releases
>>>>>>>>> until those merges finish.
>>>>>>>>
>>>>>>>> no objections.
>>>>>>>>
>>>>>>>> Jan
>>>>>>>> --
>>>>>>>>
>>>>>>>>>
>>>>>>>>> On Tue, Jan 14, 2014 at 11:02 PM, Paul J Davis
>>>>>>>>> <paul.joseph.da...@gmail.com> wrote:
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>> On Jan 14, 2014, at 8:37 PM, Benoit Chesneau
>>>>>>>>>>><bchesn...@gmail.com> wrote:
>>>>>>>>>>>
>>>>>>>>>>> On Wed, Jan 15, 2014 at 12:22 AM, Paul Davis
>>>>>>>>>>><paul.joseph.da...@gmail.com>wrote:
>>>>>>>>>>>
>>>>>>>>>>>> I've recently been having discussions about how to handle the
>>>>>>>>>>>> repository configuration for various bits of CouchDB
>>>>>>>>>>>>post-merge. The
>>>>>>>>>>>> work that Benoit has been doing on the rcouch merge branch
>>>>>>>>>>>>have
>>>>>>>>>>>>also
>>>>>>>>>>>> touched on this topic as well.
>>>>>>>>>>>>
>>>>>>>>>>>> The background for those unfamiliar is that the standard
>>>>>>>>>>>>operating
>>>>>>>>>>>> procedure for Erlang is to have a single Erlang application
>>>>>>>>>>>>per
>>>>>>>>>>>> repository and then rely on rebar to fetch each dependency.
>>>>>>>>>>>> Traditionally in CouchDB land we've always just included the
>>>>>>>>>>>>source to
>>>>>>>>>>>> all applications in a single monolithic repository and
>>>>>>>>>>>>periodically
>>>>>>>>>>>> reimport changes from upstream dependencies.
>>>>>>>>>>>>
>>>>>>>>>>>> Recently rcouch changed from the monolithic repository to use
>>>>>>>>>>>>external
>>>>>>>>>>>> repositories for some dependencies. Originally the BigCouch
>>>>>>>>>>>>used an
>>>>>>>>>>>> even more federated scheme that had each Erlang application in
>>>>>>>>>>>>an
>>>>>>>>>>>> external repository (and the core couch Erlang application was
>>>>>>>>>>>>in the
>>>>>>>>>>>> root repository). When Bob Newson and I did the initial
>>>>>>>>>>>>hacking
>>>>>>>>>>>>on the
>>>>>>>>>>>> BigCouch merge we pulled those external dependencies into the
>>>>>>>>>>>>root
>>>>>>>>>>>> repository reverting back to the large monolithic approach.
>>>>>>>>>>>>
>>>>>>>>>>>> After trying to deal with the merge and contemplating how
>>>>>>>>>>>>various
>>>>>>>>>>>> Erlang release things might work it's become fairly apparent
>>>>>>>>>>>>that the
>>>>>>>>>>>> monolithic approach is a bit constrictive. For instance, part
>>>>>>>>>>>>of
>>>>>>>>>>>> rebar's versioning abilities lets you tag repositories to
>>>>>>>>>>>>generate
>>>>>>>>>>>> versions rather than manually updating versions in source
>>>>>>>>>>>>files.
>>>>>>>>>>>> Another thing I've found on other projects is that having each
>>>>>>>>>>>> application in a separate repository requires developers to
>>>>>>>>>>>>think a
>>>>>>>>>>>> bit more detailed about the public internal interfaces used
>>>>>>>>>>>>through
>>>>>>>>>>>> out the system. We've done some work to this extent already
>>>>>>>>>>>>with
>>>>>>>>>>>> separating source directories but forcing commits to multiple
>>>>>>>>>>>> repositories shoots up a big red flag that maybe there's a
>>>>>>>>>>>>high
>>>>>>>>>>>>level
>>>>>>>>>>>> of coupling between two bits of code.
>>>>>>>>>>>>
>>>>>>>>>>>> Other benefits of having the multiple repository setup is that
>>>>>>>>>>>>its
>>>>>>>>>>>> possible that this lends itself to being integrated with the
>>>>>>>>>>>>proposed
>>>>>>>>>>>> plugin system. It'd be fairly trivial to have a script that
>>>>>>>>>>>>went and
>>>>>>>>>>>> fetched plugins that aren't developed at Apache (as a
>>>>>>>>>>>>./configure time
>>>>>>>>>>>> switch type of thing). Having a system like this would also
>>>>>>>>>>>>allow us
>>>>>>>>>>>> to have groups focused on particular bits of development not
>>>>>>>>>>>>have to
>>>>>>>>>>>> concern themselves with the unrelated parts of the system.
>>>>>>>>>>>>
>>>>>>>>>>>> Given all that, I'd like to propose that we move to having a
>>>>>>>>>>>> repository for each application/dependency that we use to
>>>>>>>>>>>>build
>>>>>>>>>>>> CouchDB. Each repository would be hosted on ASF infra and
>>>>>>>>>>>>mirrored to
>>>>>>>>>>>> GitHub as expected. This means that we could have the root
>>>>>>>>>>>>repository
>>>>>>>>>>>> be a simple repo that contains packaging/release/build stuff
>>>>>>>>>>>>that
>>>>>>>>>>>> would enable lots of the ideas offered on configurable types
>>>>>>>>>>>>of
>>>>>>>>>>>> release generation. I've included an initial list of
>>>>>>>>>>>>repositories at
>>>>>>>>>>>> the end of this email. Its basically just the apps that have
>>>>>>>>>>>>been
>>>>>>>>>>>> split out in either rcouch or bigcouch plus a few other bits
>>>>>>>>>>>>from
>>>>>>>>>>>> CouchDB master.
>>>>>>>>>>>>
>>>>>>>>>>>> I would also point out that even though our main repo would
>>>>>>>>>>>>need to
>>>>>>>>>>>> fetch other dependencies from the internet to build the final
>>>>>>>>>>>>output,
>>>>>>>>>>>> we fully intend that our release tarballs would *not* have
>>>>>>>>>>>>this
>>>>>>>>>>>> requirement. Ie, when we go to cut a release part of the
>>>>>>>>>>>>process the
>>>>>>>>>>>> RM would run would be to pull all of those dependencies before
>>>>>>>>>>>> creating a tarball that would be wholly self contained. Given
>>>>>>>>>>>>an
>>>>>>>>>>>> apache-couchdb-x.y.z.tar.gz release file, there won't be a
>>>>>>>>>>>>requirement
>>>>>>>>>>>> to have access to the ASF git repos.
>>>>>>>>>>>>
>>>>>>>>>>>> I'm not entirely sure how controversial this is for anyone.
>>>>>>>>>>>>For
>>>>>>>>>>>>the
>>>>>>>>>>>> most part the reactions I remember hearing were more concerned
>>>>>>>>>>>>on
>>>>>>>>>>>> whether the infrastructure team would allow us to use this
>>>>>>>>>>>>sort
>>>>>>>>>>>>of
>>>>>>>>>>>> configuration. I looked yesterday and asked and apparently its
>>>>>>>>>>>> something we can request but as always we'll want to verify
>>>>>>>>>>>>again if
>>>>>>>>>>>> we have consensus to move in this direction.
>>>>>>>>>>>>
>>>>>>>>>>>> Anyone have comments or flames? Right now I'm just interested
>>>>>>>>>>>>in
>>>>>>>>>>>> feeling out what sort of (lack of?) consensus there is on
>>>>>>>>>>>>such a
>>>>>>>>>>>> change. If there's general consensus I'd think we'd do a vote
>>>>>>>>>>>>in a
>>>>>>>>>>>> couple weeks and if that passes then start on down this road
>>>>>>>>>>>>for the
>>>>>>>>>>>> two merge projects and then it would become part of master
>>>>>>>>>>>>once
>>>>>>>>>>>>those
>>>>>>>>>>>> land (as opposed to doing this to master and then attempting
>>>>>>>>>>>>to
>>>>>>>>>>>>merge
>>>>>>>>>>>> rcouch/bigcouch onto that somehow).
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> This is a quick pass at listing what extra repositories I'd
>>>>>>>>>>>>have
>>>>>>>>>>>> created. Some of these applications only exist in the bigcouch
>>>>>>>>>>>>and/or
>>>>>>>>>>>> rcouch branches so that's where the unfamiliar application
>>>>>>>>>>>>names are
>>>>>>>>>>>> from. I'd also point out that the documentation and fauxton
>>>>>>>>>>>>things are
>>>>>>>>>>>> just on a whim in that we could decouple that development from
>>>>>>>>>>>>the
>>>>>>>>>>>> erlang development. I can see arguments for an against those.
>>>>>>>>>>>>I'm much
>>>>>>>>>>>> less concerned on that aspect than the Erlang parts that are
>>>>>>>>>>>>directly
>>>>>>>>>>>> affected by rebar/Erlang conventions.
>>>>>>>>>>>>
>>>>>>>>>>>>  chttpd
>>>>>>>>>>>>  config
>>>>>>>>>>>>  couch
>>>>>>>>>>>>  couch_collate
>>>>>>>>>>>>  couch_dbupdates
>>>>>>>>>>>>  couch_httpd
>>>>>>>>>>>>  couch_index
>>>>>>>>>>>>  couch_mrview
>>>>>>>>>>>>  couch_plugins
>>>>>>>>>>>>  couch_replicator
>>>>>>>>>>>>  documentation
>>>>>>>>>>>>  ddoc_cache
>>>>>>>>>>>>  ets_lru
>>>>>>>>>>>>  fabric
>>>>>>>>>>>>  fauxton
>>>>>>>>>>>>  ibrowse
>>>>>>>>>>>>  jiffy
>>>>>>>>>>>>  mem3
>>>>>>>>>>>>  mochiweb
>>>>>>>>>>>>  oauth
>>>>>>>>>>>>  rebar
>>>>>>>>>>>>  rexi
>>>>>>>>>>>>  snappy
>>>>>>>>>>>>  twig
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> I also contemplated this and and I am generally +1 on this. And
>>>>>>>>>>>definitely
>>>>>>>>>>> +1 to mirror them on the apache git if possible.  I have a
>>>>>>>>>>>couple of
>>>>>>>>>>> comments though.
>>>>>>>>>>>
>>>>>>>>>>> Initially I also had everything separated in its own source
>>>>>>>>>>>repository. 1
>>>>>>>>>>> year ago I merged back as one core repo the couchdb erlang
>>>>>>>>>>>applications and
>>>>>>>>>>> put all the dependencies in the refuge repository or in the
>>>>>>>>>>>refuge CDN for
>>>>>>>>>>> the spidermonkey and ICU sources.
>>>>>>>>>>>
>>>>>>>>>>> I merged back as one core repo the couchdb erlang applications
>>>>>>>>>>>because they
>>>>>>>>>>> were a little too much dependant. Especially couch_httpd,
>>>>>>>>>>>couch_index and
>>>>>>>>>>> couch_mrview. These applications are not yet enough by
>>>>>>>>>>>themselves.
>>>>>>>>>>>
>>>>>>>>>>> Imo if we split everything in  their own apps, then we should
>>>>>>>>>>>make sure
>>>>>>>>>>> that couch_httpd can be used without couch_index and
>>>>>>>>>>>couch_mrview (which
>>>>>>>>>>> means that "all_docs" is available in couch_httpd). Also we
>>>>>>>>>>>should be able
>>>>>>>>>>> to just launch couch without any of the above. And probably
>>>>>>>>>>>without the
>>>>>>>>>>> need of an ini. The couch_query_server module thing is an
>>>>>>>>>>>interesting case.
>>>>>>>>>>> bigcouch is also introducing `ddoc_cache` which I am not sure
>>>>>>>>>>>why it is
>>>>>>>>>>> provided as a standalone app. Does it means it can be replaced
>>>>>>>>>>>by another
>>>>>>>>>>> application eventually? Why not having it simply in the  couch
>>>>>>>>>>>application?
>>>>>>>>>>> Does it needs to be updated separately?
>>>>>>>>>>>
>>>>>>>>>>> Also  all our base applications should also be named spaced
>>>>>>>>>>>correctly so
>>>>>>>>>>> they will be strictly identified as erlang modules:  "config"
>>>>>>>>>>>is
>>>>>>>>>>>too
>>>>>>>>>>> generic, "ddoc_cache" too. Others are probably OK.
>>>>>>>>>>>
>>>>>>>>>>> There are probably other things that we could provide as apps:
>>>>>>>>>>>
>>>>>>>>>>> - couch_daemon,
>>>>>>>>>>> - couch_js
>>>>>>>>>>> - couch_external
>>>>>>>>>>> - couch_stats
>>>>>>>>>>> - couch_compaction_daemon
>>>>>>>>>>> - couch_httpd_proxy
>>>>>>>>>>>
>>>>>>>>>>> Anyway again i'm +1 for this move, I really think it's a good
>>>>>>>>>>>idea.
>>>>>>>>>>>
>>>>>>>>>>> - benoit
>>>>>>>>>>
>>>>>>>>>> I agree on most of this. Roughly I see three general points.
>>>>>>>>>>
>>>>>>>>>> First, deciding on whether some things are external deps is
>>>>>>>>>>definitely up for discussion. Whether couch_mrview is a different
>>>>>>>>>>app/repo is not necessarily clear cut. Personally I think I over
>>>>>>>>>>engineered couch_index which blurs the lines a bit. If I could
>>>>>>>>>>wave a wand I'd have just couch_mrview and it'd be separate. More
>>>>>>>>>>importantly I think the separate repos makes these things more
>>>>>>>>>>apparent. The fact were discussing this sort of architecture
>>>>>>>>>>thing
>>>>>>>>>>is suggestive that it's forcing us to think a bit harder.
>>>>>>>>>>
>>>>>>>>>> Second is the aspect of composability. For instance the mrview
>>>>>>>>>>thing to me is obviously a different repo precisely so a user
>>>>>>>>>>could import couch (_core?) directly without requiring the spider
>>>>>>>>>>monkey dependency. The monolithic repo doesn't allow this without
>>>>>>>>>>some very non-standard tooling.
>>>>>>>>>>
>>>>>>>>>> Thirdly, app naming is always a contention. The config name was
>>>>>>>>>>actually a hot code upgrade concern. We couldn't reuse
>>>>>>>>>>couch_config directly at the time. And Adam was also hopeful we
>>>>>>>>>>could the it into a useful non-specific config app.
>>>>>>>>>>
>>>>>>>>>> Fourthly, and related to secondly, we'll also want to look at
>>>>>>>>>>splitting other apps out as necessary. The ones you listed I
>>>>>>>>>>think
>>>>>>>>>>aren't controversial it's just that no one has done it yet. My
>>>>>>>>>>list was purely what existed so far without attempting to carve
>>>>>>>>>>things up more. I definitely agree we should carve more in just
>>>>>>>>>>wanted to cover consensus that carving is the right direction.
>>>>>>>>>>
>>>>>>>>>> Fifthly, I'm done typing on my phone. I'll fill in more thoughts
>>>>>>>>>>tomorrow.
>>>>>>>>>>
>>>>>>>>
>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> Noah Slater
>>>>> https://twitter.com/nslater
>>>>
>>>>
>>>>
>>>> --
>>>> Noah Slater
>>>> https://twitter.com/nslater
>>>
>>
>
>
>
>--
>Noah Slater
>https://twitter.com/nslater

Reply via email to