[kepler-dev] where do actor packages meant to work with Kepler 1.0 go in the repository?

Chad Berkley berkley at nceas.ucsb.edu
Fri Jun 27 11:44:32 PDT 2008


It seems like if you're mixing and matching like that, then the atomic 
extensions should provide a jar file for other extensions to use.  That 
having been said, it's easy to include various directories with ant.  I 
don't really see it as a problem.

chad


Timothy McPhillips wrote:
> Hi Chad,
> 
> This all sounds good.
> 
> However, it occurs to me that one possible difficulty with having the 
> extensions in the kepler repository itself is that it could be hard to 
> mix and match local copies of extensions checked out of different 
> repositories.  If a local copy of the source code for the core of kepler 
> is in ~/kepler/trunk/src and the extensions are in 
> ~/kepler/trunk/extensions, then including a copy of an extension stored 
> elsewhere means you're checking out code from one repository into a 
> directory that is version controlled by a different repository.  Is this 
> a problem?
> 
> Thanks!
> 
> Tim
> 
> 
> On Jun 26, 2008, at 11:22 AM, Chad Berkley wrote:
> 
>> I think we could make it general enough that you could build an 
>> extension out of a directory within kepler or from a different 
>> repository all together.  Like I said, I kind of view directories in 
>> the repository as different repositories anyway.
>>
>> I definitely support making it so that functionality in the root 
>> build.xml file is not redundant.  I think ant does this pretty nicely. 
>> Our metacat product does something similar for the ecogrid extensions.
>>
>> I'm available pretty much anytime next week monday - wednesday.  I'm 
>> busy most of Thursday and Friday is a holiday (Independence Day).
>>
>> chad
>>
>>
>> Timothy McPhillips wrote:
>>> Hi Chad,
>>> I like your suggestions.  I've added some questions and comments of 
>>> my own:
>>> On Jun 26, 2008, at 9:18 AM, Chad Berkley wrote:
>>>> Hi Tim,
>>>>
>>>> See my thoughts below.
>>>>
>>>> Timothy McPhillips wrote:
>>>>> Dear All,
>>>>> With the Kepler 1.0 release out and the migration to svn complete I 
>>>>> am about to begin migrating into the Kepler repository some code 
>>>>> we've been developing here at UCD.  Some of these checkins will be 
>>>>> relatively straightforward, but other code will present some 
>>>>> integration, source code management, and build system challenges 
>>>>> I'd really like to get everyone's input and help with.
>>>>> *** Upcoming checkins ***
>>>>> 1.  First, I will be committing a new version of the COMAD 
>>>>> framework to src/org/kepler/comad.  The current version in Kepler 
>>>>> is included under src/org/nddp.  The major difference with the new 
>>>>> version is that it includes comprehensive support for recording 
>>>>> provenance from COMAD workflows and storing the results as 
>>>>> provenance-annotated 'trace' files.  2.  Second, we would like to 
>>>>> begin committing the code specific to the pPOD extension to Kepler 
>>>>> (phylogenetics actors and data types for the AToL community).  This 
>>>>> integration will be trickier.  Please see "complications" below.
>>>>> 3.  Third, when the COMAD and pPOD sources have been successfully 
>>>>> integrated with the main Kepler system, I will delete the code 
>>>>> under src/org/nddp, this package having been superseded by the two 
>>>>> sets of checkins above.
>>>>> *** Complications  ***
>>>>> Ok, here's the conundrum.  The pPOD extension is mostly a set of 
>>>>> actors for phylogenetics analyses.  Prior to the Kepler 1.0 release 
>>>>> we provided a preview release 
>>>>> <http://daks.genomecenter.ucdavis.edu/kepler-ppod/> of the pPOD 
>>>>> actors (based on the COMAD framework) to the AToL 
>>>>> <http://atol.sdsc.edu/> community (see a poster 
>>>>> <http://daks.genomecenter.ucdavis.edu/kepler-ppod/poster.pdf> and 
>>>>> presentation 
>>>>> <http://daks.genomecenter.ucdavis.edu/kepler-ppod/Kepler-Ppod.pdf> 
>>>>> about the Kepler/ppod preview).  This was not meant for production 
>>>>> use, but rather as a way to get feedback from the community on our 
>>>>> work.  However, in the very near future we would like to release 
>>>>> this code as a package of actors and community-specific 
>>>>> customizations to the Kepler GUI.   Note that this release will not 
>>>>> be targeted only at an abstract community of folks who might 
>>>>> possibly try it out, but also at particular scientists who have 
>>>>> asked for specific workflows based on the pPOD package and who need 
>>>>> them very badly for their own research.)
>>>>> As you might expect, we do *not* want to:
>>>>> N1.  Wait for the next release of Kepler before distributing these 
>>>>> actors. N2.  Release a package of actors that has been tested only 
>>>>> against  the revision of Kepler that we happen to find at the trunk 
>>>>> of the Kepler repository on a particular day. Instead, we want to 
>>>>> (read 'must') release a package of actors that works with Kepler 
>>>>> 1.0.  When another release of Kepler is made (Kepler 1.1, say), we 
>>>>> will need to release a version of the pPOD actors that works with 
>>>>> *that* version of Kepler.  There are number of questions implied by 
>>>>> this need to release a package of actors designed to work with a 
>>>>> particular, supported release of Kepler:
>>>>> Q1. How do we build the pPOD actors against Kepler 1.0 rather than 
>>>>> against the current revision in the repository?
>>>>
>>>> One way to do this would be to have a build.xml file in your ppod 
>>>> source tree that just knows how to build ppod.  The build.xml file 
>>>> for kepler could be made to import the ppod build file when ppod 
>>>> needs to be built.  In the future, we could redesign the kepler 
>>>> build.xml file to allow importing different build files from the 
>>>> command line so that the build file itself does not need to be altered.
>>> An extension-specific build file in each extension source tree sounds 
>>> like a good idea, as long as it doesn't require duplicating 
>>> functionality provided by the central build.xml file.  There is more 
>>> to do than build the Java sources, too.  Actor package extensions 
>>> will have their own set of kar source files that will be need to be 
>>> jarred up the same way kar sources for actors in the core of Kepler 
>>> are, for example.  The build system ought to use the central support 
>>> for building kar files rather requiring that package builders 
>>> reinvent or copy this functionality.  (The hacked version of the 
>>> build file we use at UCD deals with this issue--more or less).
>>>>
>>>>> Q2.  Where should we put the pPOD actors and support classes in the 
>>>>> Kepler repository directory structure?  If we put them in, say, 
>>>>> src/org/ppod (under kepler), then all of this code will be seen by 
>>>>> the build system and all kepler developers will find themselves 
>>>>> building code that is not necessarily meant to be compiled against 
>>>>> the current revision of Kepler in the repository.  If any classes 
>>>>> the pPOD package depends on elsewhere in Kepler are renamed, moved, 
>>>>> removed, or changed significantly, the pPOD code will no longer 
>>>>> build against the current revision of Kepler in the repository.  
>>>>> The build will break.
>>>>
>>>> if the build file system is used, the ppod actors would not be built 
>>>> unless the user told the build system to build them.
>>> So there would be a place in the repository for source code trees 
>>> that do not get compiled by default with the core of Kepler?  Excellent.
>>>>
>>>>> A further complication is that once the 1.0-compatible version of 
>>>>> the pPOD package is out, we likely will want to begin building 
>>>>> against the latest revision of Kepler in the repository until the 
>>>>> next version of Kepler is out, at which point we'll want to build 
>>>>> against *that* supported version of Kepler.  In short, we need to 
>>>>> be able to choose which revision of Kepler in the repository we 
>>>>> build the pPOD package against, without disturbing folks working 
>>>>> with the current revision of Kepler.
>>>>
>>>> I think this could be done with ant.  you'll just need to have your 
>>>> build file make sure that the current checkout of kepler is the 
>>>> tag/branch that you want.
>>>>
>>> Cool.
>>>>> *** Solutions? ***
>>>>> S1.  On the surface this problem sounds like one that could be 
>>>>> solved with branches.  And I believe it possibly could, and that 
>>>>> branches likely will be involved in some way (for example, we will 
>>>>> still want to provide bug fixes to the 1.0-compatible version of 
>>>>> the pPOD actors when we're working on the 1.1-compatible release).  
>>>>> However, is this how we want to treat the Kepler 1.0 release branch 
>>>>> in the repository?  Do we want to be checking hundreds of source 
>>>>> files into the Kepler 1.0 release branch indefinitely, and almost 
>>>>> certainly introducing new bugs and instabilities there?
>>>>
>>>> Kepler 1.0 is released, so we can no longer make changes to that 
>>>> branch and still call it 1.0.  This is not an option, imho.
>>> I agree with this.
>>>>
>>>>> S2.  An alternative would be to create a separate source tree for 
>>>>> pPOD in the svn repository (as a peer to kepler, for example).  The 
>>>>> build system would not include this 'extension' when compiling the 
>>>>> Kepler java sources.  Instead, we might build the pPOD package 
>>>>> against the Kepler 1.0 release jar itself.  This approach might 
>>>>> scale better and enable everyone providing their users 
>>>>> 1.0-compatible actors to share their work with the community 
>>>>> through the Kepler repository without requiring that their code 
>>>>> work with the current revision of Kepler.
>>>>
>>>> I kind of think of each directory in the repository as its own 
>>>> repository anyway.  I think the compilation/non-compilation of a 
>>>> given directory should be controlled by the build file(s).  I don't 
>>>> think its necessary to have an entirely new repository for 
>>>> extensions.  If this is something that is needed by the greater 
>>>> community, we could create a high level directory in the kepler 
>>>> repository for extensions (kepler/extension) and have a hierarchical 
>>>> build system built around that.
>>> I agree a new repository is not needed.  A directory for hosting 
>>> extensions would be great.  I'd start checking in the COMAD and pPOD 
>>> extensions today if there were such a place in the repository!
>>>>
>>>>> The problem with this second approach is that it might not be so 
>>>>> easy to build against the current revision of Kepler, should one 
>>>>> choose to do so (and as we likely will between releases of the pPOD 
>>>>> package).  At least, not without building the Kepler jar each time.
>>>>
>>>> I think the build file in the extensions directory could easily 
>>>> build kepler to the version you need and put the jar file into the 
>>>> extensions dir for use.  then it wouldn't need to be built multiple 
>>>> times and you'd guarantee that you were building against the version 
>>>> of kepler you want.
>>> Sounds good!
>>>>
>>>>> S3.  A variant of S2 would be to enable developers to tell the 
>>>>> build system to optionally include extensions in the build.  With 
>>>>> the extensions stored as peers to the kepler directory in the 
>>>>> repository, developers could choose which extensions to check out, 
>>>>> and specify different branches or tags for Kepler and for each 
>>>>> extension checked out.
>>>>
>>>> I guess my approach above is similar to this except that it uses the 
>>>> main kepler repository instead of different repositories.
>>> Yep, I don't see a need for different repositories for each 
>>> extension.  On the other hand, it would be nice if the build system 
>>> could build extensions not stored in the central repository, too 
>>> (e.g., extensions stored in other repositories but that have been 
>>> checked out out to a developer's machine).
>>> Tristan--do you have thoughts about this?
>>>>
>>>> I'm kind of thinking off the cuff here so I hope my ideas don't seem 
>>>> too malformed.  Maybe we could have a call next week to chat about 
>>>> this.
>>>>
>>> Let's definitely chat soon.  It'd be great to move quickly on this.
>>> All--who wants to participate in that discussion?  Tristan?  
>>> Christopher Tuot?
>>> Thanks, Chad!
>>> Tim
> 


More information about the Kepler-dev mailing list