Drools is a business rule management system (BRMS) with a forward and backward chaining inference-based rules engine, more correctly known as a production rule system, using an enhanced implementation of the Rete algorithm. Drools supports the Java Rules Engine API (Java Specification Request 94) standard for its business rule engine and enterprise framework for the construction, maintenance, and enforcement of business policies in an organization, application, or service. == Drools in Apache Kie == Drools, as part of the Kie Community has entered Apache Incubator in January, 2023. == Red Hat Decision Manager == Red Hat Decision Manager (formerly Red Hat JBoss BRMS) is a business rule management system and reasoning engine for business policy and rules development, access, and change management. JBoss Enterprise BRMS is a productized version of Drools with enterprise-level support available. JBoss Rules is also a productized version of Drools, but JBoss Enterprise BRMS is the flagship product. Components of the enterprise version: JBoss Enterprise Web Platform – the software infrastructure, supported to run the BRMS components only JBoss Enterprise Application Platform or JBoss Enterprise SOA Platform – the software infrastructure, supported to run the BRMS components only Business Rules Engine – Drools Expert using the Rete algorithm and the Drools Rule Language (DRL) Business Rules Manager – Drools Guvnor - Guvnor is a centralized repository for Drools Knowledge Bases, with rich web-based GUIs, editors, and tools to aid in the management of large numbers of rules. Business Rules Repository – Drools Guvnor Drools and Guvnor are JBoss Community open source projects. As they are mature, they are brought into the enterprise-ready product JBoss Enterprise BRMS. Components of the JBoss Community version: Drools Guvnor (Business Rules Manager) – a centralized repository for Drools Knowledge Bases Drools Expert (rule engine) – uses the rules to perform reasoning Drools Flow (process/workflow), or jBPM 5 – provides for workflow and business processes Drools Fusion (event processing/temporal reasoning) – provides for complex event processing Drools Planner/OptaPlanner (automated planning) – optimizes automated planning, including NP-hard planning problems == Example == This example illustrates a simple rule to print out information about a holiday in July. It checks a condition on an instance of the Holiday class, and executes Java code if that condition is true. The purpose of dialect "mvel" is to point the getter and setters of the variables of your Plain Old Java Object (POJO) classes. Consider the above example, in which a Holiday class is used and inside the circular brackets (parentheses) "month" is used. So with the help of dialect "mvel" the getter and setters of the variable "month" can be accessed. Dialect "java" is used to help us write our Java code in our rules. There is one restriction or characteristic on this. We cannot use Java code inside the "when" part of the rule but we can use Java code in the "then" part. We can also declare a Reference variable $h1 without the $ symbol. There is no restriction on this. The main purpose of putting the $ symbol before the variable is to mark the difference between variables of POJO classes and Rules.
Graphics suite
A graphics suite is a software suite for graphics work that are distributed together. The programs are usually able to interact with each other on a higher level than the operating system would normally allow. There is no hard, fast rule regarding the programs to be included in a graphics application suite, but most will include at least a bitmap graphics editor and a vector graphics editor. In addition to these, the suite may contain VRML editors, animation editors, and morphing tools.
Mortimer Rogoff
Mortimer Alan Rogoff (May 2, 1921 – August 1, 2008) was an American inventor, businessman, and author as well as an amateur photographer and radio operator. He is recognized for his work in spread spectrum technology which is the technology that modern cell phones and GPS systems are based on. He is also considered the grandfather of the electronic navigation chart. == Early life == Rogoff was born in Brooklyn, New York. He earned his B.S.E.E. from Rensselaer Polytechnic Institute in 1943 and his M.S.E.E. from Columbia University in 1948. While at Rensselaer he was a member of Kappa Nu fraternity and the Features Editor for the student newspaper. During World War II, he enlisted in the United States Navy and worked on developing radio communication and aerial navigation systems. One of the techniques he developed was undetectable by Axis forces because its power was below that of the background noise and its frequency varied in random ways. This secure transmission was the beginning of spread spectrum technology which would become the basis for GPS and CDMA cellular telephone systems. Although he was never able to patent the technology because it was a military secret he did get some recognition for it almost forty years later when he received the Institute of Electrical and Electronics Engineers’ Pioneer Award in 1981. == Career == Rogoff worked for twenty-two years (1946 to 1968) for ITT Laboratories in New Jersey. In 1958, he became their deputy director of Engineering. He was Vice President of ITT Laboratories from 1962 to 1963. From 1963 to 1968, he was promoted to the corporate staff where he became head of European operations. In 1968 he left ITT to work for the Diebold Group where he became an Executive Vice President. After leaving the Diebold Group he founded several technology and automation businesses, including his own consulting firm, and Teletext Communications Corporation. Later in the 1970s, he was a Principal with Booz Allen Hamilton. In 1979, his book ‘’Calculator Navigation’’ was published. This book demonstrated practical methods for calculating precise ship locations using radio navigation with a consumer calculator. In 1981, he founded a new company, Navigation Sciences Inc., in Bethesda, Maryland. With this company he patented a method for marine navigation that combined radar maps with electronic charts in 1986. This was a major advancement in field. Today, this system is known as the Electronic Chart Display and Information System (ECDIS). Rogoff had seen the need for a new charting system in 1968 from his apartment at 180 East End Avenue in New York City. From there, he saw a boating accident where a life was lost and decided there had to be a way to automate navigation. Rogoff then became of member of the International Maritime Organization’s (IMO) sub-committee on Safety of Navigation, a representative to the International Electrotechnical Commission, and became the chairman of the Radio Technical Commission for Maritime Services Special Committee 109 on Electronic Charts. He was able to use his influence on these boards to push through a proposal of ECDIS standards in 1989 where none has been before. As his friend Giuseppe Carnevali said, “Although nobody could argue against the need for a standard, no one was ready to endorse one; however, nobody was brave enough to oppose it.” A Test Bed project on these proposals was conducted by the United States Coast Guard. The amended standards were accepted by the IMO in November, 1995. In 2000, he was named as a Fellow of the Institute of Navigation. He was also a Fellow of the Institute of Electrical and Electronics Engineers. During this time, he was also president of the Navigational Electronic Charts System Association. == Personal == In 1979, he moved to Washington, D.C. and bought a home in Nantucket, Massachusetts. He married Sheila Zunser in 1943 and they were together for sixty-five years. They had three daughters: Louisa Thompson, Alice Rogoff, and Julia Peach. His sister was sociologist Natalie Rogoff Ramsøy of the University of Oslo. He was a member of the Cosmos Club and President of The Navigational Electronic Chart System Association (NECSA). He was a very good amateur photographer and liked amateur radio (call sign W2EE). He died in Nantucket from bladder cancer. == Patents == Patent number: 4176316 – Secure Communication System – November 27, 1979 With Louis A. DeRosa Patent number: 4590569 – Electronic Navigation System – May 20, 1986 With Peter M. Winkler and John N. Ackley Patent number: RE34004 – Secure Communication System – July 21, 1992 With Louis A. DeRosa == Publications == Rogoff, Mortimer September 1957. Automatic Analysis of Infrared Spectra. Annals of the New York Academy of Sciences; vol. 69: no. 1: 27–37. Gen. P.C. Sandretto and Mortimer Rogoff. 1958 “A Novel Concept for Application to the Control of Airways Traffic.” NAVIGATION: Journal of The Institute of Navigation; vol. 6: no. 2: 102–107 Rogoff, Mortimer 1979. Calculator Navigation; ISBN 0-393-03192-6. Published by W.W. Norton & Company (New York and London). Rogoff, Mortimer December 1985. Electronic Charting. Yachting; vol. 158: no. 6: 54–57. Rogoff, Mortimer Winter 1990. Electronic Charts in the Nineties. NAVIGATION: Journal of The Institute of Navigation; vol. 37: no. 4: 305–318.
Influencer speak
Influencer speak is a speech pattern commonly associated with English-speaking digital content creators, particularly on platforms such as TikTok. This style is characterized by linguistic features such as uptalk, where intonation rises at the end of declarative sentences, and vocal fry, a low, creaky vibration in speech. These features are often used to engage audiences. == Characteristics == Influencer speak is commonly associated with: Uptalk – a rising intonation at the end of statements Vocal fry – a creaky sound often occurring at the end of sentences Use of filler words and slang – contributes to a conversational tone that resonates with audiences == Origins == The origins of "influencer speak" are linked to the "Valley Girl" accent, which became prominent in the 1980s. This earlier style included features such as uptalk and vocal fry, which have been adapted for digital platforms. Linguists have noted that these patterns are often led by young women, who are recognized as linguistic innovators in sociolinguistic research. == Sociolinguistic significance == "Influencer speak" is used to maintain audience engagement. Features such as uptalk help speakers retain the "conversational floor," ensuring continuous attention from listeners. A study conducted by UCLA researchers has shown that creators adjust their speech styles based on the platform and audience. For example, a comedic tone may be emphasized on TikTok, while a more professional tone may be used on platforms such as LinkedIn or YouTube.
Digital redlining
Digital redlining is the practice of creating and perpetuating inequities between already marginalized groups specifically through the use of digital technologies, digital content, and the internet. The concept of digital redlining is an extension of the practice of redlining in housing discrimination, a historical legal practice in the United States and Canada dating back to the 1930s where red lines were drawn on maps to indicate poor and primarily black neighborhoods that were deemed unsuitable for loans or further development, which created great economic disparities between neighborhoods. The term was popularized by Dr. Chris Gilliard, a privacy scholar, who defines digital redlining as "the creation and maintenance of tech practices, policies, pedagogies, and investment decisions that enforce class boundaries and discriminate against specific groups". Though digital redlining is related to the digital divide and techniques such as weblining and personalization, it is distinct from these concepts as part of larger complex systemic issues. It can refer to practices that create inequities of access to technology services in geographical areas, such as when internet service providers decide to not service specific geographic areas because they are perceived to be not as profitable and thus reduce access to crucial services and civic participation. It can also be used to refer to inequities caused by the policies and practices of digital technologies. For instance, with these methods inequities are accomplished through divisions that are created via algorithms which are hidden from the technology user; the use of big data and analytics allow for a much more nuanced form of discrimination that can target specific vulnerable populations. These algorithmic means are enabled through the use of unregulated data technologies that apply a score to individuals that statistically categorize personality traits or tendencies which are similar to a credit score but are proprietary to the technology companies and not under outside oversight. == Digital redlining and geography == While the roots of redlining lie in excluding populations based on geography, digital redlining occurs in both geographical and non-geographical contexts. An example of both contexts can be found in the charges brought against Facebook on March 28 of 2019, by the United States Department of Housing and Urban Development (HUD). HUD charged Facebook with violating the Fair Housing Act of 1968 by "encouraging, enabling, and causing housing discrimination through the company's advertising platform." HUD stated that Facebook allowed advertisers to “exclude people who live in a specified area from seeing an ad by drawing a red line around that area.” The discrimination called out by HUD included those that were racist, homophobic, ableist, and classist. Besides this example of geographically based digital redlining, HUD also charged that Facebook used profile information and designations to exclude classes of people. The charges stated: "Facebook enabled advertisers to exclude people whom Facebook classified as parents; non-American-born; non-Christian; interested in accessibility; interested in Hispanic culture; or a wide variety of other interests that closely align with the Fair Housing Act’s protected classes" Several media outlets pointed out HUDs own history of housing discrimination through redlining, the establishment of the Fair Housing Act to combat redlining, and how the digital platform was recreating this discriminatory practice. === Digital redlining within a geographical context === Although digital redlining refers to a complex and varied set of practices, it has been most commonly applied to practices with a geographical dimension. Common examples include when an internet service providers decide to not service specific geographic areas because those areas are seen to be not as profitable, resulting in discrimination against low-income communities, with resulting impacts on access to crucial services and civic participation. AT&T has faced specific scrutiny for this form of digital redlining, it has been reported that AT&T has been classist in its offerings of broadband internet service in areas that are more impoverished. Geographically based digital redlining can also apply to digital content or the distribution of goods sold online. Geographically based games such as Pokémon Go have been shown to offer more virtual stops and rewards in geographic areas that are less ethnically and racially diverse. In 2016, Amazon was rebuked for not offering their Prime same-day delivery service to many communities that were largely African American and had incomes that were beneath the national average. Even services such as email can be impacted, with many email administrators creating filters for flagging particular email messages as spam based on the geographical origin of the message. === Digital redlining based on personal identity === Although often aligned with discrimination that falls into a geographically based context digital redlining also refers to when vulnerable populations are targeted for or excluded from specific content or access to the internet in a way that harms them based on some aspect of their identity. Trade schools and community colleges, which typically have a more working class student body, have been found to block public internet content from their students where elite research institutions do not. The use of big data and analytics allow for a much more nuanced form of discrimination that can target specific vulnerable populations. For example, Facebook has been criticized for providing tools that allow advertisers to target ads by ethnic affinity and gender, effectively blocking minorities from seeing specific ads for housing and employment. In October 2019, a major class action lawsuit was filed against Facebook alleging gender and age discrimination in financial advertising. A broad array of consumers can be particularly vulnerable to digital redlining when it is used outside of a geographical context. Besides targeting vulnerable populations based on traditional and legally recognized classifications such as race, gender, age, etc., it has been shown that personal data mined and then resold by brokers can be used to target those who have been identified as suffering from Alzheimer's or dementia, or simply identified as impulse buyers or gullible. == Term distinctions == === Distinctions between weblining and digital redlining === Earlier distinctions have been made between weblining—the process of charging customers different prices based on profile information --- and internet or digital redlining, with digital redlining being focused not on pricing but access. As early as 2002 the Gale Encyclopedia of E-Commerce puts forth the distinction more in use today: weblining is the pervasive and generally accepted (or at least tolerated) practice of personalizing access to products and services in ways invisible to the user; digital redlining is when such personalized, data-driven schemes perpetuate traditional advantages of privileged demographics. As weblining has become more ubiquitous, the term has fallen out of use in favor of the more general term personalization. === Distinctions between the digital divide and digital redlining === Scholars have often drawn connections between the digital divide and digital redlining. In practice, the digital divide is seen as one of a number of impacts of digital redlining, and digital redlining is one of a number of ways in which the divide is maintained or extended. == Criticisms == A 2001 report looked to find if the reason for a gap in access to broadband internet by low-income and minority populations was due to a lack of availability or due to other factors. The report found that there was "little evidence of digital redlining based on income or black or Hispanic concentrations" but that there was mixed evidence of redlining based on areas in which Native American or Asian populations were larger.
Winner-take-all in action selection
Winner-take-all is a computer science concept that has been widely applied in behavior-based robotics as a method of action selection for intelligent agents. Winner-take-all systems work by connecting modules (task-designated areas) in such a way that when one action is performed it stops all other actions from being performed, so only one action is occurring at a time. The name comes from the idea that the "winner" action takes all of the motor system's power. == History == In the 1980s and 1990s, many roboticists and cognitive scientists were attempting to find speedier and more efficient alternatives to the traditional world modeling method of action selection. In 1982, Jerome A. Feldman and D.H. Ballard published the "Connectionist Models and Their Properties", referencing and explaining winner-take-all as a method of action selection. Feldman's architecture functioned on the simple rule that in a network of interconnected action modules, each module will set its own output to zero if it reads a higher input than its own in any other module. In 1986, Rodney Brooks introduced behavior-based artificial intelligence. Winner-take-all architectures for action selection soon became a common feature of behavior-based robots, because selection occurred at the level of the action modules (bottom-up) rather than at a separate cognitive level (top-down), producing a tight coupling of stimulus and reaction. == Types of winner-take-all architectures == === Hierarchy === In the hierarchical architecture, actions or behaviors are programmed in a high-to-low priority list, with inhibitory connections between all the action modules. The agent performs low-priority behaviors until a higher-priority behavior is stimulated, at which point the higher behavior inhibits all other behaviors and takes over the motor system completely. Prioritized behaviors are usually key to the immediate survival of the agent, while behaviors of lower priority are less time-sensitive. For example, "run away from predator" would be ranked above "sleep." While this architecture allows for clear programming of goals, many roboticists have moved away from the hierarchy because of its inflexibility. === Heterarchy and fully distributed === In the heterarchy and fully distributed architecture, each behavior has a set of pre-conditions to be met before it can be performed, and a set of post-conditions that will be true after the action has been performed. These pre- and post-conditions determine the order in which behaviors must be performed and are used to causally connect action modules. This enables each module to receive input from other modules as well as from the sensors, so modules can recruit each other. For example, if the agent's goal were to reduce thirst, the behavior "drink" would require the pre-condition of having water available, so the module would activate the module in charge of "find water". The activations organize the behaviors into a sequence, even though only one action is performed at a time. The distribution of larger behaviors across modules makes this system flexible and robust to noise. Some critics of this model hold that any existing set of division rules for the predecessor and conflictor connections between modules produce sub-par action selection. In addition, the feedback loop used in the model can in some circumstances lead to improper action selection. === Arbiter and centrally coordinated === In the arbiter and centrally coordinated architecture, the action modules are not connected to each other but to a central arbiter. When behaviors are triggered, they begin "voting" by sending signals to the arbiter, and the behavior with the highest number of votes is selected. In these systems, bias is created through the "voting weight", or how often a module is allowed to vote. Some arbiter systems take a different spin on this type of winner-take-all by using a "compromise" feature in the arbiter. Each module is able to vote for or against each smaller action in a set of actions, and the arbiter selects the action with the most votes, meaning that it benefits the most behavior modules. This can be seen as violating the general rule against creating representations of the world in behavior-based AI, established by Brooks. By performing command fusion, the system is creating a larger composite pool of knowledge than is obtained from the sensors alone, forming a composite inner representation of the environment. Defenders of these systems argue that forbidding world-modeling puts unnecessary constraints on behavior-based robotics, and that agents benefits from forming representations and can still remain reactive.
WebGL
WebGL (short for Web Graphics Library) is a JavaScript API for rendering interactive 2D and 3D graphics within any compatible web browser without the use of plug-ins. WebGL is fully integrated with other web standards, allowing GPU-accelerated usage of physics, image processing, and effects in the HTML canvas. WebGL elements can be mixed with other HTML elements and composited with other parts of the page or page background. WebGL programs consist of control code written in JavaScript, and shader code written in OpenGL ES Shading Language (GLSL ES, sometimes referred to as ESSL), a language similar to C or C++. WebGL code is executed on a computer's GPU. WebGL is designed and maintained by the non-profit Khronos Group. On February 9, 2022, Khronos Group announced WebGL 2.0 support from all major browsers. From 2024, a new graphics API, WebGPU, is being developed to supersede WebGL. WebGPU provides extended capabilities, a more modern interface, and direct GPU access, which is useful for demanding graphics as well as AI applications. == Design == WebGL 1.0 is based on OpenGL ES 2.0 and provides an API for 3D graphics. It uses the HTML5 canvas element and is accessed using Document Object Model (DOM) interfaces. WebGL 2.0 is based on OpenGL ES 3.0. It guarantees the availability of many optional extensions of WebGL 1.0, and exposes new APIs. Automatic memory management is provided implicitly by JavaScript. Like OpenGL ES 2.0, WebGL lacks the fixed-function APIs introduced in OpenGL 1.0 and deprecated in OpenGL 3.0. This functionality, if required, has to be implemented by the developer using shader code and JavaScript. Shaders in WebGL are written in GLSL and passed to the WebGL API as text strings. The WebGL implementation compiles these strings to GPU code. This code is executed for each vertex sent through the API and for each pixel rasterized to the screen. == History == WebGL evolved out of the Canvas 3D experiments started by Vladimir Vukićević at Mozilla. Vukićević first demonstrated a Canvas 3D prototype in 2006. By the end of 2007, both Mozilla and Opera had made their own separate implementations. In early 2009, the non-profit technology consortium Khronos Group started the WebGL Working Group, with initial participation from Apple, Google, Mozilla, Opera, and others. Version 1.0 of the WebGL specification was released March 2011. An early application of WebGL was Zygote Body. In November 2012 Autodesk announced that they ported most of their applications to the cloud running on local WebGL clients. These applications included Autodesk Fusion and AutoCAD. Development of the WebGL 2 specification started in 2013 and finished in January 2017. The specification is based on OpenGL ES 3.0. First implementations are in Firefox 51, Chrome 56 and Opera 43. == Implementations == === Almost Native Graphics Layer Engine === Almost Native Graphics Layer Engine (ANGLE) is an open source graphic engine which implements WebGL 1.0 (2.0 which closely conforms to ES 3.0) and OpenGL ES 2.0 and 3.0 standards. It is a default backend for both Google Chrome and Mozilla Firefox on Windows platforms and works by translating WebGL and OpenGL calls to available platform-specific APIs. ANGLE currently provides access to OpenGL ES 2.0 and 3.0 to desktop OpenGL, OpenGL ES, Direct3D 9, and Direct3D 11 APIs. ″[Google] Chrome uses ANGLE for all graphics rendering on Windows, including the accelerated Canvas2D implementation and the Native Client sandbox environment.″ == Software == WebGL is widely supported by modern browsers. However, its availability depends on other factors, too, like whether the GPU supports it. The official WebGL website offers a simple test page. More detailed information (like what renderer the browser uses, and what extensions are available) can be found at third-party websites. === Desktop browsers === Source: Google Chrome – WebGL 1.0 has been enabled on all platforms that have a capable graphics card with updated drivers since version 9, released in February 2011. By default on Windows, Chrome uses the ANGLE (Almost Native Graphics Layer Engine) renderer to translate OpenGL ES to Direct X 9.0c or 11.0, which have better driver support. However, on Linux and Mac OS X, the default renderer is OpenGL. It is also possible to force OpenGL as the renderer on Windows. Since September 2013, Chrome also has a newer Direct3D 11 renderer, which requires a newer graphics card. Chrome 56+ supports WebGL 2.0. Firefox – WebGL 1.0 has been enabled on all platforms that have a capable graphics card with updated drivers since version 4.0. Since 2013 Firefox also uses DirectX on the Windows platform via ANGLE. Firefox 51+ supports WebGL 2.0. Safari – Safari 6.0 and newer versions installed on OS X Mountain Lion, Mac OS X Lion and Safari 5.1 on Mac OS X Snow Leopard implemented support for WebGL 1.0, which was disabled by default before Safari 8.0. Safari version 12 (available in MacOS Mojave) has available support for WebGL 2.0 as an "Experimental" feature. Safari 15 enables WebGL 2.0 for all users. Opera – WebGL 1.0 has been implemented in Opera 11 and 12, but was disabled by default in 2014. Opera 43+ supports WebGL 2.0. Internet Explorer – WebGL 1.0 is partially supported in Internet Explorer 11. Internet Explorer initially failed most of the official WebGL conformance tests, but Microsoft later released several updates. The latest 0.94 WebGL engine currently passes ≈97% of Khronos tests. WebGL support can also be manually added to earlier versions of Internet Explorer using third-party plugins such as IEWebGL. Microsoft Edge – For Microsoft Edge Legacy, the initial stable release supports WebGL version 0.95 (context name: "experimental-webgl") with an open source GLSL to HLSL transpiler. Version 10240+ supports WebGL 1.0 as prefixed. Latest Chromium-based Edge supports WebGL 2.0. === Mobile browsers === Google Chrome – WebGL 1.0 is supported on Android as of Chrome 25. WebGL 2.0 is supported on Android as of Chrome 58. Chrome is used for the Android system webview as of Android 5. Firefox for mobile – WebGL 1.0 is available for Android devices since Firefox 4. Safari on iOS – WebGL 1.0 is available for mobile Safari in iOS 8. WebGL 2.0 is available for mobile Safari in iOS 15. Microsoft Edge – Prefixed WebGL 1.0 was available on Windows 10 Mobile.. Latest Chromium-based Edge supports WebGL 2.0. Opera Mobile – Opera Mobile 12 supports WebGL 1.0 (on Android only). Sailfish OS – WebGL 1.0 is supported in the default Sailfish browser. Tizen – WebGL 1.0 is supported == Tools and ecosystem == === Utilities === The low-level nature of the WebGL API, which provides little on its own to quickly create desirable 3D graphics, motivated the creation of higher-level libraries that abstract common operations (e.g. loading scene graphs and 3D objects in certain formats; applying linear transformations to shaders or view frustums). Some such libraries were ported to JavaScript from other languages. Examples of libraries that provide high-level features include A-Frame (VR), BabylonJS, PlayCanvas, three.js, OSG.JS, Google’s model-viewer and CopperLicht. Web3D also made a project called X3DOM to make X3D and VRML content run on WebGL. === Games === There has been an emergence of 2D and 3D game engines for WebGL, such as Unreal Engine 4 and Unity. The Stage3D/Flash-based Away3D high-level library also has a port to WebGL via TypeScript. A more light-weight utility library that provides just the vector and matrix math utilities for shaders is sylvester.js. It is sometimes used in conjunction with a WebGL specific extension called glUtils.js. There are also some 2D libraries built atop WebGL, like Cocos2d-x or Pixi.js, which were implemented this way for performance reasons in a move that parallels what happened with the Starling Framework over Stage3D in the Flash world. The WebGL-based 2D libraries fall back to HTML5 canvas when WebGL is not available. Removing the rendering bottleneck by giving almost direct access to the GPU has exposed performance limitations in the JavaScript implementations. Some were addressed by asm.js and WebAssembly (similarly, the introduction of Stage3D exposed performance problems within ActionScript, which were addressed by projects like CrossBridge). === Content creation === As with any other graphics API, creating content for WebGL scenes requires using a 3D content creation tool and exporting the scene to a format that is readable by the viewer or helper library. Desktop 3D authoring software such as Blender, Autodesk Maya or SimLab Composer can be used for this purpose. In particular, Blend4Web allows a WebGL scene to be authored entirely in Blender and exported to a browser with a single click, even as a standalone web page. There are also some WebGL-specific software such as CopperCube and the online WebGL-based editor Clara.io. Online platforms such as Sketchfab and Clara.io allow users to directly upload their 3D models