WikiPatents - Community Patent Review
Create Free Account  |  License or Sell Your Patent  |  WikiPatents Marketplace  |  WikiPatents Blog
Username:  Password:  
    
Advanced Search
Method for the distribution of code and data updates    
United States Patent5919247   
Link to this pagehttp://www.wikipatents.com/5919247.html
Inventor(s)Van Hoff; Arthur (Mountain View, CA); Payne; Jonathan (Santa Clara, CA); Shaio; Sami (Menlo Park, CA)
AbstractA system and method for distributing software applications and data to many thousands of clients over a network. The applications are called "channels", the server is called the "transmitter", and the client is called the "tuner". The use of channels is based on subscription. The end-user needs to subscribe to channel before it can be executed. When the end-user subscribes to a channel the associated code and data is downloaded to the local hard-disk, and once downloaded the channel can be executed many times without requiring further network access. Channels can be updated automatically at regular intervals by the tuner, and as a result the end-user is no longer required to manually install software updates, instead these software and data updates are automatically downloaded and installed in the background. This method of automatic downloading of updates achieves for the client the same result as the broadcast distribution of software over a connection based network, but wherein the client initiates each update request without requiring any special broadcast networking infra structure.
   














 Title Information Submit all comments and votes
 
Patent Text Patent PDF Print Page Summary File History
Plain text PDF images Print Summary File History
Drawing from US Patent 5919247
Method for the distribution of code and data updates - US Patent 5919247 Drawing
Method for the distribution of code and data updates
Inventor     Van Hoff; Arthur (Mountain View, CA); Payne; Jonathan (Santa Clara, CA); Shaio; Sami (Menlo Park, CA)
Owner/Assignee     Marimba, Inc. ()
Patent assignment
All assignments
Publication Date     July 6, 1999
Application Number     08/690,257
PAIR File History     Application Data   Transaction History
Image File Wrapper   Patent Term   Fees
Litigation
Filing Date     July 24, 1996
US Classification     709/217 707/201 717/173
Int'l Classification     C06F 017/30
Examiner     Dinh; Dung C.
Assistant Examiner    
Attorney/Law Firm     Gotlieb; Charles E.
Address
Parent Case    
Priority Data    
USPTO Field of Search     395/200.31 395/200.33 395/200.49 395/395.47 395/395.59 395/684 395/200.47 395/200.48 395/712 707/201 707/203
Patent Tags     distribution code data updates
   
Enter a comma (,) or semicolon (;) between multiple tag words/phrases.
Describe this patent:
 Amusing   
 Clever   
 Complex   
 Efficient   
 Historic   
 Important   
 Innovative   
 Interesting   
 Practical   
 Simple   
[no votes]
Patent WIKI

Share information and news about this patent, including information and news about the technology, inventors, company, ligation and licensing.

 References Submit all comments and votes
 
*references marked with an asterisk below are user-added references
 U.S. References
 
Add a new US reference:  
ReferenceRelevancyCommentsReferenceRelevancyComments
5713017
Lin
707/8
Jan,1998

[0 after 0 votes]
5634052
Morris
707/1
May,1997

[0 after 0 votes]
5628005
Hurvig
707/8
May,1997

[0 after 0 votes]
5619716
Nonaka
717/167
Apr,1997

[0 after 0 votes]
5606705
Randall
709/203
Feb,1997

[0 after 0 votes]
5586322
Beck
707/200
Dec,1996

[0 after 0 votes]
5581764
Fitzgerald
709/223
Dec,1996

[0 after 0 votes]
5574906
Morris
707/1
Nov,1996

[0 after 0 votes]
5491820
Belove
707/3
Feb,1996

[0 after 0 votes]
5473772
Halliwell
717/171
Dec,1995

[0 after 0 votes]
5434994
Shaheen

Jul,1995

[0 after 0 votes]
5408619
Oran
707/10
Apr,1995

[0 after 0 votes]
5388255
Pytlik
707/4
Feb,1995

[0 after 0 votes]
5377329
Seitz
710/54
Dec,1994

[0 after 0 votes]
5341477
Pitkin
709/226
Aug,1994

