1
0
Fork 0
Commit Graph

86 Commits (26dffce00ae9e96a5407e379c3ac042a24dea9b9)

Author SHA1 Message Date
Mike Gerwitz 26dffce00a [copyright] Copyright update after adding --follow to copyright script 2013-12-22 22:50:29 -05:00
Mike Gerwitz 7822f120ca copyright script will now --follow files 2013-12-22 22:50:29 -05:00
Brandon Invergo 79109304cc Version splitting for configure.ac
Thanks again to Brandon Inverson for providing this patch. All changes are his
except for the comment in configure.ac and the version.js.tpl move/changes.

Copyright-paperwork-exempt: Yes
2013-12-22 22:50:24 -05:00
Mike Gerwitz 3ca4b1c40f signchk tool now only checks merge commit (not the commits introduced) for signature
This greatly simplfies rebasing and other operations while working in a branch;
signing each and every commit that is not in master can be overkill (even if it
does give peace of mind).
2013-12-22 01:12:24 -05:00
Mike Gerwitz e1fdc92beb package.json is now generated by configure script and included in distribution 2013-12-22 01:05:28 -05:00
Mike Gerwitz 9ec3529b60 verset will no longer update version.tex; deprecated by previous commit 2013-12-21 23:43:47 -05:00
Mike Gerwitz 6c4c2322bb
Modified tools/version to update package.json and configure.ac 2013-12-21 01:49:48 -05:00
Mike Gerwitz ab49c53f4b
Added gitlog-to-{authors,news}
These will be used to generate, respectively, the AUTHORS and NEWS files that
are a part of GNU distributions.
2013-12-21 00:59:56 -05:00
Mike Gerwitz 3cbf4aff40
Imported gitlog-to-changelog from gnulib
This will be used to generate ChangeLog, which is recommended by GNU.
2013-12-21 00:50:27 -05:00
Mike Gerwitz 8883aa930e
[copyright] Copyright update for license templates 2013-12-20 01:17:28 -05:00
Mike Gerwitz 34a36b8e1d
Updated copyright script to place current date in license templates 2013-12-20 01:17:07 -05:00
Mike Gerwitz 13ca9cd852
[copyright] Copyright update after relicensing 2013-12-20 01:11:39 -05:00
Mike Gerwitz 9050c4e4ac
Relicensed under the GPLv3+
This project was originally LGPLv+-licensed to encourage its use in a community
that is largely copyleft-phobic. After further reflection, that was a mistake,
as adoption is not the important factor here---software freedom is.

When submitting ease.js to the GNU project, it was asked if I would be willing
to relicense it under the GPLv3+; I agreed happily, because there is no reason
why we should provide proprietary software any sort of edge. Indeed, proprietary
JavaScript is a huge problem since it is automatically downloaded on the user's
PC generally without them even knowing, and is a current focus for the FSF. As
such, to remain firm in our stance against proprietary JavaScript, relicensing
made the most sense for GNU.

This is likely to upset current users of ease.js. I am not sure of their
number---I have only seen download counts periodically on npmjs.org---but I know
there are at least a small number. These users are free to continue using the
previous LGPL'd releases, but with the understanding that there will be no
further maintenance (not even bug fixes). If possible, users should use the
GPL-licensed versions and release their software as free software.

Here comes GNU ease.js.
2013-12-20 01:10:05 -05:00
Mike Gerwitz 2a76be2461
[copyright] Copyright update 2013-12-20 00:50:54 -05:00
Mike Gerwitz 9648dc283f
Added copyright script to update copyright lines based on file history 2013-12-20 00:48:55 -05:00
Mike Gerwitz 6c7ccdcb3b
Added GNU GPL v3+ license header and copyright notice to all scripts and Makefiles
Note: ease.js is licensed under the LGPL. Many of its external scripts are under the GPL.
2012-05-11 19:11:12 -04:00
Mike Gerwitz 4159e7c26f
Added chk-linelen tool
The maximum line length for source files in this project is 80 characters
2012-05-03 21:47:51 -04:00
Mike Gerwitz bd0158928c
Added signchk tool
This tool can help to ensure that commits have not been falsely authored. For
example, if you receive an ease.js repository from a friend, there is no way to
verify that a commit from "Mike Gerwitz" is actually a commit from myself unless
it has been signed using my private key. This additional check will help to
ensure the integrity of the repository.

