Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Modeling » EMF » Creating a local stream for CDO development
Creating a local stream for CDO development [message #880384] Fri, 01 June 2012 19:32 Go to next message
Warwick Burrows is currently offline Warwick Burrows
Messages: 87
Registered: July 2009
Location: Austin, TX
Member
Hi,

We're about to start integrating CDO into our product and have needed to make some source changes to accommodate our chosen DB store as well as fix some issues in the code that have arisen due to the model we're using. We're also planning to add custom authentication and authorization to the server. We intend to submit back any suitable fixes we make to the project but in general the fixes we've made aren't generic enough to submit back and nor will be the customized code for authn/authz but we would like to be able to keep our local CDO source base in sync via git so that we can pick up fixes, new maintenance release, etc, and also be able to integrate our changes with the CDO 4.1 baseline in the future.

So after that long-winded intro... my first question is whether its possible, using git, for me to create a local "stream" based on the CDO 4.0 maintenance stream that is still linked to the 4.0 maintenance stream but which overlays or extends the maintenance stream in the same way that (it seems) the 4.0 maintenance stream currently overlays or extends the cd-4.0 master branch? If this was possible then I could keep updating (or pulling) fixes from the maintenance branch while maintaining our proprietary stream with customizations that should not be submitted back to the git repository.

In addition, if anybody else is customizing CDO for their needs and has suggestions on other ways to handle this then I would appreciate the suggestions.

Thanks,
Warwick
Re: Creating a local stream for CDO development [message #880471 is a reply to message #880384] Sat, 02 June 2012 00:26 Go to previous messageGo to next message
Ed Merks is currently offline Ed Merks
Messages: 25910
Registered: July 2009
Senior Member
Warwick,

Comments below.

On 02/06/2012 1:32 AM, Warwick Burrows wrote:
> Hi,
>
> We're about to start integrating CDO into our product and have needed
> to make some source changes to accommodate our chosen DB store as well
> as fix some issues in the code that have arisen due to the model we're
> using. We're also planning to add custom authentication and
> authorization to the server. We intend to submit back any suitable
> fixes we make to the project but in general the fixes we've made
> aren't generic enough to submit back and nor will be the customized
> code for authn/authz but we would like to be able to keep our local
> CDO source base in sync via git so that we can pick up fixes, new
> maintenance release, etc, and also be able to integrate our changes
> with the CDO 4.1 baseline in the future.
>
> So after that long-winded intro... my first question is whether its
> possible, using git, for me to create a local "stream" based on the
> CDO 4.0 maintenance stream that is still linked to the 4.0 maintenance
> stream but which overlays or extends the maintenance stream in the
> same way that (it seems) the 4.0 maintenance stream currently overlays
> or extends the cd-4.0 master branch?
It's more of a git question and I'm not expert at that, though I'm using
git too. I think the git term for this is a fork. I've heard the term
"cherry picking" for copying changes between branches, so probably
that's applicable for forks as well. Definitely one gets the impression
that git should help make this process quite easy...
> If this was possible then I could keep updating (or pulling) fixes
> from the maintenance branch while maintaining our proprietary stream
> with customizations that should not be submitted back to the git
> repository.
>
> In addition, if anybody else is customizing CDO for their needs and
> has suggestions on other ways to handle this then I would appreciate
> the suggestions.
>
> Thanks,
> Warwick
>
Re: Creating a local stream for CDO development [message #880490 is a reply to message #880471] Sat, 02 June 2012 01:42 Go to previous messageGo to next message
Eike Stepper is currently offline Eike Stepper
Messages: 5481
Registered: July 2009
Senior Member
Am 02.06.2012 06:26, schrieb Ed Merks:
> Warwick,
>
> Comments below.
>
> On 02/06/2012 1:32 AM, Warwick Burrows wrote:
>> Hi,
>>
>> We're about to start integrating CDO into our product and have needed to make some source changes to accommodate our
>> chosen DB store as well as fix some issues in the code that have arisen due to the model we're using. We're also
>> planning to add custom authentication and authorization to the server. We intend to submit back any suitable fixes we
>> make to the project but in general the fixes we've made aren't generic enough to submit back and nor will be the
>> customized code for authn/authz but we would like to be able to keep our local CDO source base in sync via git so
>> that we can pick up fixes, new maintenance release, etc, and also be able to integrate our changes with the CDO 4.1
>> baseline in the future.
>>
>> So after that long-winded intro... my first question is whether its possible, using git, for me to create a local
>> "stream" based on the CDO 4.0 maintenance stream that is still linked to the 4.0 maintenance stream but which
>> overlays or extends the maintenance stream in the same way that (it seems) the 4.0 maintenance stream currently
>> overlays or extends the cd-4.0 master branch?
Not sure I fully understand what you mean, especially because I believe there is no such thing as a CDO-4.0 *master*
branch. The CDO master branch has a different target version number each release cycle. Currently it's 4.1 and after
Juno it will most probably be 4.2.

> It's more of a git question and I'm not expert at that, though I'm using git too. I think the git term for this is a
> fork.
Hmm, I thought that's the GitHub term. In fact CDO is available through https://github.com/eclipse/cdo and is easy to
fork there. GitHub projects (including forks, IIRC.) can even be private.

In Git that seems to be just a cloned repository.

> I've heard the term "cherry picking" for copying changes between branches,
Yes, and there's merging and rebasing and possibly some other things that may be helpful.

> so probably that's applicable for forks as well. Definitely one gets the impression that git should help make this
> process quite easy...
I agree, Git must have been made for scenarios like this. And I recommend to ask for Git expert help in the EGit forum
or in the more general news://news.gmane.org:119/gmane.comp.ide.eclipse.git

Of course you want to dry-run all the needed workflows to check if the tools can do what they promise.

Also note that we're planning to add Gerrit support, probably when the Juno release stress is over. Not sure if that
would impact you or would open new possibilities.

>> If this was possible then I could keep updating (or pulling) fixes from the maintenance branch while maintaining
>> our proprietary stream with customizations that should not be submitted back to the git repository.
>>
>> In addition, if anybody else is customizing CDO for their needs and has suggestions on other ways to handle this then
>> I would appreciate the suggestions.
The other week I suggested this to a customer who has some database-specific changes to the CDO code:

- Clone the central repo.
- Create a local branch off of the desired stream (in their case that will be streams/4.1-maintenance, once that's
available in July).
- Commit changes that are not contributable to that local branch when necessary.
- Merge or rebase maintenance commits from the above remote tracking branch.

Cheers
/Eike

----
http://www.esc-net.de
http://thegordian.blogspot.com
http://twitter.com/eikestepper
Re: Creating a local stream for CDO development [message #880502 is a reply to message #880384] Sat, 02 June 2012 02:29 Go to previous messageGo to next message
Thomas Schindl is currently offline Thomas Schindl
Messages: 5228
Registered: July 2009
Senior Member
Phew - if you modify EPLed code you are forced to make those changes
public - whether they are useful for others or not doesn't matter! This
is at least how I understood the EPL.

Couldn't you try to get an API into CDO that allows you to implement
your custom stuff, ie CDO gives you callbacks, allows you to replace
components, ...

Tom

Am 02.06.12 01:32, schrieb Warwick Burrows:
> Hi,
>
> We're about to start integrating CDO into our product and have needed to
> make some source changes to accommodate our chosen DB store as well as
> fix some issues in the code that have arisen due to the model we're
> using. We're also planning to add custom authentication and
> authorization to the server. We intend to submit back any suitable fixes
> we make to the project but in general the fixes we've made aren't
> generic enough to submit back and nor will be the customized code for
> authn/authz but we would like to be able to keep our local CDO source
> base in sync via git so that we can pick up fixes, new maintenance
> release, etc, and also be able to integrate our changes with the CDO 4.1
> baseline in the future.
>
> So after that long-winded intro... my first question is whether its
> possible, using git, for me to create a local "stream" based on the CDO
> 4.0 maintenance stream that is still linked to the 4.0 maintenance
> stream but which overlays or extends the maintenance stream in the same
> way that (it seems) the 4.0 maintenance stream currently overlays or
> extends the cd-4.0 master branch? If this was possible then I could
> keep updating (or pulling) fixes from the maintenance branch while
> maintaining our proprietary stream with customizations that should not
> be submitted back to the git repository.
>
> In addition, if anybody else is customizing CDO for their needs and has
> suggestions on other ways to handle this then I would appreciate the
> suggestions.
>
> Thanks,
> Warwick
>
Re: Creating a local stream for CDO development [message #880511 is a reply to message #880490] Sat, 02 June 2012 02:54 Go to previous messageGo to next message
Warwick Burrows is currently offline Warwick Burrows
Messages: 87
Registered: July 2009
Location: Austin, TX
Member
Thanks to you both Eike and Ed. If you're ever in Austin, TX then send me an email and I can show you a real place for chicken wings! Those wings in Reston were a poor, poor substitute Wink

Ed, it looks like I need to git me some git. We're using maven and ant in-house and just now moving to maven 3. I have no idea what the capabilities of git are but I'll look into it further. I'll guess it relates to what Eike said.

Eike, you mentioned this...

Quote:
The other week I suggested this to a customer who has some database-specific changes to the CDO code:

- Clone the central repo.
- Create a local branch off of the desired stream (in their case that will be streams/4.1-maintenance, once that's available in July).
- Commit changes that are not contributable to that local branch when necessary.
- Merge or rebase maintenance commits from the above remote tracking branch.


And I have questions...

- If I've followed the CDO source installation directions from the wiki then do I have a central repo to work with already? More context for this question is that I mistook the last direction on the page and went looking for more mspec files in the tree and ended up "materializing" the cdo 4.0 branch and one additional level above that into my local git repository. So I have more than just the 4.0 maint stream.

- Once I have the central repo how do I create a local branch from a stream? I tried some right-clicking from the git repo view but nothing was obvious. At least nothing I could see that didn't make me worried I would potentially screw with the true CDO baseline.

Thanks,
Warwick


Re: Creating a local stream for CDO development [message #880513 is a reply to message #880502] Sat, 02 June 2012 03:01 Go to previous messageGo to next message
Warwick Burrows is currently offline Warwick Burrows
Messages: 87
Registered: July 2009
Location: Austin, TX
Member
Hey Thomas, thanks for that. I'll double-check the EPL to make sure we're good. The authn/authzn changes we're talking about making though should be using existing interfaces in the CDO server so they are using existing API. I didn't realize that the EPL was that strict though?

Thanks,
Warwick



[Updated on: Sat, 02 June 2012 03:04]

Report message to a moderator

Re: Creating a local stream for CDO development [message #880514 is a reply to message #880502] Sat, 02 June 2012 03:00 Go to previous messageGo to next message
Eike Stepper is currently offline Eike Stepper
Messages: 5481
Registered: July 2009
Senior Member
Am 02.06.2012 08:29, schrieb Tom Schindl:
> Phew - if you modify EPLed code you are forced to make those changes
> public - whether they are useful for others or not doesn't matter! This
> is at least how I understood the EPL.
Actually I'm not sure about this. I just don't know it.

> Couldn't you try to get an API into CDO that allows you to implement
> your custom stuff, ie CDO gives you callbacks, allows you to replace
> components, ...
Hmm, of course we're generally interested in knowing about possible contributions but in cases where we have doubts
about the general usefulness we'd normally prefer (even private) forks over more API ;-)

Cheers
/Eike

----
http://www.esc-net.de
http://thegordian.blogspot.com
http://twitter.com/eikestepper


>
> Tom
>
> Am 02.06.12 01:32, schrieb Warwick Burrows:
>> Hi,
>>
>> We're about to start integrating CDO into our product and have needed to
>> make some source changes to accommodate our chosen DB store as well as
>> fix some issues in the code that have arisen due to the model we're
>> using. We're also planning to add custom authentication and
>> authorization to the server. We intend to submit back any suitable fixes
>> we make to the project but in general the fixes we've made aren't
>> generic enough to submit back and nor will be the customized code for
>> authn/authz but we would like to be able to keep our local CDO source
>> base in sync via git so that we can pick up fixes, new maintenance
>> release, etc, and also be able to integrate our changes with the CDO 4.1
>> baseline in the future.
>>
>> So after that long-winded intro... my first question is whether its
>> possible, using git, for me to create a local "stream" based on the CDO
>> 4.0 maintenance stream that is still linked to the 4.0 maintenance
>> stream but which overlays or extends the maintenance stream in the same
>> way that (it seems) the 4.0 maintenance stream currently overlays or
>> extends the cd-4.0 master branch? If this was possible then I could
>> keep updating (or pulling) fixes from the maintenance branch while
>> maintaining our proprietary stream with customizations that should not
>> be submitted back to the git repository.
>>
>> In addition, if anybody else is customizing CDO for their needs and has
>> suggestions on other ways to handle this then I would appreciate the
>> suggestions.
>>
>> Thanks,
>> Warwick
>>
Re: Creating a local stream for CDO development [message #880516 is a reply to message #880513] Sat, 02 June 2012 03:09 Go to previous messageGo to next message
Warwick Burrows is currently offline Warwick Burrows
Messages: 87
Registered: July 2009
Location: Austin, TX
Member
No worries Eike. In theory the api we need is already there in the CDO server Smile
Re: Creating a local stream for CDO development [message #880519 is a reply to message #880516] Sat, 02 June 2012 03:12 Go to previous messageGo to next message
Warwick Burrows is currently offline Warwick Burrows
Messages: 87
Registered: July 2009
Location: Austin, TX
Member
But I still have those questions...

- If I've followed the CDO source installation directions from the wiki then do I have a central repo to work with already? More context for this question is that I mistook the last direction on the page and went looking for more mspec files in the tree and ended up "materializing" the cdo 4.0 branch and one additional level above that into my local git repository. So I have more than just the 4.0 maint stream.

- Once I have the central repo how do I create a local branch from a stream? I tried some right-clicking from the git repo view but nothing was obvious. At least nothing I could see that didn't make me worried I would potentially screw with the true CDO baseline.

Thanks,
Warwick
Re: Creating a local stream for CDO development [message #880527 is a reply to message #880519] Sat, 02 June 2012 03:43 Go to previous messageGo to next message
Eike Stepper is currently offline Eike Stepper
Messages: 5481
Registered: July 2009
Senior Member
Am 02.06.2012 09:12, schrieb Warwick Burrows:
> But I still have those questions...
>
> - If I've followed the CDO source installation directions from the wiki then do I have a central repo to work with
> already?
Yes, then you have *a clone of* the central repo to work with ;-)

> More context for this question is that I mistook the last direction on the page and went looking for more mspec files
> in the tree and ended up "materializing" the cdo 4.0 branch and one additional level above that into my local git
> repository. So I have more than just the 4.0 maint stream.
Must be too early in the morning but I don't understand what you've done wrong or what could be misunderstood in our
tutorial. Can you please try to explain it again in other words? For example, what is "one additional level above that"?
Maybe you can suggest how to fix the last wiki sentence?

> - Once I have the central repo how do I create a local branch from a stream?
Once you have your local clone of the central repo you can, with EGit, right-click the respective "remote tracking
branch" (here: origin/streams/4.0-maintenance) and choose "Create Branch...". The default new local branch name is
usually correct (I may be wrong but I suspect that the default fetch and push ref specs are based on some naming
conventions). Be sure to select an appropriate pull strategy (i.e., *not* None), so that remote changes show up in your
local branch and you're eventually able to submit them to Gerrit (once we're registered there).

> I tried some right-clicking from the git repo view but nothing was obvious. At least nothing I could see that didn't
> make me worried I would potentially screw with the true CDO baseline.
I know that feeling and it took us so much time just to understand something. At least I'm pretty sure that only
committers can screw up the central repo (bad enough!).

Cheers
/Eike

----
http://www.esc-net.de
http://thegordian.blogspot.com
http://twitter.com/eikestepper
Re: Creating a local stream for CDO development [message #880528 is a reply to message #880511] Sat, 02 June 2012 03:45 Go to previous messageGo to next message
Eike Stepper is currently offline Eike Stepper
Messages: 5481
Registered: July 2009
Senior Member
Am 02.06.2012 08:54, schrieb Warwick Burrows:
> Thanks to you both Eike and Ed. If you're ever in Austin, TX then send me an email and I can show you a real place
> for chicken wings! Those wings in Reston were a poor, poor substitute ;)
>
> Ed, it looks like I need to git me some git. We're using maven and ant in-house and just now moving to maven 3. I
> have no idea what the capabilities of git are but I'll look into it further. I'll guess it relates to what Eike said.
>
> Eike, you mentioned this...
>
> Quote:
>> The other week I suggested this to a customer who has some database-specific changes to the CDO code:
>>
>> - Clone the central repo.
>> - Create a local branch off of the desired stream (in their case that will be streams/4.1-maintenance, once that's
>> available in July).
>> - Commit changes that are not contributable to that local branch when necessary.
>> - Merge or rebase maintenance commits from the above remote tracking branch.
>
>
> And I have questions...
>
> - If I've followed the CDO source installation directions from the wiki then do I have a central repo to work with
> already? More context for this question is that I mistook the last direction on the page and went looking for more
> mspec files in the tree and ended up "materializing" the cdo 4.0 branch and one additional level above that into my
> local git repository. So I have more than just the 4.0 maint stream.
>
> - Once I have the central repo how do I create a local branch from a stream? I tried some right-clicking from the git
> repo view but nothing was obvious. At least nothing I could see that didn't make me worried I would potentially screw
> with the true CDO baseline.
See my attempt to answer these in my other post ;-)

Cheers
/Eike

----
http://www.esc-net.de
http://thegordian.blogspot.com
http://twitter.com/eikestepper
Re: Creating a local stream for CDO development [message #880601 is a reply to message #880502] Sat, 02 June 2012 07:52 Go to previous messageGo to next message
Alan McMorran is currently offline Alan McMorran
Messages: 55
Registered: July 2009
Member
> Phew - if you modify EPLed code you are forced to make those changes
> public - whether they are useful for others or not doesn't matter! This
> is at least how I understood the EPL.

IANAL but my understanding is that it's similar to LGPL in that you
have to make your source (including said changes) available to anyone
that you distribute the binary to (and then they have the right to
further distribute of course). So I don't think you have to put your
source up in some public repository for everyone to access but you have
to provide it upon request to anybody that you have distributed a
binary to (so if it's publicly accessible then this is pretty much
everyone).
Re: Creating a local stream for CDO development [message #880622 is a reply to message #880601] Sat, 02 June 2012 09:07 Go to previous messageGo to next message
Ed Willink is currently offline Ed Willink
Messages: 4003
Registered: July 2009
Senior Member
Hi

You shouldn't find the EPL a problem; the move from CPL to EPL was to
respond to some industrial concerns. You will find many companies happy
to use EPL for their own code and for re-used code. Many GPL users just
use GPL without appreciating the consequences.

Under EPL you have to make all your changes to the contributions
available. So put your proprietary code in a separate class and make the
call to that code available. EPL covers the "Program" not "A Work based
on the Program".

Disclaimer: the above is just my opinion; consult a professional
copyright lawyer if you are seriously concerned.

Regards

Ed Willink


On 02/06/2012 12:52, Alan McMorran wrote:
>> Phew - if you modify EPLed code you are forced to make those changes
>> public - whether they are useful for others or not doesn't matter! This
>> is at least how I understood the EPL.
>
> IANAL but my understanding is that it's similar to LGPL in that you
> have to make your source (including said changes) available to anyone
> that you distribute the binary to (and then they have the right to
> further distribute of course). So I don't think you have to put your
> source up in some public repository for everyone to access but you
> have to provide it upon request to anybody that you have distributed a
> binary to (so if it's publicly accessible then this is pretty much
> everyone).
>
Re: Creating a local stream for CDO development [message #880736 is a reply to message #880622] Sat, 02 June 2012 17:18 Go to previous message
Alan McMorran is currently offline Alan McMorran
Messages: 55
Registered: July 2009
Member
> You shouldn't find the EPL a problem; the move from CPL to EPL was to
> respond to some industrial concerns. You will find many companies happy
> to use EPL for their own code and for re-used code. Many GPL users just
> use GPL without appreciating the consequences.

I've heard some first-hand (albeit anecdotal) evidence of some very
large companies getting burned by this recently as their staff didn't
understand what using GPL meant to their software. My general rule of
thumb is:

MIT, BSD, Apache: Generally no problem
EPL: Generally no problem, but just have to be careful how we use it if
we've got proprietary stuff too (for example our schematic editor is
split into two plugins: one a generic graphical node editor in EPL; and
the electrical schematic part uses this other plugin as a library but
contains all the proprietary stuff)
LGPL: Same as EPL albeit with more annoying licensing restrictions (so
equivalent libraries under any of the licenses above are preferred)
GPL: Avoid like the plague

> Under EPL you have to make all your changes to the contributions
> available. So put your proprietary code in a separate class and make
> the call to that code available. EPL covers the "Program" not "A Work
> based on the Program".

I think the "available" part is what' I was talking about earlier. The
EPL Section 3:

"A Contributor may choose to distribute the Program in object code form
under its own license agreement, provided that:
<snip>
iv) states that source code for the Program is available from such
Contributor, and informs licensees how to obtain it in a reasonable
manner on or through a medium customarily used for software exchange"

As such, as I said in my other post, my understanding of this is that
anybody who you license your software to must be granted access to the
source if they request it, but you're under no obligation to provide
the code to someone if they're not a licensee of the software (i.e. you
don't have to make it publicly available but at the same time you can't
stop a licensee from doing that if they wished).

> Disclaimer: the above is just my opinion; consult a professional
> copyright lawyer if you are seriously concerned.

Ditto, although I have had to sit through teleconferences with an army
of IP lawyers so my assumptions are not entirely unfounded… although
may still be completely inaccurate!

Alan
Previous Topic:[CDO 4.0] : prefetch and connection aware URI
Next Topic:Saving loaded contents to another file add cross document references
Goto Forum:
  


Current Time: Wed Jul 23 10:09:01 EDT 2014

Powered by FUDForum. Page generated in 0.02201 seconds