[0 after 0 votes]
5155847
Kirouac
709/221
Oct,1992

[0 after 0 votes]
5115504
Belove
707/100
May,1992

[0 after 0 votes]
5113519
Johnson
707/201
May,1992

[0 after 0 votes]
4897781
Chang
707/201
Jan,1990

[0 after 0 votes]
4875159
Cary
707/203
Oct,1989

[0 after 0 votes]
4866611
Cree
708/112
Sep,1989

[0 after 0 votes]
4714996
Gladney
707/203
Dec,1987

[0 after 0 votes]
4714992
Gladney
707/206
Dec,1987

[0 after 0 votes]
4658093
Hellman
705/52
Apr,1987

[0 after 0 votes]
4611272
Lomet
707/3
Sep,1986

[0 after 0 votes]
4558413
Schmidt
707/203
Dec,1985

[0 after 0 votes]
4468728
Wang
707/1
Aug,1984

[0 after 0 votes]
4432057
Daniell
707/8
Feb,1984

[0 after 0 votes]
5471629
Risch
707/201
Dec,1969

[0 after 0 votes]
 Foreign References
 Other References
 Market Review Submit all comments and votes
   
Market Size
Estimate the gross annual revenues of the relevant market sector:
> $10B
$5B - $10B
$2B - $5B
$500M - $2B
$100M - $500M
$10M - $100M
$1M - $10M
$500K - $1M
$100K - $500K
< $100K
[No votes]
$0
 
$0   $2.5B   $5B   $7.5B   $10B
Market Share
Estimate the percentage of the relevant market sector this invention will capture:
75% - 100%
50% - 74.99%
25% - 49.99%
10 - 24.99%
5 - 9.99%
2 - 4.99%
1 - 1.99%
< 1%
[No votes]
0.0%
 
0%   25%   50%   75%   100%
Reasonable Royalty
What percentage of gross sales should the inventor or assignee be paid?
75% - 100%
50% - 74.99%
25% - 49.99%
10 - 24.99%
5 - 9.99%
2 - 4.99%
1 - 1.99%
< 1%
[No votes]
0.0%
 
0%   25%   50%   75%   100%
Public's "Guesstimation" of Royalty Value
Market SizeN/A[No votes]
xMarket ShareN/A[No votes]
xReasonable RoyaltyN/A[No votes]

N/A

License Availablity
If you are NOT the owner or assignee, answer here:
Yes, license is available for purchase

No, license is not currently available



[No votes]
License Availablity
If you ARE the owner or assignee, answer here:
Yes, license is available for purchase

No, license is not currently available



[No votes]
Competitive Advantage
Does this invention have a significant competitive advantage over similar technologies?
Yes

No



[No votes]
Most helpful competitive advantage comment
[No comments]

Commercial Alternatives
Are there viable commercial alternatives for this invention?
Yes

No



[No votes]
Most helpful commercial alternative comment
[No comments]

 Technical Review Submit all comments and votes
 Claims Submit all comments and votes
 


What is claimed is:

1. A method of requesting at least one update to a plurality of files, the method comprising:

determining a first set of at least one first identifier responsive to at least one of the plurality of files, each of the first identifiers comprising at least one symbol, the symbols of all of the first identifiers in the first set comprising a first number of at least one symbol;

determining a second identifier responsive to at least one of the plurality of files, the second identifier having a second number, less than the first number, of at least one symbol;

transmitting a first update request comprising the second identifier; and

responsive to one selected from no response to the first update request, and a response not containing at least a part of the update to the plurality of files, transmitting a second update request comprising the first identifier.

2. The method of claim 1 wherein the determining a first set of at least one first identifier is responsive to one selected from no response to the first update request, and a response not containing at least a part of the update to the plurality of files.

3. The method of claim 1 wherein the second identifier is identified responsive to the set of at least one first identifier.

4. A method of providing an update for a set of files, comprising:

receiving a first request for an update of the set of files, the request comprising an identifier of at least one selected from the set of files and the update, the identifier comprising a first number of at least one symbol;

comparing the identifier received with a set of identifiers, each identifier in the set corresponding to at least one request for an update;

