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