About CrossBrowdy

CrossBrowdy is a free and open-source JavaScript framework that allows to create multimedia apps, emulators, game engines and games that will be compatible with any device.

Any software developed with CrossBrowdy should be able to be used in any JavaScript compatible web client (including browser plug-in, add-on, extension, app...) which supports "document.getElementById".

This framework allows any developer to manage easier many different things, such as audio (with Flash fallback, audio pool, etc.), canvas (with DHTML, VML, Flash or Silverlight fallbacks), screen, mouse, keyboard, gamepads, sockets (including PHP proxy fallback), XHR / AJAX (with PHP proxy for cross-domain requests), device sensors (compass / magnetometer, gyroscope, accelerometer, light sensor, proximity sensor...) and many more.

It also includes many basic DOM element manipulations, fallbacks and polyfills as well as integration with Apache Cordova (including PhoneGap, Ionic...), desktop apps (PWA, UWP / WinJS, NW.js, Atom...), video game consoles, TV sets, smart watches, embedded devices and so on.

CrossBrowdy focuses on cross-browser (including legacy browsers) and cross-platform compatibility. The main target is to allow any app to run in any web client with or without HTML5 compatibility.

Frequently Asked Questions

What is the meaning of "CrossBrowdy"?

"Cross" comes from its capacity to be cross-platform / cross-browser / cross-device.

"Browdy" was inspired by a mix between "browser" and "brodie" words.

What is the history of CrossBrowdy?

The CrossBrowdy project was started being developed around March 2013 with the "CrossBase" name. Now, this is the name used by its main module.

The original idea was to create a library to make cross-platform games easier, but it later became a much more powerful multipurpose multimedia framework. Of course, you can still make games and game engines as well as many other things with CrossBrowdy.

What makes CrossBrowdy different from other frameworks?

CrossBrowdy is an open-source JavaScript framework which provides multimedia features. As it deals internally with the differences between platforms (via fallabacks, polyfills and workarounds), the developers will find their life much easier ("Code once, deploy everywhere").

A big part of its API is separated in different objects which represent real hardware or abstract devices (such as Screen, Speaker, Keyboard, Mouse, Pointer, Gamepad...), providing a device-oriented and object-oriented point of view.

The main point of CrossBrowdy is the fact that it is a low-level framework which will allow to create and run software virtually everywhere, not only on new and future platforms but also on legacy ones (yes, even Internet Explorer 6).

Developers can also enhance CrossBrowdy features easily by creating modules for it.

Is CrossBrowdy compatible with other frameworks, libraries, etc.?

CrossBrowdy should be able to run in combination with most of the JavaScript software available out there without doing anything special.

Some JavaScript software may need the developers to follow some practices and even perform some code modifications. This could be improved in new CrossBrowdy versions.

Where can the software made with CrossBrowdy run?

Virtually everywhere, as long as it runs on a web client with a JavaScript engine compatible with "document.getElementById". This includes any present and future web browser as well as old ones (including Internet Explorer 6).

The software developed with CrossBrowdy can be ported to Microsoft Windows (from Windows XP to Windows 10 or even newer), Linux (including x86 and also Raspberry Pi or compatible), Apple macOS (formerly Mac OS X), etc. and run as a desktop app (using NW.js, Atom, etc.).

This software can also be ported to iOS / iPadOS (iPhone, iPad), Android (including phones, tablets, Android TV, Nokia X, Amazon Fire OS...) or others and run as a mobile app (using Apache Cordova, PhoneGap, Ionic, etc.).

Apart from that, CrossBrowdy software will also run on many video game consoles, TV sets, smart watches, embedded devices and so on. This will also include other devices, platforms and technologies, some legacy ones, such as PWA (Progressive Web App), UWP (Universal Windows Platform) / WinJS, Apple TV (tvOS), Facebook app, BlackBerry 10, BlackBerry Tablet OS (BlackBerry PlayBook), Nokia Series 40 (Nokia S40) / WRT Widget, W3C Packaged Web App (W3C Widget) / Nokia Asha widget, WebOS, Windows Phone (from 7.1 to 8.1), Chrome OS / Chromium OS (Google Chrome App), Firefox OS (Mozilla Firefox App) / KaiOS, Sailfish OS...

Finally, CrossBrowdy can also be used to develop web browser extensions although it is important to pay attention to possible safety restrictions that some web browsers may have. To comply with them, some code modifications may be needed.

Nevertheless, it is important to point that not all CrossBrowdy features will always be compatible with all clients. Some may have restrictions. It is up to the developer to provide support for clients which do not support those features.

What is the CrossBrowdy's copyright and license?

CrossBrowdy is a free and open-source project which can be used and modified by anyone for any legal purpose.

The unique restriction is that any modified CrossBrowdy version or the software made with CrossBrowdy or with any version of it must always keep the name of its original authors (official credits) as well as the name of "CrossBrowdy". These credits and the "CrossBrowdy" name must be easily accessible somewhere in the software by any kind of user, not only in the code but also through the user interface.

