Fork 0
Classical object-oriented framework for JavaScript [unmaintained] https://gnu.org/software/easejs
Go to file
Mike Gerwitz b8a4dd010d
make distcheck fixes
In particular, creating the build/ directory during VPATH builds was
problematic.  I wasted too much time on this, so I opted for simply creating
the directory in each of the targets.

* Makefile.am: Use {=>top_}srcdir.  Create $(path_build) in each target as
  (path_build): Use top_builddir.
  (PHONY): Remove mkbuild target.
  (mkbuild, $(path_build)): Remove targets.
2017-11-07 22:38:36 -05:00
doc Modernize documentation examples 2017-11-02 00:52:00 -04:00
lib Copyright year update for all files modified since 0.2.8 2017-11-04 15:08:02 -04:00
test Copyright year update for all files modified since 0.2.8 2017-11-04 15:08:02 -04:00
tools NEWS: Increase line threshold 2017-11-07 00:18:28 -05:00
.gitignore Add missing INSTALL 2016-10-14 22:33:57 -04:00
.mailmap .mailmap updated with mtg@gnu.org 2015-05-11 23:11:25 -04:00
COPYING Split COPYING into two separate files: COPYING and COPYING.LGPL 2012-06-13 22:27:48 -04:00
HACKING HACKING: Note to write only ES3 2017-06-30 02:03:09 -04:00
INSTALL Add missing INSTALL 2016-10-14 22:33:57 -04:00
Makefile.am make distcheck fixes 2017-11-07 22:38:36 -05:00
README.md Merge README with README.md 2017-07-25 23:38:08 -04:00
TODO README.md et. al. restructuring 2015-08-23 00:15:48 -04:00
autogen.sh Add autogen.sh 2016-04-21 22:42:10 -04:00
configure.ac dia check via configure 2015-12-22 22:52:04 -05:00
index.js Prototype wrapping using index function 2015-09-09 23:36:14 -04:00
package.json.in package.json licence field update to GPL-3.0+ 2016-04-06 19:34:00 -04:00


GNU ease.js

GNU ease.js is a classical object-oriented framework for Javascript, intended to eliminate boilerplate code and "ease" the transition into JavaScript from other object-oriented languages.

Current support includes:

  • Simple and intuitive class definitions
  • Classical inheritance
  • Traits as mixins
  • Access modifiers (public, protected, and private)
  • Abstract classes and methods
  • Interfaces
  • Static and constant members
  • Transparent error subtyping


Comprehensive documentation and examples are available on the GNU ease.js website and in its manual.

Bug Reports / Feature Requests

Please direct bug reports and feature requests to bug-easejs@gnu.org or the project page on Savannah.

Why Classical OOP in JavaScript?

GNU ease.js was created (historically) for a number of reasons:

  • To "ease" object-oriented developers into JavaScript by providing a familiar environment.
  • To provide the maintenance and development benefits of classical OOP.
  • To provide features not included in the language, such as proper encapsulation through private/protected members, interfaces, traits, intuitive inheritance, and other conveniences.
  • To encapsulate the hacks commonly used to perform the above tasks.

Many JS purists believe that classical object-oriented programming should be left out of JavaScript and that one should stick strictly to prototypal development. While the two are related (they are both object-oriented), they can be applied to different problem domains in order to achieve results that are more natural or intuitive to developers; GNU ease.js works seamlessly with existing prototypes, allowing the developer to choose whether or not they want to use "classes".

Building and Installation

For information on installing ease.js on your system, see INSTALL. Alternatively, you may install the software using npm by issuing the following command:

$ npm install easejs


If your distribution contains a configure file in the project root, you may jump immediately to INSTALL.

Otherwise, you likely have the sources as they exist in the project repository, which does not contain the generated `configure' script; you may generate it by issuing the following command:

$ autoreconf -fvi

Please note that certain files (such as AUTHORS, NEWS, and ChangeLog) are generated as part of the dist target and do not exist as part of the repository.


For information on hacking and contributing to GNU ease.js, please see README.hacking.


GNU ease.js is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

N.B.: Versions prior to 0.2.0 were released under the LGPLv3+. Upon becoming a GNU project, it was relicensed under the GPLv3+ to help the FSF stand strong in its fight against proprietary JavaScript. For more information, please see the NEWS file (which can be built with make NEWS) and https://gnu.org/software/easejs/whyfreejs.html.