++

I think as a parallel thing,  some of the things that are in
quantum.common _might_ want to live in openstack.common.

On 01/03/2012 12:55 PM, Brad Hall wrote:
> I still vote for #2.  I don't think there will be a ton of duplication so 
> we're probably ok in that regard.  Also, it sounds like following suit will 
> make life easier for the ci folks.  I think #3 will be painful (both in 
> initial work and maintenance).
> 
> If we do #2 then we could put quantum-client in tools/pip-requires and there 
> wouldn't be much of any additional burden on the developer unless they were 
> also going to work on the client -- in which case pull a separate repo.
> 
> Thanks,
> Brad
> 
> On Jan 3, 2012, at 12:47 AM, Dan Wendlandt wrote:
> 
>> Hi folks,
>>
>> tl;dr  we need to decide on splitting client repo out of main repo, per 
>> monty's comments.  Because this is what all other openstack projects are 
>> doing, bias is to move in that direction, but benefits are not clear.  If we 
>> do split, my suggestion is to create two repos (client/server), not three 
>> repos (client/server/common)
>>
>> longer version: 
>>
>> At the 11/29 netstack meeting, one of the topics discussed was how to handle 
>> monty's suggestion that we split out the client into another repo.  
>>
>> From the 11/29 meeting, here's some background: 
>>
>> 22:12:59 <mtaylor> danwent:
>>  the problem is that we've got projects that need to depend on this stuff 
>> (horizon being a good example)
>>
>> 22:13:17 <mtaylor>
>>  so we need to be able to reference the actual thing that's needed, wihtout 
>> pulling in the entire server
>>
>> 22:13:31 <danwent> mtaylor:
>>  definitely understand that.. we want to be able to package things 
>> separately, definitely
>>
>> 22:13:40 <cdub>
>>  sounds more like packagin then repo mgmt
>>
>> 22:13:51 <danwent>
>>  I think the question is why packaging needs to be tied to repo so tightly.
>>
>> 22:13:58 <cdub>
>>  e.g. simple to build multpile packages from a single repo
>>
>> 22:13:59 <danwent>
>>  i definitely understand that you have a lot of experience here… :)
>>
>> 22:14:17 <danwent> cdub:
>>  yes, in fact that is what we do already.
>>
>> 22:14:23 <cdub>
>>  right
>>
>> 22:14:25 <mtaylor>
>>  it's for a few reasons
>>
>> 22:14:42 <mtaylor>
>>  pip requires git lines can't reference sub directories
>>
>> 22:15:01 <mtaylor>
>>  so you wind up with venv installs that require actual releases to pypi to 
>> be consumable
>>
>> 22:15:36 <mtaylor>
>>  additionally, once you start having submodules in tree, standard tooling 
>> winds up being difficult to apply - knowing to interact with a setup.py in 
>> trunk is straight forward
>>
>> 22:15:50 <mtaylor>
>>  knowing that there are 4 setup.py files spread throughout the tree is less 
>> obviouos
>>
>> 22:16:05 <bhall>
>>  as of yesterday all setup.py's are in the root :)
>>
>> 22:16:24 <danwent>
>>  ok, so the trade-off here is if we want the pip files of other projects to 
>> automatically pull "trunk", we need separate repos?
>>
>> 22:16:41 <mtaylor>
>>  yes
>>
>> 22:17:21 <mtaylor>
>>  also, it's the  model we're using for the other projects, so in keeping 
>> with a consistent project-wide approach, I'd kind of want to hear a really 
>> good reason that it can't work
>>
>> 22:17:28 <bhall>
>>  how many repos are we talking about? client, common, server, plugins?
>>
>> 22:18:16 <danwent>
>>  I'm also worried about trying to keep quantum simple enough that its easy 
>> for new people to join and hack on the project
>>
>> 22:18:25 <mtaylor>
>>  I don't think, as of yet, that we need separate ones for plugins
>>
>> 22:18:55 <mtaylor>
>>  the most important one in my brain in client - as we have a python-*client 
>> project either in existence or coming in to existence for every openstack 
>> project
>>
>> 22:19:08 <bhall>
>>  could we go with two repos? client, common/server/plugins
>>
>> 22:19:11 <mtaylor>
>>  the common one is just because that's how you've organized your code - and 
>> i believe client depends on it, yeah/
>>
>> 22:19:18 <mtaylor>
>>  does client depend on common?
>>
>> 22:19:25 <danwent>
>>  I believe that was the original goal
>>
>> 22:19:50 <danwent>
>>  but perhaps we should revisit that… I'm not sure how much is currently 
>> shared.
>>
>> 22:19:58 <bhall>
>>  I think it does currently
>>
>> 22:20:06 <bhall>
>>  yeah, I don't think there is a lot of code that it depends on
>>
>> 22:20:17 <danwent> mtaylor:
>>  so the main goal here is pip install, which are mainly targetted at 
>> developers right?
>>
>> 22:21:05 <danwent>
>>  (I assume non-developers will get everything via packages, which should 
>> have dependencies described in terms of packages)
>>
>> 22:21:43 <mtaylor> danwent:
>>  yes
>>
>> 22:22:12 <danwent>
>>  ok, thanks for the explanations… I think I understand this better now, but 
>> still need to noodle on whether there are ways we can both be happy :)
>>
>> 22:22:18 <mtaylor> danwent:
>>  there is no thought that people will be doing production releases from pip 
>> :)
>>
>> 22:22:23 <mtaylor> danwent: awesome
>>
>> An here's some more follow-up from the 12/6 meeting: 
>>
>> 22:18:55 <danwent>
>>  first, as discussed last week with mtaylor, we need to figure out our 
>> strategy for whether we are going to split quantum into multiple repos.
>>
>> 22:19:49 <salv>
>>  before deciding on a strategy let's decide whether we want to split the 
>> repos or not! :)
>>
>> 22:20:02 <mtaylor> danwent:
>>  re that: we've got openstack.common going now - so perhaps quantum.common 
>> can live there?
>>
>> 22:20:03 <danwent>
>>  we can have the detailed discussion on the ML, but the high-level options 
>> seem to be (1) keep as is, all one repo (2) split into two repos, client and 
>> server, but potentially duplicate the little bits of shared code and (3) 
>> split into three repos, client, server, and common
>>
>> 22:20:09 <salv>
>>  Splitting in which way exactly? client and server components?
>>
>> 22:20:30 <danwent> mtaylor:
>>  I was thinking something very similar myself, if we decide to go with #2
>>
>> 22:20:57 <danwent> salv:
>>  up for discussion
>>
>> 22:21:14 <danwent> #TODO: #danwent, start ML thread for splitting repos, 
>> include #mtaylor as well
>> 22:21:17 <bhall>
>>  my vote is for #2  (client and "the rest")
>>
>> 22:21:19 <mtaylor> #2 with some elements in openstack.common would be the 
>> thing that matches the other projects more closely
>> 22:21:55 <danwent> if anyone else wants to comment now, go ahead, otherwise 
>> i'll forward this content to start a thead on the ML
>>
>> It seems like we have three primary options (feel free to suggest others).
>>
>> #1: do nothing, keep every in single repo
>> #2: split into two repos: client + server, but potentially duplicate some of 
>> the shared code currently in "common"
>> #3: split into three repos, client, server and common.  
>>
>> A couple thoughts: 
>>
>> I'm still not totally clear on the value of splitting the repos.  Multiple 
>> repos are not required for anyone installing openstack via packages, as we 
>> can easily generate separate client/server packages when using a single repo 
>> (in fact, we already do).  My understanding is that splitting the repos aims 
>> to help developers in the case where a project like horizon specifies a 
>> dependency on quantum by adding a direct reference to the quantum git repo 
>> in pip-requires.  So one thing I'd like to better understand is the cost of 
>> specifying a quantum git repo that includes client + server, as opposed to 
>> one that just includes the client.  If its just a matter of pulling down 
>> some more bytes, that doesn't seem that painful (the quantum source is tiny 
>> anyway).  Is there some greater benefit to splitting repos that I am 
>> missing? 
>>
>> I think the cost of splitting repos is non-trivial, as it makes it harder 
>> for developers to get things running from source tree,  (again, I'm assuming 
>> this is mainly a developer issue, as users should mainly install from 
>> packages).  It may also mean we need to duplicate some common code, though 
>> the need for that may go down if we can get both client + server code bases 
>> to have common code in openstack-common.  
>>
>> Another important consideration is that it seems that all of the other 
>> openstack projects are moving to a model with the client in a separate repo 
>> from the service itself.  There would definitely a cost  both in terms of 
>> developer confusion and pain to the infrastructure team to Quantum being an 
>> oddball in that department.  This alone may be reason enough to follow suit, 
>> but I'd love if there was a clear cut reason other than "everyone else is 
>> doing it".  
>>
>> If we do decide to split repos, my bias would be for #2, which avoid the 
>> even more significant complexity of having three repos.  While some code in 
>> common may need to be duplicated, it may be the case that such code is 
>> duplicated because it really belongs in something like openstack-common, 
>> which could be a dependency of both.  A lof of the code in quantum.common 
>> seems to be of that variety (I suspect much of this code is actually only 
>> used by the server at this point).  The two chunks of common code used by 
>> the main client library are: 
>>
>> from quantum.common import exceptions
>> from quantum.common.serializer import Serializer
>>
>> Serializer seems to be pretty much all stock code that should be in 
>> openstack-common.  
>>
>> The quantum client only uses a few of the Exceptions classes in 
>> common/exeptions.py.  A few of these may need to be duplicated in both the 
>> client/server code.  Though if we make the changes suggested by Aaron to use 
>> only standard HTTP error codes, the applicability of this code to the client 
>> decreases to the point of almost no overlap, I suspect.  
>>
>> Please chime in with your thoughts.  Right now I'm not sure who would work 
>> on this, so if you think you have some cycles, please speak up.
>>
>> Dan
>>
>>
>> -- 
>> ~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> Dan Wendlandt 
>> Nicira Networks: www.nicira.com
>> twitter: danwendlandt
>> ~~~~~~~~~~~~~~~~~~~~~~~~~~~
>>
>> -- 
>> Mailing list: https://launchpad.net/~netstack
>> Post to     : netstack@lists.launchpad.net
>> Unsubscribe : https://launchpad.net/~netstack
>> More help   : https://help.launchpad.net/ListHelp
> 
> 

-- 
Mailing list: https://launchpad.net/~netstack
Post to     : netstack@lists.launchpad.net
Unsubscribe : https://launchpad.net/~netstack
More help   : https://help.launchpad.net/ListHelp

Reply via email to