About mJSLib
What the library is
In a nutshell: mJSLib is a collection of jQuery plugins for adding useful dynamic behaviours to web sites with little or no extra coding involved for the site operator. The library is under continuing development and is released under an open BSD license.
Before everything else, this library aims to be as pragmatic as possible by offering you a set of tools that will help you to build a web site. We are building these tools with the main objective that they be used with as little effort as possible. While you are welcome to modify them as you see fit, in most cases you should not have to. If you do, keep in mind that your may not be compatible with future versions.
One aspect that makes this toolkit a little special is the extensive (an optional) use of HTML extensions (custom markup and attributes) in addition to JavaScript APIs. We are working this way because we believe that what makes HTML such an incredibly popular content structure language (not a programming language, as is sometimes claimed) is its simplicity. Dealing with JavaScript is rarely simple, while adding markup can be.
What the library is not
If you are looking for general web technology tutorials, this collection may be frustrating for you because there is not much documentation outside of code comments and documentation on this site specifically on how to deploy mJSLib. There are many web sites that offer comprehensive assistance for improving your web coding skills. However, if you already are familiar with those technologies, you may find useful information by reading mjslib source code.
If you want to have information about coding and standards, good and bad practices, etc., please don't take our code and samples as authoritative! There are many different and probably better ways of doing this stuff. If the HTML/CSS/JavaScript does not entirely respect standards on every little point, this is because our main test for building quality code is whether or not it works in common web browsers. Standards are being considered, but not at the expense of functionality or extraneous coding.
Now, with that said...
Intended audience
mJSLib and its associated documentation are probably useful to anyone wanting to improve a web site's usability by adding some ready-to-deploy client-side scripting. To use it, you will not be required to be an expert in DOM, JavaScript or HTML. You'll only have to know some basic stuff so that you can include and configure the components you are going to use. jQuery tutorials is surely a great place to get started.
History
Back in 2002, mJSlib started as a "conventional" javascript library, by exposing features in the form of exteded HTML markup and API functions. The approach was really procedural, in opposition to jQuery, which extensively uses object oriented programming style. At this time, little products were taking advantage of the full power of javascript (mjslib did not either!). In addition to that, browser incompatibility nighmare was raging, and creating code that worked in most browsers was extremely painful and challenging.
Sometimes around 2006, this got a little better with the release of new browser versions, and because people somehow "learned" how to program javascript efficiently. Google mail changed many things in this regard. A few brilliants toolkits started to emerge and rapidly set new standards for a new way of using web technologies. This is where we stand in 2007; still not perfect, but the situation drastically improved eve though the browser bugs and incompatiblity remain frustrating.
The legacy procedural approach of mJSlib is no longer appropriate and suffers from structural problems (in addition to have no really public exposure aside author's products). It was time to move toward a better and more standardized approach so that we could efficiently leverage our code with other's. For this reason, we decided to move down the jQuery plugin path.
Design and characteristics
Modularity
This library is separated into modules (each having its own .js file) designed to cohabitate with each other and code from other sources. Depending on your needs, you can use a subset of this library by referencing only the modules you are interested in. This way, you will not overload the client-side program with unused code.
| jquery.printf.js | implements printf' like functions (string formatting) |
| jquery.autoimage.js | image animation and behaviors |
Compatibility
Well, combining standards compliance with cross-browser compatibility is still a lot like the quest for the holy grail! If you are a web programmer, you already know that building a browser-compatible web site can be a frustrating and uselessy harassing challenge, that only gets worse when you start adding dynamic behaviour. This sucks hard, but there is nothing we can do to force browser maintainers to improve their stuff, and it's too late anyway with so many computers installed with broken software.
As we work on mJSLib, we are doing our best to support "major" browsers (which reads into: browsers that most people use):
- Mozilla firefox is our reference platform and is fully supported. See below for more information.
- Internet Explorer / Windows (>= 6.0) is supported (with a few exceptions on 6.x)
- Opera (>=9.0) works with a few exceptions.
- Safari (>=1.2) works with a few exceptions.
- Konqueror works with a few exceptions.
Resources
Contributors, contacts
This project is the work of Hervé Masson (JavaScript coding, writing) and Steve Bronfman (writing, editing, CSS and HTML), and published within the scope of MindStep's [www.mindstep.com] open source program.
Should you have any comment, question or suggestion, please send your email to: mjslib@mjslib.org. You can also posts your questions in the jQuery plugin forum.
License (BSD)
All the content published in this collection is free and open source, as stated by the BSD-like license below. The only thing we ask is that you send us an email with the url of your web site so that we can maintain a "web sites using mJSLib " page later.
################################################################################ # ____________________________________________________________________
# / \
# | ____ __ ___ _____ / ___ ___ |
# | ____ / \/ \ ' / \ / / /__ / \ / \ |
# | / _ \ / / / / / / ___/ \__ / /____/ / / |
# | / |_ / / / / / / / / / \ / / /____/ |
# | \____/ / / \/_/ / \__/ _____/ \__/ \___/ / |
# | / |
# | |
# | Copyright (c) 2000-2007 All rights reserved |
# | Herve Masson MindStep SCOP SARL |
# | |
# | www.mindstep.com www.mjslib.com |
# | info-oss@mindstep.com mjslib@mjslib.com |
# \____________________________________________________________________/
#
# [This product is distributed under a BSD-like license] # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in # the documentation and/or other materials provided with the # distribution. # # THIS SOFTWARE IS PROVIDED BY THE MINDSTEP CORP PROJECT ``AS IS'' AND # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, # THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR # PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL MINDSTEP CORP OR CONTRIBUTORS # BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY # OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT # OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR # BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, # WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE # OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, # EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # The views and conclusions contained in the software and documentation # are those of the authors and should not be interpreted as representing # official policies, either expressed or implied, of MindStep Corp. # ################################################################################