Fwd: Some questions regarding Courgette

148 views
Skip to first unread message

M Stefan

unread,
Jun 15, 2011, 3:25:18 PM6/15/11
to chromi...@chromium.org, Allan CORNET
Hello everyone. I'm e-mailing concerning some questions I have about Courgette.
I have tried contacting the Courgette devs but did not manage to get a response.

I am a GSoC student (Google Summer of Code [0]) and I'm working on
implementing some updating
mechanism for a piece of software (Scilab [1]). Part of the process
involves choosing the right binary
patching algorithms to use for each platform that Scilab needs to
support. Clearly, Courgette is one
of the top candidates for Windows x86, so I'd appreciate if you could
answer some of my questions.
What does Google use for binary patching on Linux and Mac OS X?
Were you aware and have you considered the binary patching alternative
that Windows offers built-in?
The two API-s (namely, PatchAPI[2] and MSDelta[2]) that are part of
WinAPI may be used to create and
apply deltas. They are currently used by Windows Updates, which means
they are widely tested, so bugs are unlikely,
not to mention being maintained by the creators of PE format (i.e. the
same company).
I am interested in whether you have tried this alternative, and if you
have, were there any particular
reasons for not picking it?
I would like to compare PatchAPI, MSDelta and Courgette on patching
between various versions of Scilab
(or Chrome, if you want) and see which one creates the smallest deltas,
uses the least memory or
takes the least time. Would you be interested in these results?
My mentor might also consider helping port Courgette to work with 64bit
binaries. If he decides
to do it, and there is no such work in progress already, would you
consider using something like that?

Yours faithfully,
Stefan Mihaila


[0] http://www.google-melange.com/gsoc/homepage/google/gsoc2011
[1] http://www.scilab.org/
[2] http://msdn.microsoft.com/en-us/library/bb417345.aspx

Adam Langley

unread,
Jun 15, 2011, 3:29:29 PM6/15/11
to mste...@gmail.com, chromi...@chromium.org, Allan CORNET
On Wed, Jun 15, 2011 at 3:25 PM, M Stefan <mste...@gmail.com> wrote:
> What does Google use for binary patching on Linux and Mac OS X?

For Linux we use the standard package manager for the distribution.
I'm not sure that dpkg supports delta compression but RPM does.
However, I don't believe that we supply delta RPMs.


Cheers

AGL

Don Garrett

unread,
Jun 15, 2011, 4:58:36 PM6/15/11
to a...@chromium.org, mste...@gmail.com, chromi...@chromium.org, Allan CORNET
I would be interested in your results, since I may be doing some work on Courgette in the near future.


--
Chromium Developers mailing list: chromi...@chromium.org
View archives, change email options, or unsubscribe:
   http://groups.google.com/a/chromium.org/group/chromium-dev



--
Don

Mark Larson (Google)

unread,
Jun 16, 2011, 11:51:59 PM6/16/11
to mste...@gmail.com, chromi...@chromium.org, Allan CORNET, Bradley Nelson, Stephen Adams
On Wed, Jun 15, 2011 at 12:25, M Stefan <mste...@gmail.com> wrote:
Hello everyone. I'm e-mailing concerning some questions I have about Courgette.
I have tried contacting the Courgette devs but did not manage to get a response.

I am a GSoC student (Google Summer of Code [0]) and I'm working on
implementing some updating
mechanism for a piece of software (Scilab [1]). Part of the process
involves choosing the right binary
patching algorithms to use for each platform that Scilab needs to
support. Clearly, Courgette is one
of the top candidates for Windows x86, so I'd appreciate if you could
answer some of my questions.
What does Google use for binary patching on Linux and Mac OS X?

For MacOS, we are using bsdiff.
 
Were you aware and have you considered the binary patching alternative
that Windows offers built-in?

We considered the MS patch APIs and found we got better results for our use case with Courgette. 
 
The two API-s (namely, PatchAPI[2] and MSDelta[2]) that are part of
WinAPI may be used to create and
apply deltas. They are currently used by Windows Updates, which means
they are widely tested, so bugs are unlikely,
not to mention being maintained by the creators of PE format (i.e. the
same company).
I am interested in whether you have tried this alternative, and if you
have, were there any particular
reasons for not picking it?
I would like to compare PatchAPI, MSDelta and Courgette on patching
between various versions of Scilab
(or Chrome, if you want) and see which one creates the smallest deltas,
uses the least memory or
takes the least time. Would you be interested in these results?

I'd only be interested in which one creates the smallest deltas. Our update failure rate with courgette-based diffs is very small, so I'm not concerned about memory or speed. The biggest pain point is download size (most errors are in failed downloads due to limited or flaky bandwidth). 
 
My mentor might also consider helping port Courgette to work with 64bit
binaries. If he decides
to do it, and there is no such work in progress already, would you
consider using something like that?

There are very few binaries in Chrome (for Windows) that are actually 64-bit (just a Native Client binary and a very static wow_helper IIRC). Porting to 64-bit isn't very useful for Chromium at present.

--Mark
 
Reply all
Reply to author
Forward
0 new messages