responsive to the identifier received corresponding to at least one identifier in the set, retrieving a first index;

retrieving a second index;

comparing the first index retrieved with the second index retrieved to produce a result;

providing the update responsive to the result; and

responsive to the identifier received not corresponding to at least one identifier in the set, providing a request for a transmission of a second request, different from the first request received, for the update of the set of files.

5. The method of claim 4, additionally comprising the steps of:

receiving a second request for an update of the set of files after requesting the additional information, the second request containing a set of at least one identifier, the set having a second number of symbols greater than the first number of symbols; and

providing the update of the set of files responsive to the second request.

6. The method of claim 1, additionally comprising the additional step of selecting a third identifier.

7. The method of claim 6, wherein the third identifier is capable of identifying an instance of a tuner.

8. The method of claim 1, additionally comprising the steps of:

transmitting a request for data; and

receiving the data requested.

9. The method of claim 1, wherein at least one selected from the determining the first set, the determining the second identifier and the transmitting steps are responsive to receipt of a request.

10. The method of claim 1, wherein at least one selected from the determining the fist set, the determining the second identifier and the transmitting steps are responsive to at least one selected from a frequency received and at least one time received.

11. The method of claim 1, wherein the first update request comprises an HTTP request header.

12. The method of claim 1, wherein the transmitting the first update request step comprises transmitting the first update request to a proxy server.

13. The method of claim 1, wherein the determining the first set of at least one first identifier comprises building a tree structure.

14. The method of claim 13, wherein the tree structure comprises a plurality of nodes, at least one first node of the plurality of nodes comprising information about at least one of the plurality of files and at least one second node different from the at least one first node comprises information about the at least one first node.

15. The method of claim 14, wherein the determining the second identifier step comprises computing a checksum responsive to the first identifier.

16. The method of claim 14, wherein the determining the first set of at least one first identifier comprises computing a checksum of at least one second node.

17. The method of claim 10, wherein the computing a checksum of at least one second node comprises providing at least one independent vector of prime numbers.

18. The method of claim 1, wherein the determining the first set of at least one first identifier composes computing a checksum of at least one of the plurality of files.

19. The method of claim 1, additionally compromising the step of receiving information about differences between at least one of the plurality of files and another version of each of said at least one of the plurality of files.

20. The method of claim 1, wherein at least one selected from the first identifier and the second identifier comprises information about at least one computer system.

21. The method of claim 20, wherein the information about the at least one computer system comprises an operating system of the at least one computer system.

22. The method of claim 20, wherein the information about the at least one computer system comprises a description of at least a portion of hardware comprising the computer system.

23. The method of claim 20, wherein the information about the at least one computer system comprises an amount of memory of the at least one computer system.

24. The method of claim 20, wherein the information about the at least one computer system comprises information about a location in which the at least one computer system operates.

25. The method of claim 20, wherein the information about the at least one computer system comprises a client identifier.

26. The method of claim 1, wherein:

at least one of the plurality of files comprises at least a portion of an application; and

at least one selected from the first identifier and the second identifier comprises information generated by the application.

27. The method of claim 1, wherein at least one of the two transmitting steps comprises transmitting to a second computer system, the method comprising the additional steps of:

transmitting the first update request comprising the second identifier to a first computer system; and

receiving a response to the first update request transmitted to the first computer system indicating the second computer system.

28. The method of claim 1, wherein at least one of the at least one files comprises at least a portion of an application, the method additionally comprising the steps of:

receiving a response to at least one selected from the first update request and the second update request;

determining a running state of the application; responsive to the running state of the application indicating the application is running, signaling the application.

29. The method of claim 1, additionally comprising the steps of:

receiving a request response to at least one selected from the first update request and the second update request;

receiving a third update request; and

providing at least a portion of the request response responsive to the third update request received.

30. The method of claim 1, wherein at least one selected from the first identifier and the second identifier comprises information about at least one end user.

31. The method of claim 1, wherein at least one selected from the first update request and the second update request additionally comprises a digital certificate.

32. The method of claim 31, comprising the additional step of encrypting at least one selected from the first update request and the second update request.

