Friend2Friend Wiki:About
From Friend2Friend Wiki
Is F2F a new concept?... Does it need a new name?... How is it best described and communicated to a computer scientist using existing technical vocabulary?
Contents |
What F2F is
Here's a list of technical CS terms that apply well F2F, courtesy of wikipedia:
Computing Platform
- A platform describes some sort of hardware architecture or software framework, that allows software to run. Typical platforms include a computer's architecture, OS, application frameworks, programming languages and related runtime libraries or graphical user interface.
F2F is a computing platform.
Scripting Language
Yes, definitely:
- A scripting language is a programming language that allows control of one or more software applications. "Scripts" are distinct from the core code of the application, which is usually written in a different language, and are often created or at least modified by the end-user.
Not so much:
- Scripting languages are nearly always embedded in the applications they control.
F2F soft-systems are scriptable. The scripting language is XML itself, so any XML document is valid F2F script.
Runtime System
- A run-time system (also called runtime system or just runtime) is a collection of software designed to support the execution of computer programs written in some computer language. The run-time system may provide software services such as subroutines and libraries for common operations, implementation of programming language commands, type checking, debugging, and even code generation and code optimization.
- A run-time system provides an abstraction layer that hides the complexity or variations in the services offered by the operating system. In the limit, the run-time system may be a P-code machine or virtual machine, that hides even the processor's instruction set. This is the approach followed by many interpreted languages such as Awk, and some languages like Java that are meant to be compiled into some machine-independent pseudo-code ("bytecode"). This arrangement greatly simplifies the task of language implementation and its adaptation to different machines, and allows sophisticated language features such as reflection. It also allows the same program to be executed on any machine without recompilation, a feature that has become very important since the diffusion of the World Wide Web.
The F2F server is a run-time system which interprets F2F script in the course of presenting the F2F systems (which are virtual machines).
What F2F might be
Virtual Machine
Mainly, Yes:
- A virtual machine (VM) is a software implementation of a machine (i.e. a computer) that executes programs like a physical machine.
- Virtual machines are separated into two major categories, based on their use and degree of correspondence to any real machine. A system virtual machine provides a complete system platform which supports the execution of a complete OS. In contrast, a process virtual machine is designed to run a single program, which means that it supports a single process. An essential characteristic of a virtual machine is that the software running inside is limited to the resources and abstractions provided by the virtual machine—it cannot break out of its virtual world.
- A process VM provides a high-level abstraction — that of a high-level programming language. Process VMs are implemented using an interpreter.
- A special case of process VMs are systems that abstract over the communication mechanisms of a (potentially heterogeneous) computer cluster. Such a VM does not consist of a single process, but one process per physical machine in the cluster. They are designed to ease the task of programming parallel applications by letting the programmer focus on algorithms rather than the communication mechanisms provided by the interconnect and the OS. They do not hide the fact that communication takes place, and as such do not attempt to present the cluster as a single parallel machine. Unlike other process VMs, these systems do not provide a specific programming language, but are embedded in an existing language; typically such a system provides bindings for several languages (e.g. C). Examples are PVM (Parallel Virtual Machine) and MPI (Message Passing Interface). They are not strictly virtual machines, as the applications running on top still have access to all OS services, and are therefore not confined to the system model provided by the "VM".
This doesn't fit so well, since F2F [soft-systems are designed to run 24/7, and permanently store data
- A process VM, sometimes called an application virtual machine, runs as a normal application inside an OS and supports a single process. It is created when that process is started and destroyed when it exits. Its purpose is to provide a platform-independent programming environment that abstracts away details of the underlying hardware or operating system, and allows a program to execute in the same way on any platform.
An F2F system is an XML (process) virtual machine.
Platform Virtualization
Guess so:
- Platform virtualization is performed on a given hardware platform by host software (a control program), which creates a simulated computer environment, a virtual machine, for its guest software.
F2F is a virtual platform, as distinct from an ordinary platform, since it presents a structure (e.g. soft-nodes) which work like a computer, running threads and sending messages etc.
This may be one way into explaining the fact that it's not just another programming language.
Application Server
Kind of:
- An application server is a software framework dedicated to the efficient execution of procedures (scripts, routines, programs, ...) for supporting the construction/hosting of applications. The term was created in the context of web applications.
- An application server acts as a set of components accessible to the software developer through an API defined by the platform itself. These components are usually performed in the same machine where the web server is running, and their main job is to support the construction of dynamic pages.
This downplays the F2F architecture/VM angle, but F2F has procedures to use (e.g. filters, services etc.), but is F2F an 'application server'.
Enterprise Service Bus
Yes:
- An enterprise service bus consists of a software architecture construct which provides fundamental services for complex architectures via an event-driven and standards-based messaging-engine (the bus).
- ESBs attempt to isolate the coupling between the service called and the transport medium.
Well, 'enterprise messaging system' puts a strange spin on it, but I guess so:
- An ESB generally provides an abstraction layer on top of an implementation of an enterprise messaging system, which allows integration architects to exploit the value of messaging without writing code.
F2F messages use something like a bus, but this is an incidental part of the architecture, so while F2F is not a bus as such, it has a specialised ESB (i.e. bubbling using filters).
What F2F isn't
Here's a list of phrases which do not describe F2F, but which might come up in discussion of it.
Parallel Virtual Machine
- The Parallel Virtual Machine (PVM) is a software tool for parallel networking of computers. It is designed to allow a network of heterogeneous Unix and/or Windows machines to be used as a single distributed parallel processor.
PVM refers to a specific piece of software that's skinning many computers as just one. An F2F server does something close to the reverse.
Operating System
F2F doesn't have anything to do with hardware.
Summary
F2F servers provide a set of XML process virtual machines, (soft-systems), which are virtual platforms on which to run 'guest' scripts such as those received in messages). They are not typical VMs, since they manage their own data, and are intended to persist and interact with one another over a network. F2F has a runtime-system to interpret its scripting language (XML) as F2F script - i.e. according to the servicereq processing model.