In the case that the name of the authors are not shown through the user interface, they must remain in the source code and in the user interface the "CrossBrowdy" must still appear and always showing the address of the official web site (https://CrossBrowdy.com/).

A good example could be a game made with CrossBrowdy where it shows "Created with CrossBrowdy (https://CrossBrowdy.com/)" somewhere in the screen after pressing on a "Credits" option.

CrossBrowdy also provides a splash screen that can be disabled by the developers. When it is enabled, this splash screen is shown when CrossBrowdy is loading. Keeping it enable can be a good idea because it will be enough to show the credits and respect these rules.

CrossBrowdy web site content (crossbrowdy.com, including tutorials and examples) by Joan Alba Maldonado (aka Juan Alba Maldonado) is licensed under a Creative Commons Attribution 4.0 International License (SPDX short identifier: "CC BY 4.0").

CrossBrowdy API documentation by Joan Alba Maldonado (aka Juan Alba Maldonado) is licensed under a Creative Commons Attribution 4.0 International License (SPDX short identifier: "CC BY 4.0").

The code written by Joan Alba Maldonado (aka Juan Alba Maldonado), which genuinely belongs to the CrossBrowdy project, is licensed under the 2-Clause BSD License license (aka "Simplified BSD License" or "FreeBSD License", SPDX short identifier: "BSD-2-Clause").

Apart from all of this, it is important to have into account that CrossBrowdy uses some external libraries and some code which may have their own license each. It is important to respect each license properly as the responsibility will always lie with you.

Why is CrossBrowdy free and what do you get from us?

Personally, although it has cost me a lot of money and time myself, I have enjoyed and still enjoy creating and struggling to keep this project alive. I have also learnt and still learn a lot through this process.

My unique purpose doing this is the satisfaction to create and keep such a project as well as the pleasure to see that this effort could help others which might find CrossBrowdy useful for their own projects.

What is the future of the project?

The objective for CrossBrowdy is to continue improving current features and adding new ones.

Here you can find a TO-DO list for future and possible features: TODO.txt.

How to use CrossBrowdy?

Using CrossBrowdy should not be difficult. To start learning how to use it, you can visit the Guides & Tutorials section where you can find a a complete tutorial with many topics, as well as many live examples with their source code and more things.

For a more technical approach or as a consultation guide, you may want to take a look at the API documentation (more printer-friendly version here).

How to contribute to CrossBrowdy or help the project?

CrossBrowdy is using GitHub and there you can not only find the source code of the whole project but also help informing about any bugs you might find, suggest code modifications, etc.

For more information, you can take a look at the Community & Get Involved section.

May I add my creation here?

If you have created an app, game or any other thing with CrossBrowdy we might consider adding it to the official web site (https://CrossBrowdy.com/).

You can contact the author to inform about your creation. Take a look at Where can I find the credits and contact the authors?.

Are there any restrictions running on some platforms?

To support legacy platforms without HTML5 compatibility or without some other features, CrossBrowdy uses some fallbacks, polyfills and workarounds.

The main purpose of this is to emulate the native behaviour as exact as possible but, obviously, some restrictions can be present and should be taken into account.

For present and future platforms, no restrictions should be present. If there were any, it should be fixed in future CrossBrowdy releases.

Here you can find a list of some known issues: ISSUES.txt. Please, have in mind that you can contribute by adding new ones that you have discovered.

Why do certain features do not work on certain clients?

Please, refer to Are there any restrictions running on some platforms?.

Can the performance be improved?

One of the main objectives for next versions is to optimize CrossBrowdy, improving its performance and reducing the loading time (perhaps packing it in a single file).

Can I load just the features I need?

CrossBrowdy can use different modules to satisfy different needs each. You can even create your own modules if you desire it.

The main CrossBrowdy module is called "CrossBase" and, at least for the time being, you should not disable any of the files that it uses as that could lead to some unexpected problems (since some files need each other). But if you feel brave enough, you can try to do it at your own risk and test it carefully to check whether it still keeps your desired behaviour.

Finally, you can also just copy the code you need for your project and adapt it. If you do this, remember to keep the credits and refer to What is the CrossBrowdy's copyright and license? prior to anything.

I still have a problem, doubt or suggestion. What can I do?

If you have any suggestion to make to improve this project (including the web site), you can contact the author. Take a look at Where can I find the credits and contact the authors?.

If you have any doubt or problem which could not be solved so far, visit the Community & Get Involved section and try to ask your question publicly in some of the available channels.

The two main reasons to expose publicly your doubts are because you will have more chances to get an answer (even probably different ones, as there are often more than one solution for a same problem) and, mainly, because that answer could be useful for others with the same or a similar doubt.

Do not forget the fact that CrossBrowdy is part of the open source community: let's take advantage of this!

Where can I find the credits and contact the authors?

CrossBrowdy project was created by Joan Alba Maldonado (aka Juan Alba Maldonado). It also uses some external libraries and "third-party" code. The name of these libraries and the name of the authors of these libraries and that other code can be found in the source code as well as in the splash screen (if it was no disabled) and in the console when CrossBrowdy is loading. As this information may vary with each version, it is not included here.