[Ovirt-devel] How to handle 3rd party code?

Scott Seago sseago at redhat.com
Thu Oct 23 16:17:19 UTC 2008


Darryl Pierce wrote:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> Jason Guiditta wrote:
>   
>> I have been meaning to send an email to the list about this for weeks.
>> I am looking to assemble a consensus on how to handle version control
>> for some 3rd party code we are using in the server suite.  These are,
>> for the moment at least, rails plugins (not necessarily available as
>> gems or rpms) and javascript libraries/plugins.  There are a couple of
>> issues we need to solve here:
>> 1) Keeping up to date on these bits of code, which may or may not be
>> available in git (a lot of the javascript is hosted in svn, some no
>> version control at all)
>> 2) We may have our own patches that we need to carry, though of course
>> we will try to push them upstream.
>> 3) Many of these items do no follow our practices- specifically
>> whitespace and ^Ms.  This makes it difficult to drop in the updated code
>> and compare it to our (cleaned-up) version in git, especially if we have
>> made any changes/customizations.
>>
>> The only idea I have heard/read about that seems to be a possible good
>> solution is sub-modules, but there seems to be a fair amount of
>> maintenance involved in keeping them in synch with our main repo
>> whenever we do an update or patch to one of the modules.  From what I
>> have seen, you have to have a reference in the main repo pointing to the
>> sub-module, including correct version.  This would mean every update to
>> the sub-module would also require an update to the server repo, which is
>> easy enough, but feels like something that would easily be missed. Maybe
>> this is easier than I think, perhaps someone else can clear that up for
>> me.  Also, if there are issues I did not outline above, please speak up
>> so we can consider those as well.
>>     
>
> I think the best solution would be to keep their code out of our
> repository and instead package them as separate RPMs and then depend on
> them from ours. As an example, look at how we require rubygem-cobbler
> and rubygem-activeldap. Neither is kept in our repository.
>
> How many dependencies do we have?
>
>   
The difficulty here is that we're not talking about the sort of reusable 
components that just need to be installed in a standard location and 
added to the right search path (as is the case with rubygem-cobbler). 
We've got javascript files that need to be included in 
/usr/share/ovirt-server/public/javascript and the plugin code that needs 
to be installed under /usr/share/ovirt-server/vendor/plugins.

We _could_ package them as separate RPMs but the dependencies would be 
messy -- since they must live under the app root they would depend on 
ovirt-server, but since ovirt-server needs them, then the dependency 
needs to go the other way.

So what we have here is a collection of code from different sources that 
actually forms part of our app. On top of that we have some 
ovirt-specific customizations to the javascript libraries which does 
need to live in our repo.

Scott




More information about the ovirt-devel mailing list