33. The method of claim 4, wherein the retrieving the second index, comparing and providing the update steps are responsive to the identifier received corresponding to the at least one identifier in the set.

34. The method of claim 33, additionally comprising the steps of:

receiving a second request for an update of the set of files after requesting the additional information, the second request containing a set of at least one identifier, the set having a second number of symbols greater than the first number of symbols; and

providing the update of the set of files responsive to the second request.

35. The method of claim 33, additionally comprising:

receiving a request for the set of files; and

providing at least one of the set of files.

36. The method of claim 33, wherein the set of files is one of a plurality of sets of files, each of the plurality of sets of files comprising a descriptor, the method comprising:

receiving a request for a list; and

providing the descriptors of at least one of the plurality of the sets of files responsive to the request for the list.

37. The method of claim 34, wherein the set of at least one identifier in the second request comprises a tree structure.

38. The method of claim 37, wherein:

the tree structure comprises a plurality of nodes;

at least one first node of the plurality of nodes comprises information about at least one of the set of files; and

at least one second of the plurality of nodes different from the at least one first node comprises information about the at least one first node.

39. The method of claim 34, wherein the providing the update of the set of files responsive to the second request step comprises:

comparing the set of at least one identifier to the second index; and

building the update responsive to the comparing the set of at least one identifier to the second index step.

40. The method of claim 39, wherein the update comprises at least one command to perform an action on at least one of the set of files selected from altering and deleting said at least one of the set of files.

41. The method of claim 34, wherein at least one of the providing the update steps comprises:

locating a node, corresponding to a directory for containing at least one file of the set of files, that exists in one of the set of at least one identifier and a third index;

responsive to the node existing in the set of at least one identifier, providing a command to delete the directory; and

responsive to the node existing in the third index, providing a command to create the directory.

42. The method of claim 34, wherein at least one of the providing the update steps comprises:

locating a node, corresponding to a at least one file of the set of files, that exists in one of the set of at least one identifier and a third index;

responsive to the node existing in the set of at least one identifier, providing a command to delete the at least one file; and

responsive to the node existing in the third index, providing a command to create the at least one file.

43. The method of claim 34, wherein at least one of the providing the update steps comprises:

locating a node, corresponding to a file of the set of files, that exists in the set of at least one identifier and a node in a third index corresponding to a later version of the file; and

providing at least one command describing the modification of the file into the different version.

44. The method of claim 1, wherein the transmitting the first update request step is responsive to a size of the first set of at least one first identifier.

45. The method of claim 1:

comprising the additional step of receiving a frequency identifier; and

wherein the transmitting the first update request step is responsive to the frequency identifier received.

46. The method of claim 1, wherein the transmitting the first update request step is responsive to a time period.

47. The method of claim 1, comprising the additional step of:

receiving a reply;

computing an index responsive to the reply received; and

storing the reply indexed by the index computed.

48. The method of claim 1, comprising the additional steps of:

receiving the update to the plurality of files; and

applying the update to the plurality of files responsive to at least one selected from:

a termination of an application comprising at least one of the plurality of files; and

a request received from the application.

49. The method of claim 1, comprising an additional step of applying less than all of the update received responsive to the request received from the application.

50. The method of claim 1, comprising the additional step of notifying an application comprising at least one of the plurality of files.

51. The method of claim 33, comprising the additional steps of:

receiving the first request; and

providing a response comprising an identifier of an alternate provider of the update.

52. The method of claim 33, wherein the update comprises a minimum delay indicating a minimum amount of time intended to elapse before a third request for the update of the set of files is received.

53. The method of claim 33, comprising the additional step of building the update responsive to the identifier received.

54. The method of claim 34, comprising the additional step of building the update responsive to the set of at least one identifier.

55. The method of claim 33, additionally comprising a step of retrieving the update from a cache before the providing the update step.

56. The method of claim 5, wherein the cache is random access memory.

57. The method of claim 33, wherein at least one of the steps is implemented in a JAVA programming language.

58. The method of claim 1, wherein at least one of the steps is implemented using a Java programming language.

59. The method of claim 33, wherein the update comprises a digital signature.

