Method and system for specifying generating and forming intelligent teams of interoperable devices
System, device, method, and computer program and computer program products for providing communicating between devices having similar or dissimilar characteristics and facilitating seamless interoperability between them. Computer program software and methods of and systems and devices for sharing of content, applications, resources and control across similar and dissimilar permanently or intermittently connected electronic devices. Devices, systems, appliances, and the like communicating and/or interoperating within the framework provided. Interoperability Platform, such as a DartPlatform, provides a set of methodologies which can carry out the specification, generation, intelligent teaming of devices (such as DartDevices) and facilitate the spreading and running of interoperability applications across one or more devices.
1 . A system for specifying, building, distributing, and carrying out the intent of an interoperability software package of independently executable images across a plurality of possibly heterogeneous devices in a secure, reliable, efficient and robust manner, the system comprising:
(1) an interoperability source for specifying an interoperability software package;
(2) interoperability tools for building procedural instructions;
(3) an interoperability format for packaging at least the procedural instructions;
(4) an interoperability instruction set for representing the procedural instructions generated by the interoperability tools;
(5) an interoperability engine for running the interoperability software package and providing a common interoperability infrastructure on all interoperability devices; and
(6) device recruitment means for forming, distributing, and maintaining a team of interoperability devices.
2 . The system of claim 1 , wherein the device recruitment means further includes:
means for sending an inspection procedure operative to find a device having a needed resource or capability to at least one reachable device different from the initiating source device over at least one communication link, the inspection procedure including inspection procedure instructions coded in an executable form common to both the initiating source device and to the device the inspection procedure is intended to reach;
means for receiving on the initiating device the return response from each of the reachable devices directly or indirectly over a communication link;
means for analyzing, by a procedure executing on the initiating device, the received returns from all responding reachable devices to determine a utilization plan identifying the combination of capabilities and resources of the initiating source device and the responding reachable devices to best carry out the intent of the software application; and
means for distributing, by an application program executing on the initiating device, at least one of executable code, data, content, and/or Dart to at least one of each of the reachable devices identified as having a needed resource or capability according to the identified utilization plan.
3 . The system of claim 1 , wherein one or more of the following optional components are included or used in the system in any combination:
(1) an interoperability framework;
(2) linear tasking means;
(3) vertical layering means;
(4) application driven power management means;
(5) application driven error recovery means;
(6) an interoperability runtime;
(7) an interoperability application driven runtime;
(8) creationism means;
(9) virtual pointers;
(10) an interoperability security model means;
(11) social synchronization means;
(12) social security means; and
(13) interoperability device enabling means.
4 . The system of claim 1 , wherein one or more of the following are true in any combination:
(1) the system includes a DartPlatform;
(2) the interoperability software package conforms to the interoperability format or is a Dart conforming to the DartFormat;
(3) the independently executable images are renditions;
(4) the Interoperability Source is a DartSource;
(5) the Interoperability Tools are DartTools;
(6) the Interoperability Format is a DartFormat;
(7) the Interoperability Instruction Set is a DartInstructionSet; and
(8) the recruitment method is a Dart Recruitment method.
5 . The system of claim 3 , wherein one or more of the following are true in any combination:
(1) the Interoperability Framework comprises a DartFramework;
(2) the Linear Tasking comprises a Dart Linear Tasking;
(3) the Vertical Layering comprises a Dart Vertical Layering;
(4) the Application driven power management comprises a Dart Application driven power management;
(5) the Application driven error recovery comprises Dart Application event driven error recovery;
(6) the Interoperability Runtime is a DartRuntime;
(7) the creationism is Dart Creationism;
(8) the virtual pointers are Dart Virtual Pointers;
(9) the interoperability security model comprises a Dart security model;
(10) the Social Synchronization comprises a Dart Social Synchronization;
(11) the Social Security comprises a Dart Social Security; and
(12) the Interoperability Device Enabling comprises a Dart Device Enabling.
6 . The system of claim 1 , wherein the system is simple because of one or more of the following features: a programmer or creator of the application writes and or tests just one interoperability application that targets an interoperability engine and it will provide the following features alone or in any combination:
(1) run well on all suitable interoperability devices running that engine;
(2) automatically allow any user interface input and output to be performed on nearby or remote Personal Computer or intelligently across many devices with superior interface hardware or software resources eliminating the need to separately write and separately distribute special Personal Computer synchronization applications;
(3) perform tasks which can only be performed or are better performed with two or more cooperating devices;
(4) serve as internet server software without the need to write any more code by placing the application on an interoperability device running the interoperability engine that is connected to the internet;
(5) distribute itself from device to device in a limited or unlimited manner;
(6) the use of virtual pointers eliminates the need to write more tedious code using file operations;
(7) make use of virtual pointers to eliminate the need for considering or writing algorithms used to improve the speed of access to various storage mediums;
(8) make use of virtual pointers to eliminate the need for thinking about or partitioning and maintaining the partitioning of a single address space where different memory allocations must be kept from growing into each other, or be resized dynamically, or copied to larger partitions so they could grow in size;
(9) make use of the hardware abstraction layer code with makes all communications mechanisms look the same to the application regardless of the protocol being used;
(10) make additional coding unnecessary to support the automatic bridging of protocols so that devices can be serially teamed even if different protocols are used between different devices;
(11) allow the programmer to use the code in the Interoperability Framework and its use of the rest of the Interoperability Platform to perform much of the most difficult aspects of interoperability applications without the need to write the code;
(12) provide a program development effort that grows linearly with the number of devices to support, N, instead of order development methodologies where the effort grows as the square of N or any other methodology where the growth rate is greater than being linear with N;
(13) provide a program testing effort that grows linearly with the number of devices to support, N, instead of order development methodologies where the effort grows as the square of N or any other methodology where the growth rate is greater than being linear with N; and
(14) limit the necessary testing is simplified because adaptation is limited to small number of well defined classifications of devices by a renditioning method.
7 . The system of claim 6 , wherein the step (11) of allowing the programmer to use the code in the Interoperability Framework and its use of the rest of the Interoperability Platform to perform much of the most difficult aspects of interoperability applications without the need to write the code, the aspects including one or more of the following in any combination:
(a) recruitment's device discovery;
(b) recruitment's device teaming;
(c) recruitment's spreading of parts of the application intelligently across devices;
(d) application level power management;
(e) application level error recovery;
(f) the mixing and matching of event processing units wherein the functionality is rearranged just by changing the graph of event processing units;
(g) the dynamic extension of the runtime to include separately generated interoperability applications into the runtime of other applications; and
(h) maintaining harmonious operation among the teams of devices using event processing which is automatically serialized and synchronized across teams of devices.
8 . The system of claim 1 , wherein the system is simple because of one or more of the following features: the end user of the application has to consider and or understand and or administrate any of the following less often, if ever, than the user would have to were conventional static interoperability methods and or conventional procedural interoperability methods used alone or in any combination:
(1) needing to know about, finding, getting or loading drivers;
(2) choices presented wherein a list of devices that cannot perform the intended functionality are presented along with those that can because the underlying system does not yet know what the limitations of the devices are when the list is created;
(3) what protocols are to be used, so that the end user does not have to pre-select the protocol or communications technology before initiating interoperability or knowing what the end user's choices are;
(4) the rules for securing devices and or data and or code and or content because of the transitivity of rules as carried out by the Interoperability Security Model and or the Social Security Method;
(5) the forming of teams of devices to carry out an intended purpose can be automated by the application;
(6) the application components of code and data and content and meta data are all packaged together according to the interoperability format and travel together so that the user does not have to deal with the preponderance of compatibility errors that would otherwise when interdentally generated and or independently distributed components that come into contact are incompatible due to one or more of:
(a) versioning incompatibilities;
(b) specification misunderstandings;
(c) errors in implementation;
(d) shortcuts in implementation made by the programmers or manufacturers; and
(e) necessary components that are found to be missing or otherwise unreachable; and
(7) explicitly installing separately generated applications on devices for synchronizing and or backing up data and or content across one or more devices.
9 . The system of claim 1 , wherein the system is simple because of one or more of the following features: the manufacturer of the device is simple as compared with conventional static and or procedural methodologies for one or more of the following reasons alone or in any combination:
(1) much less development effort since only the functions and protocols of the actual device need to be considered in porting an interoperability engine, and not all the permutations of possible protocols and characteristics of other devices because all the adaptation for different devices is carried out by the applications not by each and every device;
(2) no or less need to coordinate, participate or wait for application standards to be created before designing and or building and or bringing to market interoperability devices;
(3) lesser support needs because interoperability of devices and applications are easier to configure and use by the end user;
(4) can expose unique capabilities to other devices without writing or distributing components to other types of devices;
(5) devices can work with other manufacturers' devices without any or reduced coordination of efforts and or negotiating of contracts; and
(6) can advance or cost reduce hardware without the need to rewrite software applications and or distribute new software applications and or software updates to other devices.
10 . The system of claim 1 , wherein the system is simple because of one or more of the following features: the publishing of the interoperability software applications is simple as compared with conventional static and conventional procedural methods because of one or more of the following alone or in any combination:
(1) there is only one package instead of many packages and parts needed to address the market of heterogeneous devices and combinations of devices and protocols so that there is a bigger market addressable with one product which results in one or more of the following simplifications:
(a) lower development efforts;
(b) simpler inventory;
(c) simpler distribution; and
(d) simpler marketing since market is not as segmented by device types and/or communications protocols and or processor types, and/or screen sizes;
(2) simpler pricing and promotion models;
(3) more sales with less effort;
(4) easier use means simpler support;
(5) distribution of digital code and or data and/or content and/or packages thereof can be performed directly from device to device;
(6) applications or teasers about the applications can be distributed directly from device to device without the need to find other ways to communicate the benefits, existence or actual software directly to the potential users of a service accessible through the applications or directly to potential purchasers of software.
11 . The system of claim 1 , wherein the system is secure for one or more of the following reasons:
(a) the engine provides a protective sandbox by way of the checking of all application memory accesses for violations, and limiting direct application access to storage and other aspects of the device's resources so that interoperability applications code cannot be used to damage the device, its data, or content or run native code to get around the sandbox; therefore, only the limited code of the engine needs to secured against virus or other malicious attacks, and not all of the almost unlimited application code which can be written to run on the devices;
(b) viruses cannot propagate easily from devices with one native device processor type to devices with other native processors; since having the same processor is no longer necessary to ensure interoperability, more types of processors are likely to be deployed, making the world of interoperability devices more secure from the spread of viruses and other malicious software;
(c) the Social Security Model is so simple to administrate and use that people will actually leave security on, rather than turn it off to avoid the administration otherwise necessary with conventional security methods; and
(d) the Interoperability Security Model is implemented entirely or mostly in portable source code that can be thoroughly implemented and debugged once, greatly decreasing the likelihood of errors.
12 . The system of claim 1 , wherein the system is reliable and or robust for one or more of the following reasons in any combination:
(a) applications running on one or more devices are often or always communicating with parts of an initial package spread via the recruitment and renditioning methodologies so as to enjoy a reliably of interoperability greater than that where independently developed and or independently distributed applications used to perform the interoperability;
(b) the same portable source code of the Interoperability Engine is used on all devices largely eliminating the problems of implementation and or misunderstandings of the specification or other problems associated with independently developed and distributed source or code used to enable interoperability between or across devices;
(c) the Interoperability Framework provides much of the common interoperability functionality across applications and devices so that there is more testing of the Framework code and fewer separate designs and implementations, leading to fewer bugs or interoperability issues;
(d) Linear Tasking and or Vertical Layering and or the serialization and synchronization methods of Recruitment ensures a largely deterministic order of processing of events driving the application and device operations, leading to fewer possible permutations of operating order that might otherwise cause errors;
(e) application level error recovery is built into the Interoperability Platform, from the Interoperability Source, Interoperability Tools, the Interoperability Runtime and the Interoperability engine to ensure that intermittent interruptions in communications can often be elegantly handled without the need for the application to stop all operations or terminate, or be explicitly reset; and
(f) the Interoperability Security System and or the sandbox and or the access rights enforcement implemented in the Interoperability Engine can blocks viruses or other applications from harming the device or its data whether the potential harm is intentional or unintentional.
13 . The system of claim 1 , wherein the system is efficient for one or more of the following reasons alone or in any combination:
(a) only the code, data and content needed for a particular target device and or particular task needs to be sent over a communications channel and processed by a target device by the virtues of the Recruitment and or Renditioning and or Creationism methods for spreading code, data and content;
(b) only one application package is needed to effect even complex multiple device interoperability;
(c) the Part images of an interoperability application that conforms to an interoperability format are often shared between separately executable images of the application so that it is not necessary to duplicate much of the data shared by the separately executable images;
(d) Virtual Pointers automatically make advantageous tradeoffs between the use of main memory and physical storage to make applications able to run with less physical memory than would otherwise be necessary;
(e) Virtual Pointers automatically make advantageous tradeoffs between the use of main memory and physical storage to make applications able to run faster than if conventional memory and/or storage methods were employed; and
(f) Virtual Pointers make intelligent advantageously efficient tradeoffs of memory requirements and speed of operation based on the access patterns expected in applications and the physical characteristics of the main memory and storage of each particular device.
14 . The system of claim 1 , wherein the software application running on more than one device is at least partially performing the interoperability operations on two or more devices with code and/or data and/or content that were originally part of a single software package on the initiating device so as to enjoy a reliably of interoperability greater than that where independently developed and/or independently distributed applications are used to perform the interoperability operations.
15 . The system of claim 3 , wherein the (1) interoperability framework further comprises a computer program or computer program product for executing within a processor logic and associated memory and including a plurality of computer program code instructions implementing a procedure to establish an interoperability framework.
16 . The system of claim 3 , wherein the (2) linear tasking means further comprises a computer program or computer program product for executing within a processor logic and associated memory and including a plurality of computer program code instructions implementing a procedure performing linear tasking.
17 . The system of claim 3 , wherein the (3) vertical layering means further comprises a computer program or computer program product for executing within a processor logic and associated memory and including a plurality of computer program code instructions implementing a procedure performing vertical layering.
18 . The system of claim 3 , wherein the (4) application driven power management means further comprises a computer program or computer program product for executing within a processor logic and associated memory and including a plurality of computer program code instructions implementing a procedure performing application driven power management.
19 . The system of claim 3 , wherein the (5) application driven error recovery means further comprises a computer program or computer program product for executing within a processor logic and associated memory and including a plurality of computer program code instructions implementing a procedure performing application driven error recovery.
20 . The system of claim 3 , wherein the (6) interoperability runtime further comprises a computer program or computer program product for executing within a processor logic and associated memory and including a plurality of computer program code instructions implementing a procedure establishing a interoperability runtime.
21 . The system of claim 3 , wherein the (7) interoperability application driven runtime further comprises a computer program or computer program product for executing within a processor logic and associated memory and including a plurality of computer program code instructions implementing a procedure establishing and performing an interoperability runtime.
22 . The system of claim 3 , wherein the (8) creationism means further comprises a computer program or computer program product for executing within a processor logic and associated memory and including a plurality of computer program code instructions implementing a procedure performing creationism.
23 . The system of claim 3 , wherein the (9) virtual pointers further comprises a computer program or computer program product for executing within a processor logic and associated memory and including a plurality of computer program code instructions implementing a procedure performing creationism.
24 . The system of claim 3 , wherein the (10) interoperability security model means further comprises a computer program or computer program product for executing within a processor logic and associated memory and including a plurality of computer program code instructions implementing a procedure establishing an interoperability security model.
25 . The system of claim 3 , wherein the (11) social synchronization means further comprises a computer program or computer program product for executing within a processor logic and associated memory and including a plurality of computer program code instructions implementing a procedure performing an interoperability security model.
26 . The system of claim 3 , wherein the (12) social security means further comprises a computer program or computer program product for executing within a processor logic and associated memory and including a plurality of computer program code instructions implementing a procedure establishing social security.
27 . The system of claim 3 , wherein the (13) interoperability device enabling means further comprises a computer program or computer program product for executing within a processor logic and associated memory and including a plurality of computer program code instructions implementing a procedure performing social security.
28 . A method for specifying, building, distributing, and carrying out the intent of an interoperability software package of independently executable images across a plurality of possibly heterogeneous devices in a secure, reliable, efficient and robust manner, the method comprising:
(1) generating or providing an interoperability source for specifying;
(2) generating or providing interoperability tools for building procedural instructions;
(3) generating or providing an interoperability format for packaging at least the procedural instructions;
(4) generating or providing an interoperability instruction set for representing the procedural instructions generated by the interoperability tools;
(5) generating or providing an interoperability engine for running the interoperability software package and providing a common interoperability infrastructure on all interoperability devices; and
(6) performing device recruitment for forming, distributing, and maintaining a team of interoperability devices.
29 . A method as in claim 28 , further comprising:
sending an inspection procedure operative to find a device having a needed resource or capability to at least one reachable device different from the initiating source device over at least one communication link, the inspection procedure including inspection procedure instructions coded in an executable form common to both the initiating source device and to the device the inspection procedure is intended to reach;
receiving on the initiating device the return response from each of the reachable devices directly or indirectly over a communication link;
analyzing, by a procedure executing on the initiating device, the received returns from all responding reachable devices to determine a utilization plan identifying the combination of capabilities and resources of the initiating source device and the responding reachable devices to best carry out the intent of the software application; and
distributing, by an application program executing on the initiating device, at least one of executable code, data, content, and/or Dart to at least one of each of the reachable devices identified as having a needed resource or capability according to the identified utilization plan.
30 . A computer program product for use in conjunction with a computer system or information appliance, the computer program product comprising a computer readable storage medium and a computer program mechanism embedded therein, the computer program mechanism comprising:
a program module that directs the computer system or information appliance to function in a specified manner for specifying, building, distributing, and carrying out the intent of an interoperability software package of independently executable images across a plurality of possibly heterogeneous devices in a secure, reliable, efficient and robust manner, the program module including instructions for:
(1) generating or providing an interoperability source for specifying;
(2) generating or providing interoperability tools for building procedural instructions;
(3) generating or providing an interoperability format for packaging at least the procedural instructions;
(4) generating or providing an interoperability instruction set for representing the procedural instructions generated by the interoperability tools;
(5) generating or providing an interoperability engine for running the interoperability software package and providing a common interoperability infrastructure on all interoperability devices; and
(6) performing device recruitment for forming, distributing, and maintaining a team of interoperability devices.
31 . The computer program product of claim 30 , wherein the instructions for performing device recruitment further includes instructions for:
sending an inspection procedure operative to find a device having a needed resource or capability to at least one reachable device different from the initiating source device over at least one communication link, the inspection procedure including inspection procedure instructions coded in an executable form common to both the initiating source device and to the device the inspection procedure is intended to reach;
receiving on the initiating device the return response from each of the reachable devices directly or indirectly over a communication link;
analyzing, by a procedure executing on the initiating device, the received returns from all responding reachable devices to determine a utilization plan identifying the combination of capabilities and resources of the initiating source device and the responding reachable devices to best carry out the intent of the software application; and
distributing, by an application program executing on the initiating device, at least one of executable code, data, content, and/or Dart to at least one of each of the reachable devices identified as having a needed resource or capability according to the identified utilization plan.