Giter VIP home page Giter VIP logo

Comments (6)

azubieta avatar azubieta commented on June 4, 2024

Can we close this ?

from appimageupdate.

probonopd avatar probonopd commented on June 4, 2024

Let's keep the "Investigate..." tickets that contain ideas around, unless we come to a conclusion that they are not feasible.

from appimageupdate.

TheAssassin avatar TheAssassin commented on June 4, 2024

Wrong project, though. Please open an issue in AppImageUpdate's tracker if you want to keep this information somewhere (or move it there).

from appimageupdate.

antony-jr avatar antony-jr commented on June 4, 2024

@probonopd zsync and itch's solutions are completely different and zsync is a solution for what itch did , If I'm right , they use pre-calculated delta's , (i.e) they do delta's between two versions (like git does).

From zsync technical paper ,

Finally, there are the mechanisms traditionally used among programming projects — version control and diffs. The Linux kernel, for instance, is distributed by providing patches to get from one version to the next ([LKML FAQ]). For comparison with the other methods discussed, we can say that this method effectively pre-computes the changes between versions and then sends only the changes to the client. But it only works with a given fixed starting point. So to get from, say, 2.4.19 to 2.4.27, the user has to download the patch 2.4.19 -> 2.4.20, the patch 2.4.20 -> 2.4.21, and so on. This method is efficient if there are clear releases and the frequency of releases is smaller than the frequency with which users check for updates — it is less efficient when releases in the affected files are frequent, as there are then large numbers of patch files to manage and download (and these files contain enough data to construct not only the final file, but every intermediate revision).

As stated by the author , Developers who use AppImageUpdate don't really need to care about the starting point , which is a good thing , Imagine how hard would it be for the developer to save all old versions diff and patches in order to update from any old version to the latest one. So I think zsync is much suited for our use case. But we can do something about the I/O usage issue.

from appimageupdate.

probonopd avatar probonopd commented on June 4, 2024

f I'm right , they use pre-calculated delta's

If that is the case, then indeed that is not a solution for us.

from appimageupdate.

antony-jr avatar antony-jr commented on June 4, 2024

@probonopd

From itchio/itch#683 (comment)

Our diff/patching system is very well suited to our needs, cross-platform, fast, etc. so there's really no need to fill here.

EDIT:
Also the itch's docs on wharf which speaks about algorithm (diff/patching) ,

The diff algorithm is a modified version of the rsync algorithm, and has the following properties:
Full access to the old version is not required — a series of hashes is enough.

What they mean above is that , the server(this also implies that we need special software on the server) does the hashing of the old version with respect to the block size and sends the hashes to client and the client simply uses these hashes to compare the difference by hashing the new version , This is really not required in our case since we don't care about upload bandwidth for now but still its a great idea if you wish to minimize the upload bandwidth.

And the rest is just patching using these precomputed diffs downloaded from the server.

But , If we reverse this process(that is swap the places of server and client) , it looks much more like an inefficient implementation of rsync. So I think there is no use in investigating this protocol.

from appimageupdate.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.