60. The method of claim 33, additionally comprising billing a party responsive to at least one selected from the receiving, comparing, retrieving the first index, retrieving the second index, comparing and providing the update steps.

61. The method of claim 34, additionally comprising billing a party responsive to at least one selected from the receiving, comparing, retrieving the first index, retrieving the second index, comparing, either of the providing the update and either of the receiving steps.
 Description Submit all comments and votes
 


BACKGROUND OF THE INVENTION

This invention relates to the distribution of software over a network. More particularly, this invention relates to the broadcasting of code and data, and updates thereto, to a plurality of subscribers.

In large scale networks such as the Internet, or Intranets within businesses, the distribution of software applications is often a manual and laborious process which requires the correct use of such program tools such as ftp, tar, compress, uudecode, and zip. The variety of platforms and tools, and the complexity of the installation procedures make this manner of distribution a complex and costly operation. Software installation is therefore frequently performed by specially trained system administrators rather than end-users.

The Internet has significantly accelerated the release schedule of applications significantly. Software is released more frequently and in smaller increments, and as a result many more installations have to be performed, resulting in more work for the system administrator. This multitude of releases can cause versioning problems when a new piece of installed software becomes incompatible with some previously installed software. As these updates occur more often, it is desirable to automate this update process.

A browser is a computer program for accessing the Internet via the World Wide Web, using the HTTP protocol. Browser plug-ins allow the user to extend the browser so that it can incorporate new functionality. Plug-ins are often very hard to install because they are platform dependent, and not secure because they are implemented in low level languages such as C or C++. To make plug-ins secure the browser needs to implement some form of authentication algorithm such as those based on the RSA algorithm.

The Java programming language and the introduction of Java applets has made it possible to run the same software program in a secure manner on many different platforms, thus enabling the wide distribution of such programs over a heterogeneous network such as the Internet. With Java applets it has also become possible to automatically launch small Java programs from a World Wide Web browser which eliminates a lot of the installation headache.

When Java applets are used as applications, the user is required to use a browser to navigate to the HTML page containing the desired applet. Once the applet is running it is usually constrained to the HTML page in which it is embedded, and the applet may be terminated prematurely when the user visits a new HTML page.

Further, Java applets have several restrictions which prevent them from scaling to larger applications. One problem is that the download times are too long because each Java class is loaded using a separate HTTP connection, and making each new connection often takes more time than the actual data transfer. Also, Java applets have to be reloaded from their source each time they are used, there is no mechanism for persistence other than HTTP caching. HTTP caching has the drawback that it is too low level, which causes versioning problems because it may mix old Java classes with newer Java classes. It is usually impossible to flush an applet from an HTTP cache, because it is not possible to know which files in the cache belong to the applet that needs to be flushed.

Because Java applets are reloaded for each use, and because they usually consist of many parts, they can significantly increase the number of server accesses and thus significantly increase the server load. As a result most high volume web-sites cannot afford to put Java applets on their HTML pages.

A Java applet generally cannot be used when the client computer is disconnected from the network. If the user wants to use an applet after disconnecting the network, it is first necessary to use all the features of the applet to populate the HTTP cache. However, if the user ventures into a previously unexplored part of the applet once disconnected, the applet will be unable to proceed and a fatal error will result. This is a major drawback of caching strategies because disconnected use is important for the next generation of portable Internet devices.

Another drawback of HTTP is that ongoing transactions can often be corrupted when new code and data is installed on the server. This is not a fatal problem when it happens to an HTML page, but corrupting a request can be catastrophic for an application. HTTP simply is not an appropriate mechanism for distributing code.

Some applications need the ability to monitor their use by the end-user. An example is advertisement tracking where it is necessary to keep an accurate count of how often an ad is shown. Currently advertisements are tracked by counting the number of hits on the HTML page containing the ad, which means that the page cannot be cached because this would affect the hit-rate. The page is therefore marked as not-cacheable, and the result is fewer cache hits and increased server load.

Personalized web-sites and personalized applications are also becoming very popular. Because of security constraints it is very hard to create a personalized applet. The reason is that the applet can't save state to the local disk