Please note that automated systems should *not* invoke this utility directly
from this repository, unless it is invoked using a previously trusted commit.
Otherwise, an attacker need only alter the script to competely evade the check.
2012-04-18 23:46:50 -04:00
Mike Gerwitz 2adcf8bb0e Added verset
After dealing with autoconf, I may decide not to implement it. The build process
is fairly simple as it is and I do not want to over-complicate it. verset solves
one of the issues that autconf would have aided in addressing - setting a
version number.
2012-03-05 22:54:12 -05:00
Mike Gerwitz 958521f673 Created version module to provide additional version information 2011-12-23 18:31:11 -05:00
Mike Gerwitz cdbcada4d2 Copyright year update 2011-12-23 00:09:11 -05:00
Mike Gerwitz f264c1bf63 Added version number to exports 2011-12-23 00:03:08 -05:00
Mike Gerwitz bc22a9be27 Added reduced license header for minified files and updated copyright 2011-12-22 23:49:53 -05:00
Mike Gerwitz e24784529e Resolved majority of Closure Compiler warnings (VERBOSE)
- Ignored warnings from tests for now
- VERBOSE flag removed from Makefile for now until I can figure out how to
  resolve certain warnings
2011-12-13 21:19:14 -05:00
Mike Gerwitz 3922d6874e Added mkexterns for internal externs (see comments within file for information as to why this is necessary) 2011-12-10 16:46:14 -05:00
Mike Gerwitz d1b1d2691a Fixed initial warnings provided by Closure Compiler
Getting ready for release means that we need to rest assured that everything is
operating as it should. Tests do an excellent job at aiding in this, but they
cannot cover everything. For example, a simple missing comma in a variable
declaration list could have terrible, global consequences.
2011-12-10 11:18:41 -05:00
Mike Gerwitz 45f3d62727 Removing toString() call on failAssertion(); string may be passed 2011-12-07 23:14:15 -05:00
Mike Gerwitz e0254f6441 Removed invalid @package tags
Not a valid tag in jsdoc
2011-12-06 20:19:31 -05:00
Mike Gerwitz 66fd2ece83 Switched to Closure Compiler
This is nothing against uglify. Rather, here's the story on this:

Commit e4cd1e fixed an error that was causing minified files to break in IE.
This was due to how IE interprets things, not how UglifyJS was minifying them.
Indeed, Closure Compiler had the exact same problem.

The decision to move to Closure Compiler was due to a variety of factors, which
came down to primarily feature set and tests. Closure Compiler is well tested
and maintained. It also includes a number of additional, beneficial features.
UglifyJS is an excellent project and I would recommend it to anyone, but it is
not tested (no unit tests; it's tested by ensuring common libraries like jQuery
run after minification). It is, however, significantly faster.

