This site applies cloud downloaded software running locally on your browser
Advantage potential in this concept:
You might consider the following arguments: - No need for software deployment and distribution, - No assembly effort on user's equipment, - Having a standard web browser, the user can stick to his/hers preferred OS (Win, Linux, OS X, Android, ...) and hardware (pc, laptop, tablet or phone⚹), - Application support and maintenance are greatly simplified, since only one software version (the one on the server) needs to be supported and updated. (⚹some of the chosen jquery widgets proved not mobile and touch friendly.
Therefore, the user experience on smart phones is not pleasant enough.)
Application skeleton:
Two separately developed and debugged components are needed; One for the server and another for the user's browser.
Interaction between these two takes place through server responses to requests from the user's web browser.
Server side program:
Server software is normally located on a remote machine, but for offline access and program development, it can
as well be assembled on the local machine. In that case, 'local host' stores all the required HTML pages and
javascript resources. After processing the requests coming from client's browser, the server sends back responses with dynamic content.
The program on the server machine is based on a specific web-framework system, selected by the developer in the
beginning of the development process. Several alternatives are available for the web-framework. Some popular frameworks: - Django (Open source web application network written in Python) - Ruby on Rails (RoR) (MIT licenced application network written in Ruby) - Symphony (Open source web application network under MIT licence for PHP language) - Spring framework (Apache licenced application framework for Java platform) - ASP.NET (open source, server-side web application framework running on Microsoft CLR) - Node.js (open source, cross-platform runtime environment for javascript, from Node.js Foundation)
Browser side program:
Browser software is scripted into the web pages (script tags in html-files) and is downloaded on
demand from the server, when the user browses to the page.
Modern browsers (2016) use HTML, CSS and Javascript with versions 5, 3 and 1.8.5 respectively.
For safety reasons, the script on the browser (downloaded from the internet), cannot directly
access the client's local file system or activate any local programs on the user's equipment.
However, local files can be accessed and written after events, where the user by mouse click or keyboard
first authorises those operations, as is the common practice with email attachments and software updates
to locally installed software, that are distributed through the internet.
These HTML5 File Api features and the data safety issues in general are perhaps the biggest issues and downsides in web browser based programs: Files should be downloaded only from safe servers and financial transactions made only through https on sites with safety certificates. This web site does not require or accept financial transactions, but was nevertheless tested and can be rechecked to have A+ safety . Without the on local machine saved program files, all browser based software is useful only if internet access
available, and a slow connection may cause intolerable response time problems.
Configuration in this site
All the applied open source components and MIT licenced software packages are listed under the 'Acknowledgements' menu item of this site.
For this particular web site, Node.js was the natural choice for the server side framework,
enabling javascript coding on both sides. Though Node.js is rather recent, it already
serves behind numerous web sites from many front line companies (Microsoft, Yahoo!, LinkedIn, eBay, Dow Jones, Cloud9, The New York Times etc.) and it is also supported by most web hosting providers.
On this particular web site, in addition to web page storage and delivery, server software
is needed for: user signup and login authentication: - database management (i.e. to store and acquire data:) - user information (username, password, email address, expiration date) - user data files, storage and delivery - user messages and comments with moderation
Conclusions:
It turned out that Node.js runtime fits perfectly to this site,
where major part of data processing is performed locally in the browser on the client's pc.
Network speed didn't cause any issues on my low speed (<10Mbit/s) connection. Javascript coding is fast and easy enough, with a vast number of MIT licensed widgets and components
downloadable directly from the web. A major difference to 'traditional programming' is the frequent
use of callback structures , which are necessary to maintain user interface responsiveness during
requests from the server. The software on the browser and in the Node.js server are single threaded, but the asynchronous nature of the callback loops increases somewhat the coding and debugging difficulty.
Practically all modern computers are equipped with internet access. Therefore, admitting the already named
conceptual benefits, it is very obvious that 'browser based software' will become more and more frequent,
replacing the traditional, locally installed applications.
As a final and convincing example you might consider software development environments, that earlier were among the heaviest
locally assembled software products, but now are directly available on web browser interface with minimal local
installations. (see for example: - Cloud9 development environment in the cloud )