Académique Documents
Professionnel Documents
Culture Documents
1. INTRODUCTION
This project is an introduction to the application development for the EyeOS Web Operating System. Some PHP knowledge is required , and it is not necessary to have experience in programming with CSS, JavaScript or XHTML, although knowing these technologies will help you understand better EyeOS and its internal functioning.
1.1
What is EyeOS
From a technical point of view, EyeOS is a platform for web applications, created with
the idea to make easy the application development. There are currently a lot of web-related technologies, such as PHP, XHTML, CSS and JavaScript, so it is required to master a lot of languages and understanding numerous concepts to be able to create web applications. In addition, every web browser has a different interpretation of the code and every PHP version and configuration works slightly different from the others. EyeOS intends to cover those and other problems derived from the web development, offering the programmers a homogeneous platform to develop their web applications, using only PHP code and leaving to the system the resource management, the communication with the browser, the security, etc. All you need is a web browser, Internet access and EyeOS is there for you, always, all the time. EyeOS is one of the few that is not only provided for free as a service complete with online storage, but is also open source under AGPL3, so you can install it on your own server. EyeOS is built on PHP and uses a combination of web standard technologies such as HTML, JavaScript and CSS to create the UI. This means that it will run on any standards compliant browser. By itself, it doesnt require any extra plug-in in order to work. All it needs is a PHP 5 capable server, which is the common denominator for just about any hosting package it doesnt even require a database.
EyeOS is all about entering work and entertainment in a single place. EyeOS is about removing compatibility issues between applications and operating systems and taking your life everywhere. EyeOS is available in 30 translations. And is used privatively and professionally throughout the world rather it is used for public environments, schools, small and large companies alike or a way to share data with your family. EyeOS has a use in our digital life era.
Department of CE
1.2
Before studying the EyeOS components, we must know its basic structure. The platform is created over a client-server architecture, in which EyeOS is the server, and the client is usually a web browser.
CLIENT
SERVER
Figure 2: EyeOS Basic Structure
1.3
The Kernel
The first step we must take to know EyeOS is the study of its kernel. Since EyeOS is a Microkernel-Based Platform, the kernel is only thought to unify the system services. In other words, EyeOS has many services for specific tasks, and the kernel is responsible for its communication and location.
Department of CE
Figure 3: Kernel
1.4
System Services
The Services in EyeOS perform low-level tasks. For example, the applications do not
manipulate files directly: instead of that, they use a service designed for that purpose. Thus, security is guaranteed since the services apply restrictions to the applications' requests. The only form to communicate with a service is the kernel, must be used. Service( ) takes 3 arguments : service( string $servicename , string $functionName [, array $params] ); The first argument specifies the name of the service to call. In EyeOS there are eight services, and they will be studied later. The second argument corresponds to the function to call, given that a service is a collection of functions and we must specify what function we want to use. For example, if we are using the filesystem manager service, we need to specify if we want to copy, delete or create a file. The third and last argument is an array containing the parameters passed to the function. For example, if we are using the filesystem manager service, we need to tell it which file we want to delete.
1.5
Libraries
The libraries in EyeOS are similar to the services. They too are called using the kernel, but
unlike the services, they do not handle low level tasks (such as files, users or processes), instead they make the development of applications easier, making available sets of functions the applications might need. EyeOS includes lots of libraries .
Department of CE,
Libraries can be used by any application. For example: eyeZip allows to work with ZIP files (extract, compress...) eyeURL allows to request URLs eyeXML allows to work with XML files (read, write...)
The way to use a library is very similar to that of a service, being the only difference the fact that the reqLib( ) function is used instead of service( ). reqLib( ) takes the same arguments as service( ) : reqLib( string $libName , string $functionName [, array $params] );
The first argument is the name of the library to use, such as EyeZip. The second argument corresponds to the function to use, such as ExtractZip (of EyeZip). The third and last argument are the parameters passed to the called function.
1.6
It is important to know how EyeOS is organized to be able to develop applications for. In EyeOS everything has its right place to be put on. The EyeOS directory tree can be summarized as: EyeOS/accounts - Information and credentials about the users. EyeOS/apps/ EyeOS/extern/ EyeOS/extras/ - Directory where the applications are located. - Files visible from the exterior, such as CSS stylesheets, images, etc. - Extra files.
EyeOS/groups/ - Groups directories.. EyeOS/i18n/ EyeOS/log/ - I18n and EyeOS translation directory. - System logs directory..
EyeOS/system/ - Contains the services, libraries, kernel and global configurations. EyeOS/tmp/ EyeOS/users/ - Directory where files are stored temporarily. - Users' directory where all their documents and files are stored.
Department of CE,
2. HISTORY
Establishment: In 2005, a group of young people worked together and put all their efforts in a new project, a new open source web desktop.
EyeOS: August 1, 2005: The first publicly available EyeOS version was released as EyeOS0.6.0. At the time, it greatly participated in creating the definition of a Web Operating System and acted as a concept. Quickly, a worldwide community of developers took part in the project and helped improve it by translating, testing and developing it.
June 4, 2007: After two years of development, the EyeOS Team published EyeOS1.0. Compared with previous versions, EyeOS 1.0 introduced a completereorganizatio technologies, like eyeSoft, a portagebased web software installation system. Moreover, EyeOS also included the EyeOSToolkit, a set of libraries allowing easy and fast development of new webApplications.
July 2, 2007: With the release of the 1.1 version, EyeOS changed its license andmigrated from GNUGPL Version 2 to Version3.October 29, 2007:1.2version was launched with full integration compatibility with Microsoft Wordfiles.
January 15, 2008: EyeOS 1.5 Gala was liberated. The first version that supported both Microsoft Office and OpenOffice.org file formats for documents, presentations and spreadsheets. It also had the ability to import and export documents in both formats using Server Side Scripting.
April 25, 2008: EyeOS 1.6 included many improvements such as synchronization with local computers, drag and drop, a mobile version and more.
Department of CE,
January 7, 2009: EyeOS 1.8 Lars featured a completely rewritten file manager and anew sound API to develop mediarich applications.
April 1, 2009: 1.8.5 Version incorporated a new default theme and some re written apps like the Word Processor and the Address Book.
2.1
Associated Technologies
With the increasing use of high-speed Internet technologies during the past few years, the
concept of cloud computing has become more popular. In Cloud Computing, users work with Web-based, rather than local, storage and software. These applications are accessible via a browser and look and act like desktop programs .With this approach, users can work with their applications from multiple computers. In addition, organizations can more easily control corporate data and reduce malware infections. Also, cloud computing makes collaboration easier and can reduce platform-incompatibility problems. Now, a growing number of organizations are adding to the cloud concept by releasing commercial and open source Web-based operating systems. While the idea is not new, the proliferation of users and applications distributed over the Web, including those at scattered corporate sites has made it more interesting, relevant, and, vendors hope, commercially viable. The Web OS goes beyond basic desktop functionality. It also includes many of a traditional OSs capabilities, including a file system, file management, and productivity and communications applications. As is the case with Web-based applications, the Web OS functions across platforms from any device with Internet access. In addition, distributed groups can collaborate via the technology
Driving the WebOS: The WebOS which functions much like a traditional operating system, although it doesnt include drivers for computer hardware is becoming a subject of increasing interest. One contributing factor is Internet technologies increasing bandwidth, which enables the faster
Department of CE,
movement of applications and data via the Internet to and from WebOSs. The feasibility of technologies that could be used in Web-based operating systems, such as a file system that identifies data by URLs, a location-independent resource-naming system ,and secure remote execution .EyeOS is an IBM Partner World vendor that uses open source software to create virtual Linux desktop services that run natively on Linux in a LAMP stack. EyeOS can be used to create a desktop platform that is suitable to run and manage diverse end user desktops in a central location from a server platform. The application itself is PHP based and runs on Linux platforms. When run on Linux on a System z server, many EyeOS desktop images can be supported by one Linux guest. This is in contrast to most desktops, where each desktop client requires a Linux guest in the System z to support it. For many System customers, EyeOS provides a simple, cost-effective way to transform delivery of services to a cloud model, an approach that is both easy to get started with and that scales over time and volume. There are also a number of server solutions available. System z has strong virtualization and management capabilities. The z/VM hypervisor provides proven technology for serving virtual clients. Our results validate how well System z virtualization scales up and out in this virtual desktop environment. For businesses that plan on implementing cloud solutions in the near future, System z should be considered as an integral part of the solution architecture .The objective of this project was to demonstrate that System z can host a large number of workstations, provision these systems quickly, and manage these virtual clients efficiently.
2.2 Technology
With so many different Web operating systems either currently available or in development, it should come as no surprise that programmers use different approaches to achieve the same effect. While the goal of a Web OS is to provide an experience similar to using a desktop OS, there are no hard and fast rules for how to make that happen. The two most popular approaches rely on Flash technologies or Asynchronous JavaScript and XML (AJAX) technologies. Flash is a set of technologies that enable programmers to create interactive Web pages. It's a technology that uses vector graphics. Vector graphics record image data as a collection of shapes and lines rather than individual pixels, which allows computers to load Flash images and animation faster than pixel-based graphics. Flash files stream over the Internet,
Department of CE,
which means the end user accessing the file doesn't have to wait for the entire file to download to his or her computer before accessing parts of it. With Flash-based programs like online streaming video player, this means you can start watching a film clip without having to download it first. More than 98 percent of all computers connected to the Internet have a Flash player installed. That makes flash an attractive approach for many programmers. They can create a Web OS knowing that the vast majority of computer users will be able to access it without having to download additional software. AJAX technologies rely on hypertext mark up language (HTML), the JavaScript programming language, Cascading Style Sheets (CSS) and eXtensible Mark up Language (XML).It's a browser technology. The HTML language is a collection of mark up tags programmers use on text files that tell Web browsers how to display the text file as a Web page.CSS is a tool that gives programmers more options when tweaking a Web site's appearance. Programmers can create a style sheet with certain attributes such as font style and colour, and then apply those styles across several Web pages at once. Java Script is a programming language that allows applications to send information back and forth between servers and browsers.XML is a mark up language, which means programmers us e it to describe the structure of information within a file and how it relates to other information. The "asynchronous" aspect of AJAX means that AJAX applications transfer data between servers and browsers in small bits of information as needed. The alternative is to send an entire Web page to the browser every time something changes, which would significantly slow down the user's experience. With sufficient skill and knowledge, a programmer can create an AJAX application with the same functions as a desktop application. Like Flash, most computers can run AJAX applications. That's because AJAX isn't a new programming language but rather a way to use established Web standards to create new applications. As long as an application programmer includes the right information in an application's code, it should run fine on any major Web browser. Some well known Web applications based on AJAX include Google Calendar and Gmail. A Sample of Web Operating System There are more than a dozen Web operating systems in various stages of completion. They include: EyeOS AstraNOS DestkopOnDemand
Department of CE,
3. ARCHITECTURE
EyeOS kernel uses a structure divided into 4 layers: Kernel: unified system services. Services: lower-level functions. library services: higher-level functions Applications: can call functions from any layer
Department of CE,
Service - VFS
file content Internally creates two files for each file (virtual functions): File information
Department of CE,
10
myPid : identifies every process. Checksum : identifies the process in the client-server communication.
Client-side EyeOS makes use of several technologies on the client (browser) side: XHTML and CSS are used to display the user interface. The content, however, is created and changed dynamically by the local JavaScript engine, which uses the DOM for this task. The local engine handles communication with the server asynchronously, using AJAX. Client and server communicate via XML requests/responses. The client always initiates communication. Each server response specifies a series of tasks to the client engine (e.g. creating a widget, changing a value of a component, executing JavaScript code embedded in the message, etc.). Not all interactions require communication with the server. JavaScript is used to provide client-side-only interactions
Department of CE,
11
Server-side Though it is not the focus of the project, we briefly comment on the server side of the architecture. EyeOS is written in PHP on the server side, and provides multiple high level abstractions. The goal of these is to make it easy to write new applications, and avoid dealing with low-level primitives. In this sense, EyeOS is also a web application development framework.
Department of CE,
12
4. BASIC SERVICES
There are 8 services in EyeOS, which are: extern eyeX log mmap proc sec um vfs They are located in the EyeOS/system/services/ directory.
VFS_INSUFFICIENT_PERMISSIONS Thus, it's VFS that ensures the security and not the applications. The applications do not need to worry whether the user has enough permissions on a file. The VFS internal work is done in a modular way. This means that the VFS functioning can be modified using new modules. The default module is the virtual module, although it can be specified which module to use changing the value of the VFS_MODULE parameter on the settings.php file. The virtual module uses two files for every file the user creates. One file is used to store the content of the file and other file is used to store information about it using the XML format. In addition, the virtual module . Department of CE, 13
concatenates a 32 character length random string to every file name, making it impossible to guess from the outside the name of a file. For example, if we call VFS with the virtual module to create a file: service('vfs','create',array('file.txt')); The system will actually create two files, being one called: file.txt_[RANDOM_STRING].eyeFile, which will store the content of the new file. And another called: file.txt_[RANDOM_STRING].eyeInfo, which will contain information about the new file, such as its author, its real name (file.txt) and the creation date. VFS always manages these low-level tasks. For example, if we want to delete the file called file.txt we just need to call VFS once and both files will be deleted: service('vfs','delete',array('file.txt')); If we want to open the file to read it: $fp = service('vfs','open',array('file.txt','r')); And from here we can use the file resource $fp using fread(), fwrite() and fclose() from PHP. The opening modes of VFS open are the same as the fopen() function used in PHP. Apart from this method using pairs of files, the virtual module has methods to deal with normal files which do not use the eyeInfo and eyeFile pairs. These methods are called real methods. The real methods work exactly like the virtual ones, but their name is preceded with the prefix real_. Let's see an example: service('vfs','real_create',array('file.txt')); every user has a home directory to work in. Inside every home directory there are: conf/ - the configuration files are stored here as real files with XML format. files/ - the virtual files (using eyeInfo and eyeFile) are stored here, and are visible to the user from the File Manager. The form to decide whether to use a virtual or a real method is as simple as thinking: Do I need to work with a user's file or with a configuration file? One detail to bear in mind is that the real functions do not have the same restrictions as the virtual ones. The virtual functions have permissions to read and write the files in the files/ directory of a user's home, and to create files
Department of CE,
14
in the groups' directories where the user belongs .Inside a group's directory, the virtual functions can only edit and delete files that belong to the user. The real functions have permissions to create and edit files everywhere in a user's home (including files/, conf/, etc), but they have no read nor write permissions on the group's folders. These restrictions exist for security reasons. It would be dangerous that real files of groups could be altered, so they can only be accessed with virtual functions.
4.2
The UM service manages the users in the system and provides the methods necessary for registering, logging in, obtaining the path to a user's home, etc. One important characteristic is that UM provides a global variable accessible at any place, called $currentUser, which contains the username of the current user
4.3
Before introducing MMAP, we must first get to know the communication between the client and the server. The EyeOS applications reside in the server, storing and processing the data in it, being for the client the medium to visualize and interact with the application. For example, the client is responsible of displaying a window, or sending a message to the server indicating a button has been clicked. The communication between the client and the server is done via messages. A message is a petition made by the client to the server, sending or asking certain information. Now that we know what a message is, we can move on and explain how MMAP takes part in this process.
MMAP is responsible for routing every received message in the server to the applications. A good comparison could be made with a postal system. When a mail arrives to the post central, it is classified according to its addressee, and finally it is delivered by the postman. MMAP would do the parts of organizing and delivery, since it classifies and transmits the message to the applications.
Department of CE,
15
Messages
Application A
Client
Application B
Application C
App C
Figure 6: Structure of MMAP
As a final note, you must know that MMAP is an automated service: it does not require any interaction with the developer at all. Nevertheless, it is important to know how to receive its messages,.
4.4 PROC
PROC is responsible for the process managing, and provides methods to launch, end, list processes, etc. When an application is launched with PROC, two very important variables for the application development are defined: myPid and checknum. myPid is a unique 4 characters length numerical value that identifies every process and checknum, just like myPid, is a unique number, although it is 8 characters length and identifies every process in the client-server communication. In this application, application app1 executes the application app2 and then it terminates itself. global $myPid; //Pid of application app1 $pid = $myPid; //We store the pid in another variable service('proc','launch',array('app2'); //We call launch, indicating the name of the application to open service('proc','close',array($pid); //We call close indicating the pid of app1 PROC provides a wide variety of process managing methods, not limited to launching or closing Department of CE, 16
applications. For example, the findPidByName() function, locates a given process with specified pid and returns the name of its application name.
4.5
EyeX
The Mmap service manages the messages coming from the client. All messages have a
response in XML format, which is interpreted by the browser. The response XML contains basic orders to modify the interface of the client. For example, we create a button that creates a new window when it is clicked:
BROWSER
SERVER
BROWSER
Figure 7:Structure of EyeX
SERVER
In the first case, the message goes from the browser to the server. In the second case, the response to the message includes the orders for the browser to create a new window. The EyeX service is the responsible for managing the response XML sent by the server. The applications request EyeX basic operations, such as creating windows or showing an image, and it is EyeX that transforms those orders in an XML message. For example, we can use EyeX to create a message box in the browser, just calling EyeX with service():
service('eyeX','messageBox',array('content'=>'This is a message'));
Department of CE,
17
get a file called style.css inside of a directory called 'test' located in EyeOS/extern/ we just should use the URL: index.php?extern=test/style.css
This service exists to allow the developers to use images, stylesheets and other files in their applications, without worrying about the EyeOS/ directory is not visible from the outside.
4.7
Log
Log does not require any interaction with the developer. It works autonomously registering the system's activity to log files, annotating the time and user of every action. Its presence does not reverberate at all at the time of building applications.
4.8
Sec
Sec is another autonomous system service, although it reverberates on the developers, unlike the log service. Sec is responsible of making EyeOS run in a secure environment. To do that, it disables PHP's magic_quotes and register_globals when initiating. Thus it's not necessary to worry whether these options are enabled or not: you will always see them disabled.
Department of CE,
18
5.1
All projects must be developed in an adequate environment. If, for example we are developing an application for GNU/Linux, it is better to use a GNU/Linux environment, otherwise the task would become quite a bothersome task. Let's see which requirements our environment should have: Subversion Client: we will need it to download the latest EyeOS code. Apache2 Server: the only server officially supported. PHP 5: the required version since EyeOS 1.2 and above. PHP Editor: any suitable text editor is valid. Our ideal environment is a personal preference: not everybody feels comfortable with the same applications. The EyeOS team uses all the same environment, which we thoroughfully recommend: Official Subversion Client: http://subversion.tigris.org IDE Eclipse PDT. A Unix-like OS: OpenBSD, FreeBSD, GNU/Linux etc. Mozilla Firefox 2.X. Firebug Extension ANEC (Add n edit cookies) Extension.
Department of CE,
19
5.3
Structure of an application
One important thing you should know to manage in EyeOS is the structure of an application. The directory and files tree of an application is as follows: EyeOS/apps/ -Directory that contains the PHP code of each application EyeOS/apps/Application/ -Application's main directory EyeOS/apps/Application/apps.eyecode -Initializing and ending code of an application EyeOS/apps/Application/events.eyecode -Event reception code EyeOS/extern/apps/Application -Main directory for the external resources of an application. The files and directorios marked in bold are required for an application to work properly.
5.5
Events
An event is described as an interaction by the user with the interface of our application. For
example, when a user clicks a button an event is produced. The generated information of every event is sent to the server in the form of a message. As we explained above, the responsible part of treating those messages is the MMAP service. MMAP is able to deliver every message thanks to the fact that each message contains the checknum of the addressee application and the name of the event. To deliver the message, MMAP finds a file named events. Eyecode in the directory of
Department of CE,
20
the addressee application and tries to call a function named ApplicationName_on_EventName, passing as an argument the body of the message. An example of a valid event function would be:
function
eyeNotify_on_reciveNewMessage($params){
if(!$params) {
eyeNotify: name of the application to which the message is addressed. reciveNewMessage: name of the event received. $params: parameters sent from the client.
5.6
Extern
Using extern in our application is very easy. We only have to place the file we want to access in extern/apps/ApplicationName/ and then use a URL to the file . The use of extern in an application is quite useful since it allows to load icons, CSS files, images,etc
Department of CE,
21
6. FEATURES
6.1 File Sharing Platform
With EyeOS you can manage and save your files with a synchronization between your computer and a virtual network drive connected with EyeOS.. Fast access to your information from any device with a web browser; You can create workgroups, managing user profiles and groups Blackboard to send messages between users and members of your groups; Work collaboratively with the same document at the same moment Allows an EyeOS platform to connect with the end users outside the system by allowing any EyeOS user to share his/her files with everyone, getting a simple URL for any file which should be shared; Files links can also be sent via e-mail; Files can also be shared with a password protection and only for certain groups of users;
Department of CE,
22
6.7
Working together IBM and EyeOS are making available a sample virtual Linux desktop Work load for the Solution Edition for Cloud Computing. Clients who choose to the EyeOS sample workload can: Accelerate the learning process for cloud computing with an open source software workload. Understand the anatomy of cloud images the contain operating systems, middleware and applications. Increase the speed to value for the Solution Edition for Cloud Computing.
Department of CE,
23
7. EXTRAS
Ublquity : Access your documents, files and applications from anywhere and any device.
Flexibility : From the small business to the big corporation. Also for individual use, there is an EyeOS for you!
Integration : The EyeOS architecture makes easier and faster the integration of any web application that you use
Simplicity : From its first steps. EyeOS has been planned and created to be intuitive and easy to use.
Collaboration : Share files and edit them in a real-time collaboration suite with other users.
Privacy: Decide where your files are: You can have your own EyeOS server!
Security: Control your EyeOS. You are who manage roles and permissions for each user.
Low costs: All in one in a single platform: the best way to optimize time and resources.
Department of CE,
24
On the server, EyeOS uses XML files to store information. This makes it simple for a user to set up on the server, as it requires zero configuration other than the account information for the first user, making it simple to deploy. To avoid bottlenecks that flat files present, each user's information and settings are stored in different files, preventing resource starvation from occurring.
Department of CE,
25
If, for example we create a window in our application and want to create a button inside the window, we must indicate the name of the window as the father of the button. The background is a layer called eyeApps, which is the father of all windows that are not placed inside another window.
Department of CE,
26
X the horizontal coordinate with regard to its father. Y the vertical coordinate with regard to its father. Horiz this flag specifies the form in which the horizontal (X) coordinates are taken. If it is set to 0 (the default value) the pixels are counted from the left. If set to 1, the pixels are counted from the right. Vert exactly like Horiz, but with the vertical (Y) coordinates. The use of horiz and vert is justified: we may want to stick some element to the right or down border of a window, and those flags eliminate the need to calculate the size of the window to place the element. Cent this key is used to center widgets. When it is set to 0 (the default value) nothing is changed. If it is set to 1, it makes the horizontal and vertical coordinates (X and Y,respectively) given be ignored, and centers the widget at the center of the father. If set to 2, the widget is centered horizontally, and when it is set to 3 it is centered vertically. Aside from these parameters in the array, each widget has its own specific parameters. We will se an example using a window widget to see this
$myWindow = new Window(array( 'name'=>'Window1', 'father'=>'eyeApps',
This example creates a window with a 600x500 pixels size, centered in the screen and with a title called 'Example1'.
9.2
Since EyeOS is executed in the server using PHP and it is visualized in the client, using XHTML and Javascript, it is necessary a mechanism to communicate both parts.
Department of CE,
27
Javascript +XHTML
Figure 8:EyeOS Application
PHP
The PHP side is where the classes reside, and in the Javascript side there is a system to draw the widgets, although the programmer does not need to deal with it. To communicate both sides, Messages are used. They normally consist of Ajax calls that are made by the system when the user interacts with some part of an application. For example, if the user clicks a button, it emits a message, an Ajax call to the server, telling it the button is pressed. The most interesting part of this process is that it occurs automatically, and the programmer only has to worry about creating the widgets and managing the events in a free way
9.3 Messages
The messages in EyeOS are the way to call the events of an application. Those events, normally being Ajax calls to the server have 3 parameters (although the programmer does not need to deal with it, since it is automatically handled by EyeOS). The first parameter is the checknum, a unique random number assigned to every application that lets EyeOS know to which application a message is directed to.The second parameter is the signal, which is the name of the event of the application. As said above, with each message received, EyeOS tries to execute a function from the events.eyecode file called applicationName_on_signal. Most widgets capable of sending messages use their name as the signal to send. However, their constructor allows to specify a key named 'signal' to set the name of the signal sent to a desired value.
$myButton = new Button(array('name'=>'Button1', 'signal'=>'doSignal' 'caption'=>'Click me!', 'father'=>'Window1', 'x'=>30, 'y'=>3
Department of CE,
28
This example creates a button with the text Click me!, that will produce the event 'doSignal' when clicked. In addition, the messages have a third param, which is their value. This value is the content of the widget that produces the event. For example, a textbox that sends a signal when you enter the text on it would send its text. This parameter lets the PHP side to stay coordinated with the values of the Javascript/XHTML side.
9.4 Serialization
In EyeOS, the serialization consists in storing all the widgets of an application in the user's session so that the widgets remain available when an event is triggered. Let's see an example: We create a textbox and a button, and we want to change the text of the textbox to the string 'Hello, World!' every time the button is clicked.
$myTextbox = new Textbox(array( 'name'=>'textBox', 'width'=>212, 'father'=>'Window1', 'x'=>30, 'y'=>50 )); $myTextbox->show();
$myButton = new Button(array('name'=>'button1', 'caption'=>'Change text', 'father'=>'Window1', 'x'=>120, 'y'=>90, 'signal'=>'change' ));
$myButton->show(); Now we have the two elements drawn in the window (named Window1). Now we make that when the message 'change' is received, the event of the events.eyecode file changes the text inside the textbox: function ejemplo1_on_change($params=null) { $textBox->setText('Hello, world!');
Since we gave the textbox the name 'textBox' when we created it, we can access this textbox just by referring it with this name. This way, we can access and modify the textbox using its class methods. Serializing affects the memory of the server. We may be interested in drawing widgets without serializing them.
Department of CE,
29
To avoid serializing a widget is as easy as passing the number 1 as the argument of the show( ) method of the widget:
-
Now we have the two elements drawn in the window (named Window1). Now we make that when the message 'change' is received, the event of the events.eyecode file changes the text inside the textbox:
Since we gave the textbox the name 'textBox' when we created it, we can access this textbox just by referring it with this name. This way, we can access and modify the textbox using its class methods.
Serializing affects the memory of the server. We may be interested in drawing widgets without serializing them. To avoid serializing a widget is as easy as passing the number 1 as the argument of the show() method of the widget:
$myTextbox = new textbox(array( 'name'=>'textBox', 'width'=>212, father' => 'Window11', 'x'=>30, 'y'=>50 ));
$myTextbox->show(1); //This widget is not serialized! We won't be able to access it from the events.
Department of CE,
30
9.5 Friends
The friends concept in EyeOS is a way to tie widgets so that an event on a widget causes another widget to refresh its content. As we saw above, when a widget produces an event, it includes in the message its new content so that the PHP can have its most recent content. However, we may want the widget to update the content of other widgets when producing an event. For example, in an application with a button and a textbox, we want to retrieve the content of the textbox when the button is pressed. To update the content of that textbox when the button is pressed, we must make the textbox a friend of the button. Let's see an example:
$myTextbox = new Textbox(array( 'name'=>'textBox', 'width'=>212, 'father'=>'Window1', 'x'=>30, 'y'=>50 )); $myTextbox->show();
$myButton = new Button(array( 'name'=>'button1', 'caption'=>'Change', 'father'=>'Window11', 'x'=>120, 'y'=>90, 'signal'=>'change'));
This way, in the events.eyecode file, we can retrieve the content of the textbox this way:
Now $text contains the text of the textbox at the moment of clicking the button.
Department of CE,
31
10.GROUPS
Every user is member of at least one group, normally the public group. Each group has a folder with its name inside the groups/ directory where all the shared files between the group members are stored. Currently there are few functions for group managing, although both the UM and VFS services offer some interesting ones:
The files stored in a group do not have any type of restriction to the other members. For example, user A can delete a file of user B in the group.
Department of CE,
32
EyeOS is an Open Source web operating system and applications platform, and aims to be the strongest free, open source web development platform out there. This can only be possible with the work of thousands of people who do release they work as OpenSource and share it with the rest of the EyeOS community. There are lots of available licenses outthere. We recommend to use the GNU ones, but you are free to choose whats the best Open Source license for your work. For this reason, we aim you to release your work (from your very first application to a full system of applications and system tweaks) in the EyeOS Applications Community: http://www.EyeOS-apps.org
Department of CE,
33
12. APPLICATIONS
12.1 Application Areas
EyeOS provides system for the users where they work with EyeOS and all itsapplications, including Office and PIM ones.EyeOS provides a toolkit to create newapplications easily. EyeOS can provide schools and universities with a full web platform where students,teachers and parents will have a personal yet collaborative desktop to work and,communicate between themselves and get organized inside and outside the school.With a private server, EyeOS can provide city councils, public library networks, freeInternet points and other public environments the perfect system for their users to have aweb place to work and communicate with the network managers, registering once andusing it from every point.One of the main triggers and great acceptance of people with regard to this service is itsavailability online, which has no dependencies and has a strong security system,achieving thus be an ideal application for storing content. This action may be useful for those who travel frequently, for schools that want a centralized storage and available for intranets and business in general and so on.; Even could be used in any future as a serviceto replace the need for a harddisk Among the most typical uses are highlightedSchools: There is a Web system that brings a personal space for each teacher and student,which can be leveraged to work collaboratively.Also it is best accessed from anywhereyou have Internet access.Public places may be in libraries or on points that have open WiFi, allowing users toconnect to have the same meeting place on the Web.Social Organizations and Companies:Contacts, personal files and communications to which members can access businesses andorganizations large and small.
who are looking for a solution on the cloud for itscompany and they are starting to see EyeOS as an important player to make the finalchoice. Therefore our structure has been increased to attend their demands. We offer specific programming, branded installation, training and support to the people/customerswho want to customize or personalize our product for their companies. We are alsoincreasing our official partners list, to improve our Professional Network, and to be ableto offer local services at a wide variety of places.
EyeOS and IBM Working together - where EyeOS will be the Sample Workload of the new System Z serie Solution Editionfor Cloud Computing. System Z is the IBM brand used to produce their mainframeservers, used worldwide by governments, big companies and thousands of organizations.EyeOS was approved and introduced to the IBMs Global SolutionDirectory It also represents its expansion as a powerful, scalable platform working withone of the biggest IT corporations in the world.EyeOS is designed to access a specific set of applications installed on the virtual desktop.Using the system, an organization could provide employees with productivityapplications, its own custom applications, and access to proprietary data. The ability toaccess these through a single Web-based operating system saves users from needing passwords to different Web-based services. It also allows the applications to be morecompatible with eachother.IBM is beginning to sell EyeOS pre-installed on its high end servers, but this is not to sayits will not come onto notebooks and netbooks. The idea is to get people interesting inusing EyeOS to get them comfortable with cloud computing in their business, so when thetime comes, they can transition that familiarity to home notebooks. partnership with GMV, which will deliver new and exciting projects based on the OpenKnowledge, by joining the experience and expertise from GMV and the Open SourceEyeOS Web Desktop Platform to provide enterprise-ready Web Desktop Solutions,expanding the EyeOS usageworldwide.
between different work centres at company, or working fromdifferent places and countries on the same projects.Always enjoying the same applications with the same open formats, and forgetting theusual compatibility problems between office suites and traditional operating systems.Being able to continue working if you have to leave your local computer or if it justcrashes, without losing data or time: Just log in to your EyeOS from another place andcontinueworking.A Web OS runs on any Internet enabled computer or device. This is important for mobileworkers or people who dont have their own computers and must work out of Internetcafes, libraries, or schools. Also, Web OS users can work, log out, and then log in later from a different computer. In addition, because the same Web OS can run on differentcomputers, the technology facilitates collaboration among multiple work centres. Thetraditional OS runs on only one computer. Extensions such as the Network File System away for different machines to import and export local files and remote desktop a way tocontrol one computer by using another device allow easier access to information frommultiple locations and better user collaboration. However, these techniques are limited toa set of machines on the same network or specific computers that have been linked.WithaWeb OS, users can store, find, and otherwise manage files and services,such as calendarsand email, from a Web desktop. And storing applications, files, and services on an OS providers servers, rather than on the users computer, makes them harder for a PC or laptop thief to use.Web OS users dont have to back up or archive work because the providers remote server handles these functions.The technology also promises to reduce userside long-term computer and device costs because much of the heavy processing is concentrated in providers remote servers, SunWeb OS operates across platforms, it eliminates compatibility issues between applicationsand operating systems. Thus, the same Web OS will run on a Windows, Mac, or Linuxmachine. Application developers create an application only once for a Web OS, rather than many times for each of the traditional operating systems. And system administratorshave to deploy an application only once for a given Web OS. They can then easilydistribute it online to users. Because the Web OS and its applications are generally basedin servers that can be monitored and secured from one location, they provide centralizedmalware protection.
EyeOS Toolkit. It includes a Desktop environment with 67 applicationsand system utilities. It is accessible by portable devices via its mobile front edu. EyeOSlets you upload your files and work with them no matter where you are. It containsapplications like Word Processor, Address Book, PDF reader, and many more developed by thecommunity.For developers, EyeOS provides the EyeOS Toolkit, a set of libraries and functions todevelop applications for EyeOS. Using the integrated Portage-based eyeSoft system,anyone can create their own repository for EyeOS and distribute applications through it.Each core part of the desktop is its own application, using javascript to send server commands as the user interacts. As actions are performed using ajax (such as launchingan application), it sends event information to the server. The server then sends back tasksfor the client to do in XML format, such as drawing a widget.On the server, EyeOS usesXML files to store information. This makes it simple for a user to set up EyeOS on aserver, as it requires zero configuration other than the account information for the firstuser, making it simple to deploy. To avoid bottlenecks, that flat files present, each user information and settings are stored in different files, preventing resource starvation from occurring.
Department of CE,
37
The future of computers With software like EyeOS etc. computer processors, memory and disk space are becoming less and less important for the average user. Computer specifications will startto drop as will cost. Smaller laptops will start to become dumb terminals as all processingand the fun stuff is done by the EyeOS server.
Department of CE,
38
even in the smallest servers, since its done in a much more powerful server inside the network. A maximum upload file sized of 1000 MB (you can basically upload almost every file you want to your EyeOS and keep it online, directly with eyeUpload or through eyeSync for Windows, Mac and Linux). Every single server is inside a Virtualized Private Server environment: Your data will be safe and protected against others access. You will have the root account inside your EyeOS Server: This means being able to install new applications, creating work groups, enabling or disabling the possibility to allow people to create accounts, assigning a maximum space quota per every user.
Department of CE,
40
Department of CE,
41
Schools: There is a Web system that brings a personal space for each teacher and student, which can be leveraged to work collaboratively. Also it is best accessed from anywhere you have Internet access.
Public places may be in libraries or on points that have open WiFi, allowing users to connect to have the same meeting place on the Web. Social Organizations and Companies: Contacts, personal files and communications to which members can access businesses and organizations large and small.
Department of CE,
42
15.1 Advantages
Availability. Decentralization, Portability,
15.2 Disadvantages
Isolation of the host system. Need for fast connection performance, Safety,
Department of CE,
43
16. CONCLUSION
Rich text editing facility Browser and Platform independent: All browsers and all operating systems are supported. Remote storage facility: Through the file browser you can store files over the internet and edit them as you want. Extensive list applications: Office applications, multimedia applications, network applications and chat applications etc. are available. Dynamic content and design: Interface can be customized according your needs, windows are floating so that they can be repositioned Requires only browser: A browser with java support is more than enough Worldwide availability: As its available through internet Disadvantages: safety, need for fast connection performance, isolation of the host system. Advantages: Portability, decentralization, availability. Creation of the interface using widgets. Communication with the user through events. It is designed for developers without experience to develop web applications.
Department of CE,
44
17 . REFERENCES
1. http://www.openwebosproject.org. 2. http://www.engineersgarage.com/articles/web-operating-system-webos. 3. http://www.zdnet.com/blog/web2explorer. 4. K. Arnold and J. Gosling. The Java Programming Language. Addison Wesley, 1997. 5. http://www.ncsa.uiuc.edu/General/CC/CCMetacomputer.html. 6. http://www.sun.com/smi/Press/sunflash/mncrs-profile.html. 7. F. Reynolds. Evolving an operating system for the Web. IEEE Computer. 8. H. Unger, H. Unger, and G. Hipper. LYDIA {load sharing for PVM applications in a workstation cluster. In Proceedings of PDCS'97, Washington, DC, 1997.
Department of CE,
45