From 3d3b6aac587d523ac57218314a434c7bfa640270 Mon Sep 17 00:00:00 2001 From: Mike Gerwitz Date: Wed, 9 Mar 2011 01:17:32 -0500 Subject: [PATCH] Began adding About chapter to manual, beginning with history --- doc/about.texi | 73 +++++++++++++++++++++++++++++++++++++++++++++++++ doc/manual.texi | 2 ++ 2 files changed, 75 insertions(+) create mode 100644 doc/about.texi diff --git a/doc/about.texi b/doc/about.texi new file mode 100644 index 0000000..eb091f9 --- /dev/null +++ b/doc/about.texi @@ -0,0 +1,73 @@ +@c This document is part of the ease.js manual +@c Copyright (c) 2011 Mike Gerwitz +@c Permission is granted to copy, distribute and/or modify this document +@c under the terms of the GNU Free Documentation License, Version 1.3 +@c or any later version published by the Free Software Foundation; +@c with no Invariant Sections, no Front-Cover Texts, and no Back-Cover +@c Texts. A copy of the license is included in the section entitled ``GNU +@c Free Documentation License''. + +@node About +@unnumbered About ease.js + +ease.js is a collection of @uref{http://commonjs.org, CommonJS} modules intended +to ``ease'' the transition into JavaScript from other Object-Oriented languages. +It provides an intuitive means of achieving classical inheritance and has +planned support for traits/mixins, function overloading and more. + +Current support includes: +@itemize @bullet +@item Simple and intuitive class definitions +@item Classical inheritance +@item Abstract classes and methods +@item Interfaces +@item Visibility (public, protected and private members) +@end itemize + +While the current focus of the project is Object-Oriented design, it is likely +that ease.js will expand to other paradigms in the future. + +@section History +ease.js was initially developed for use at Mike's place of employment in order to +move the familiar concept of Object Oriented development over to JavaScript for +use in robust web applications. JavaScript lacks basic core principals of Object +Oriented development, the most major of which is proper encapsulation. + +The library would be required to work both server and client-side, supporting +all major web browsers as far back as Internet Explorer 6. Since it would be +used in a production system and would be used to develop a core business +application, it must also work flawlessly. This meant heavy unit testing. + +The solution was to develop a library that would first work server-side. The +software of choice for server-side JavaScript was @uref{http://nodejs.org, +Node.js}. Node uses the CommonJS format for modules. This provided an intuitive +means of modularizing the code without use of an Object Oriented development +style (the closest other option would be Prototypal). ease.js was first +developed to work on Node.js. + +Moving the code over to the browser is not a difficult concept, since the entire +library relied only on standard JavaScript. A couple important factors had to be +taken into account, mainly that CommonJS modules don't simply ``work'' +client-side without some type of wrapper, not all browsers support ECMAScript 5 +and the assertion system used for tests is a Node.js module. + +This involved writing a simple script to concatenate all the modules and +appropriately wrap them in closures, thereby solving the CommonJS issue. The +required assertions were ported over to the client. The only issue was then +ECMAScript 5 support, which with a little thought, the browser could gracefully +fall back on by sacrificing certain features but leaving the core functionality +relatively unscathed. This provides a proper cross-browser implementation and, +very importantly, allows the unit tests to be run both server and client side. +One can then be confident that ease.js will operate on both the server and a +wide range of web browsers without having to maintain separate tests for each. + +Needless to say, the development was successful and the project has been used in +production long before v0.1.0-pre was even conceived. It was thought at the +beginning of the project that versions would be unnecessary, due to its relative +simplicity and fairly basic feature set. The project has since evolved past its +original specification and hopes to introduce a number of exciting features in +the future. + +The project is owned and developed independently by Mike Gerwitz. There is no +ownership by his employer. + diff --git a/doc/manual.texi b/doc/manual.texi index 0bc4539..309bca0 100644 --- a/doc/manual.texi +++ b/doc/manual.texi @@ -42,9 +42,11 @@ This manual is for ease.js, version 0.1.0-pre. @end ifnottex @menu +* About:: About the project * License:: Document License @end menu +@include ./about.texi @include ./license.texi @bye