It's likely that, in the future, once I add autoconf for the build process to
configure certain settings, that I will add UglifyJS as an option. I'm sure many
people would prefer that, especially those who dislike Java and do not wish to
have it installed. Hopefully those that do decide to install Java will go with
openjdk, not Oracle's proprietary implementation.
2011-12-06 18:28:58 -05:00
Mike Gerwitz a18dedbddb Added missing client-side "fail" assertion 2011-12-06 18:27:41 -05:00
Mike Gerwitz 2c5bc6b63c uglify's mangle currently causing problems in IE8; removing until it can be further researched 2011-11-29 15:06:34 -05:00
Mike Gerwitz 0d0372cb87 [#25] Adding proper dirname to combined tests 2011-10-23 00:22:43 -04:00
Mike Gerwitz c1207eb3d5 Moved MemberBuilder-MethodTest into MemberBuilder subdir
- Altered combine script to support subdirs (note that the dir names aren't included in the combined file)
2011-10-20 23:40:30 -04:00
Mike Gerwitz c9b5fb32d0 Merge branch 'master' into virtual/refactor/master 2011-10-14 22:08:08 -04:00
Mike Gerwitz 4403bc4639 Updated URL in combined license 2011-10-14 22:07:45 -04:00
Mike Gerwitz c10fc5818a Added very basic formatted output and failure tolerance for test case
The one year anniversary of the beginning of the ease.js project is quickly
approaching. I find myself to be not quite where I had expected many months ago,
but find that the project has evolved so much further than I had event
originally anticipated. My main motivation behind the project continues to be
making my life at work easier, while providing an excellent library that others
can hopefully benefit from. If anything, it's a fascinating experiment and
clever hack around JavaScript.

Now I find myself with a newborn child (nearly four weeks old), who demands my
constant attention (and indeed, it is difficult to find the desire to put my
attention elsewhere). Still - I am a hacker. Software is my passion. So the
project must move forward.

I also find myself unwilling to create a blog for ease.js. I feel it's
inappropriate for a project that's in its (relative) infancy and does not have
much popularity (it has never been announced to anyone). As such, I feel that
commit messages will serve my purpose as useful journal entries regarding the
status of the project. They will also be interesting easter eggs for those who
would wish to seek them out for additional perspective on the project. (Granted,
one could easy script the discovery of such entries by examining the absurd
length of the commit message...perhaps the git log manpages would be useful).

So. Let's get back to the project.

ease.js is currently going through a strong refactoring in order to address
design issues that have begun to creep up as the project grew. The initial
design was a very simple one - a "series of modules", as it was originally
described in a CommonJS sense, that would provide features of a classical
Object-Oriented system. It would seem ironic that, having a focus on
classical Object-Oriented development, one would avoid developing the project in
such a paradigm. Instead, I wished to keep the design simple (because the
project seemed simple), more natural to JS developers (prototypal) and
performant (object literals do not have the overhead of instantiation). Well,
unfortunately, the project scope has increased drastically due to the success of
the implementation (and my playfulness), the chosen paradigm has become awkward
in itself and the performance benefit is indeed a micro-optimization when
compared with the performance of both the rest of the system and the system that
will implement ease.js as a framework.

You can only put off refactoring for so long before the system begins to trip
over itself and stop being a pleasure to work with. In fact, it's a slap in the
face. You develop this intricate and beautiful system (speaking collectively and
generally, of course) and it begins to feel tainted. In order to prevent it from
developing into a ball of mud - a truly unmaintainable mess - the act of
refactoring is inevitable, especially if we want to ensure that the project
survives and is actively developed for any length of time.

In this case, the glaring problem is that each of the modules are terribly,
tightly coupled. This reduces the flexibility of the system and forces us to
resort to a system riddled with conditionals. This becomes increasingly apparent
when we need to provide slightly different implementations between environments
(e.g. ES5/pre-ES5, production/development, etc and every combination).
Therefore, we need to decouple the modules in order to take advantage of
composition in order to provide more flexible feature sets depending on
environment.

What does this mean?

We need to move from object literals for the modules to prototypes (class-like,
but remember that ease.js exists because JS does not have "classes"). A number
of other prototypes can be extracted from the existing modules and abstracted to
the point where they can be appropriately injected where necessary. Rather than
using conditions for features such as fallbacks, we can encapsulate the entire
system in a facade that contains the features relevant to that particular
environment. This will also have the consequence that we can once again test
individual units rather than systems.

At the point of this commit (this entry was written before any work was done),
the major hurdle is refactoring the test cases so that they do not depend on
fallback logic and instead simply test specific units and skip the test if the
unit (the prototype) is not supported by the environment (e.g. proxies in a
pre-ES5 environment). This will allow us to finish refactoring the fallback and
environment-specific logic. It will also allow us to cleanly specify a fallback
implementation (through composition) in an ES5 environment while keeping ES5
detection mechanisms separate.

The remaining refactorings will likely be progressive. This all stemmed out of
the desire to add the method hiding feature, whose implementation varies
depending on environment. I want to get back to developing that feature so I can
get the first release (v0.1.0) out. Refactoring can continue after that point.
This project needs a version number so it can be used reliably.
2011-10-12 18:53:52 -04:00
Mike Gerwitz af653aaff7 Adjusted client-side module cleaning regex in combine.tpl 2011-08-31 00:23:23 -04:00
Mike Gerwitz 70142f5059 combine script will now include modules that are not require()'d by any other module 2011-08-28 17:33:44 -04:00
Mike Gerwitz 2d8e6d70a4 Replaced hard-coded, manually ordered module list with script (#25) 2011-08-14 18:45:16 -04:00
Mike Gerwitz fd95f38c87 Integrated VisibilityObjectFactory and removed old propobj (#25)
- Note that the excessive gluing is temporary
2011-08-13 23:58:08 -04:00
Mike Gerwitz c3a09c3613 Now incluiding *Test*.js files in full combined file (#25) 2011-08-13 23:14:22 -04:00
Mike Gerwitz 04318cc73d Errors during combine process now output to stderr 2011-08-13 23:12:15 -04:00
Mike Gerwitz 3530ec839c Added new prototypes to combined file (#25) 2011-08-13 23:11:59 -04:00
Mike Gerwitz 79652a1120 Moved non-fallback visibility object into VisibilityObjectFactory (system does not yet use it) (#25) 2011-08-11 23:11:37 -04:00
Mike Gerwitz 91a6fb51e9 Added assert.notStrictEqual to client-side assertions 2011-08-11 21:05:42 -04:00
Mike Gerwitz 7a579ab2aa Initial refactoring of class_builder module into ClassBuilder ctor (#25) 2011-08-09 17:27:26 -04:00
Mike Gerwitz 81fa2ae424 Merge branch 'master' into 'virtual/master'
- Resolved conflicts
2011-06-30 23:00:13 -04:00
Mike Gerwitz e2581deb90 Added Warning 2011-06-29 20:58:38 -04:00
Mike Gerwitz d6873d1cc9 Corrected client-side assert.deepEqual() to only perform object/array operations if both provided values are objects/arrays respectively 2011-06-11 21:32:11 -04:00
Mike Gerwitz d1044383d5 Fixed abstract/final class export in combined file
- I somehow had them swapped
2011-06-02 09:07:48 -04:00