CommonJS is a community-driven effort by volunteers with diverse backgrounds and interests to converge on a minimal common ground that is sound and scalable. The goal is to make writing portable JavaScript applications that run on servers, browsers, desktop applications, and secure sandboxes not only possible, but also accessible to developers and development tools without vendor lock-in or steep learning curves.
Christoph will attempt to paint us a picture of where CommonJS is today and where it is headed. CommonJS is well on its way to realizing the dream of portable JavaScript applications composed of libraries from all over the Internet. That is, modular JavaScript that runs everywhere.
Asynchronous Module Definition (AMD) used for Dependency Injection (DI) and MVVMHugh Anderson
I originally presented on AMD in October 2012 at eBags (http://www.ebags.com) to the entire development team. This Slideshare was my preparation.
Within the slides, you will notice a yellow star on some bullet points. During my AMD presentation, these yellow stars were my signal to switch over to Visual Studio, where I had prepared code samples that illustrate each point. In my presentation I used SmartJs to illustrate each of these yellow stars. SmartJs is a wonderful companion to this Slideshare, and can be viewed on my Github repository: https://github.com/hughanderson4/smartjs
Managing JavaScript Dependencies With RequireJSDen Odell
Learn how to manage and dynamically load JavaScript code files and their dependencies in a robust, scalable way within your large web sites and applications using the RequireJS library.
Asynchronous Module Definition (AMD) used for Dependency Injection (DI) and MVVMHugh Anderson
I originally presented on AMD in October 2012 at eBags (http://www.ebags.com) to the entire development team. This Slideshare was my preparation.
Within the slides, you will notice a yellow star on some bullet points. During my AMD presentation, these yellow stars were my signal to switch over to Visual Studio, where I had prepared code samples that illustrate each point. In my presentation I used SmartJs to illustrate each of these yellow stars. SmartJs is a wonderful companion to this Slideshare, and can be viewed on my Github repository: https://github.com/hughanderson4/smartjs
Managing JavaScript Dependencies With RequireJSDen Odell
Learn how to manage and dynamically load JavaScript code files and their dependencies in a robust, scalable way within your large web sites and applications using the RequireJS library.
AMD (Asynchronous Module Definition) is JavaScript's missing module system for the browser. It's a cosmos of interoperability, efficient loading, dependency resolution, code optimization, etc.
At excentos we're using it as part of the Dojo Toolkit to organize our single-page product advisor web apps.
I will give a short introduction to the concept and some tools and I'm going to explain why everyone with a reasonably-sized code base should adopt it.
Workshop Overview General del ecosistema de Javascript y de los Frameworks actuales.
¿Hacia dónde vamos?
ReactJS - Flux Pattern - ReactNative.
RactiveJS, VueJS.
Presentado por Ing. Marc Torrent
An introduction to AngularJS architecture and usage, equipped with an overview of AngularJS role in solving the problems arised along the history of web development.
For further material and updates:
http://blog.avirancohen.com
HTML5 DevConf 2013 talk by Lauri Svan / SC5
Writing single page applications that respect all web browsers and crawlers should be easy. Still, many end up rewriting their single page application with a server-side templating language, too and get trapped to maintaining two codebases.
With the emergence of server-side JavaScript, the “holy grail” of running the same app code on both ends seems attainable. Frameworks like Meteor, Derby and Yahoo Mojito have done it, and the efforts of AirBnB and Backbone LayoutManager bring it closer to Backbone developers, too. Still, the current approaches make such assumptions on the backend or enforce such constraints on the programming model that an old-fashioned Backbone.js developer cannot take them in use.
This talk compares the approaches for the “holy grail”, particularly from a Backbone application developer’s perspective. In addition, it presents a programming model by which pretty ordinary Backbone applications can run on both ends. The presented approach works for web crawlers and could have limited use for dumb browsers, too.
The talk is technical, with the primary audience being single page app developers planning to move their app server-side. The audience will benefit from previous knowledge of Backbone.js.
Building Isomorphic Apps (JSConf.Asia 2014)Spike Brehm
Over the past year or so, we’ve seen the emergence of a new way of building JavaScript web apps that share code between the web browser and the server, using Node.js — a technique that has come to be known as "isomorphic JavaScript.” There are a variety of use cases for isomorphic JavaScript; some apps render HTML on both the server and the client, some apps share just a few small bits of application logic, while others share the entire application runtime between client and server to provide advanced offline and realtime features. Why go isomorphic? The main benefits are performance, maintainability, reusability, and SEO.
This talk shares examples of isomorphic JavaScript apps running in the wild, explore the exploding ecosystem of asset building tools, such as Browserify, Webpack, and Gulp, that allow developers to build their own isomorphic JavaScript apps with open-source libraries, demonstrate how to build an isomorphic JavaScript module from scratch, and explore how libraries like React and Flux can be used to build a single-page app that renders on the server.
Introduction
Require JS
Handlebars
This presentation has been developed in the context of the Mobile Applications Development course, DISIM, University of L'Aquila (Italy), Spring 2014.
http://www.ivanomalavolta.com
Spring framework 3.2 > 4.0 — themes and trendsArawn Park
제 13회 한국 자바 개발자 컨퍼런스 커뮤니티 세션에서 공유한 `Spring Framework 3.2 > 4.0 — Themes and Trends` 의 발표 자료
Spring Framework 3.1에 공개된 후 약 1년만에 Spring Framework 3.2개 공개되었습니다.
3.2에는 비동기 요청 처리와 향상된 JAVA 7 지원, Spring MVC Test framework 합류 등으로 자바 엔터프라이즈 애플리케이션을 개발하는데 있어 편리함과 함께 세련미를 더해주고 있습니다.
최근 Spring Framework 핵심 개발자인 Juergen Hoeller는 springsource blog에 "NEXT STOP: SPRING FRAMEWORK 4.0"라는 제목으로 앞으로 Spring Framework에 어떤 변화들이 찾아올지에 대해서 미리 귀뜸을 해주었습니다.
이 시간을 통해 Spring Framework 3.2의 새로운 기능들과 개선사항을 살펴보고, Spring Framework의 미래 모습에 대해 이야기를 나눠보는 자리를 만들고자 합니다.
JavaScript dependencies & modules
Introduction to Browserify and how to use CommonJS/Node.js modules in the browser. We'll start with a brief look at the current landscape of handling dependencies and modules.
Talk at sthlm.js 2014-01-07, http://www.meetup.com/sthlm-js/events/156429912/
Demos & code examples; https://github.com/johannilsson/sthlmjs-1401
AMD (Asynchronous Module Definition) is JavaScript's missing module system for the browser. It's a cosmos of interoperability, efficient loading, dependency resolution, code optimization, etc.
At excentos we're using it as part of the Dojo Toolkit to organize our single-page product advisor web apps.
I will give a short introduction to the concept and some tools and I'm going to explain why everyone with a reasonably-sized code base should adopt it.
Workshop Overview General del ecosistema de Javascript y de los Frameworks actuales.
¿Hacia dónde vamos?
ReactJS - Flux Pattern - ReactNative.
RactiveJS, VueJS.
Presentado por Ing. Marc Torrent
An introduction to AngularJS architecture and usage, equipped with an overview of AngularJS role in solving the problems arised along the history of web development.
For further material and updates:
http://blog.avirancohen.com
HTML5 DevConf 2013 talk by Lauri Svan / SC5
Writing single page applications that respect all web browsers and crawlers should be easy. Still, many end up rewriting their single page application with a server-side templating language, too and get trapped to maintaining two codebases.
With the emergence of server-side JavaScript, the “holy grail” of running the same app code on both ends seems attainable. Frameworks like Meteor, Derby and Yahoo Mojito have done it, and the efforts of AirBnB and Backbone LayoutManager bring it closer to Backbone developers, too. Still, the current approaches make such assumptions on the backend or enforce such constraints on the programming model that an old-fashioned Backbone.js developer cannot take them in use.
This talk compares the approaches for the “holy grail”, particularly from a Backbone application developer’s perspective. In addition, it presents a programming model by which pretty ordinary Backbone applications can run on both ends. The presented approach works for web crawlers and could have limited use for dumb browsers, too.
The talk is technical, with the primary audience being single page app developers planning to move their app server-side. The audience will benefit from previous knowledge of Backbone.js.
Building Isomorphic Apps (JSConf.Asia 2014)Spike Brehm
Over the past year or so, we’ve seen the emergence of a new way of building JavaScript web apps that share code between the web browser and the server, using Node.js — a technique that has come to be known as "isomorphic JavaScript.” There are a variety of use cases for isomorphic JavaScript; some apps render HTML on both the server and the client, some apps share just a few small bits of application logic, while others share the entire application runtime between client and server to provide advanced offline and realtime features. Why go isomorphic? The main benefits are performance, maintainability, reusability, and SEO.
This talk shares examples of isomorphic JavaScript apps running in the wild, explore the exploding ecosystem of asset building tools, such as Browserify, Webpack, and Gulp, that allow developers to build their own isomorphic JavaScript apps with open-source libraries, demonstrate how to build an isomorphic JavaScript module from scratch, and explore how libraries like React and Flux can be used to build a single-page app that renders on the server.
Introduction
Require JS
Handlebars
This presentation has been developed in the context of the Mobile Applications Development course, DISIM, University of L'Aquila (Italy), Spring 2014.
http://www.ivanomalavolta.com
Spring framework 3.2 > 4.0 — themes and trendsArawn Park
제 13회 한국 자바 개발자 컨퍼런스 커뮤니티 세션에서 공유한 `Spring Framework 3.2 > 4.0 — Themes and Trends` 의 발표 자료
Spring Framework 3.1에 공개된 후 약 1년만에 Spring Framework 3.2개 공개되었습니다.
3.2에는 비동기 요청 처리와 향상된 JAVA 7 지원, Spring MVC Test framework 합류 등으로 자바 엔터프라이즈 애플리케이션을 개발하는데 있어 편리함과 함께 세련미를 더해주고 있습니다.
최근 Spring Framework 핵심 개발자인 Juergen Hoeller는 springsource blog에 "NEXT STOP: SPRING FRAMEWORK 4.0"라는 제목으로 앞으로 Spring Framework에 어떤 변화들이 찾아올지에 대해서 미리 귀뜸을 해주었습니다.
이 시간을 통해 Spring Framework 3.2의 새로운 기능들과 개선사항을 살펴보고, Spring Framework의 미래 모습에 대해 이야기를 나눠보는 자리를 만들고자 합니다.
JavaScript dependencies & modules
Introduction to Browserify and how to use CommonJS/Node.js modules in the browser. We'll start with a brief look at the current landscape of handling dependencies and modules.
Talk at sthlm.js 2014-01-07, http://www.meetup.com/sthlm-js/events/156429912/
Demos & code examples; https://github.com/johannilsson/sthlmjs-1401
Mobile applications Development - Lecture 11
CSS3 Refresher
This presentation has been developed in the context of the Mobile Applications Development course at the Computer Science Department of the University of L’Aquila (Italy).
http://www.di.univaq.it/malavolta
The quest for the perfect cross-platform solution has been like the quest for the Holy Grail. It’s been going on a long time, there are a myriad of perceived benefits, and every time someone claims to have found it, it’s never the right one. Many people ask, “Should I go with a cross-platform solution, or a native solution?” but the reality is the quest is bringing us closer to a solution where there isn’t a meaningful difference.
React Native wasn’t the first to show a solution could be both cross-platform and native, but it has certainly convinced a lot of people. As many of those early converts are discovering the limitations, they are beginning to fall back into either-or thinking. Maybe they just have the wrong assumptions.
Kotlin Multiplatform makes some new assumptions and, although it wasn’t the first to do so, is gaining in popularity very quickly. Is Kotlin Multiplatform the holy grail of cross-platform? Probably not. But it does bring cross-platform and native closer than ever before.
----
Presented at https://newyork2019.theleaddeveloper.com/
Video: https://www.youtube.com/watch?v=sA_JIqqj9js
Thank you https://touchlab.co/ for supporting me and the future of mobile.
CommonJS via PINF JavaScript Loader - Introductioncadorn
The PINF JavaScript Loader is one extrapolated interpretation of the CommonJS standards that realizes the dream of portable JavaScript applications composed of libraries from all over the internet today. You don't need to wait for platform implementors to incorporate CommonJS standards. By building on PINF you bring CommonJS with you and in the process build momentum for CommonJS.
Christoph will give us a brief overview of CommonJS and then dive deep into PINF for JavaScript. He will communicate the motivation behind PINF and where it fits into the CommonJS community outlined above. You will walk away with practical advice you can apply immediately to build CommonJS based applications and libraries for production deployment.
At UCR, automation is a part of everything we do. When designing a new architecture and the set of new processes for our new Java based development environment we came up with a set of continuous integration and deployment tools to enable our developers to write and deploy their own applications in a flexible and secure environment.
Angular: Go Mobile!
How could you develop a mobile app across iOS, Android or windows devices? We’ll show how Apache Cordova opens the world of mobile app development to web developers. In the session, a “To Do” app using Angular will be explored and then it will be demonstrated step by step on how to turn it into a mobile app, with access to native device capabilities. Along the way, you'll also learn what kind of apps are best-suited for the hybrid architecture and when to make the switch from web app to mobile app.
[DevDay 2017] ReactJS Hands on - Speaker: Binh Phan - Developer at mgm techno...DevDay.org
A short description on ReactJS for absolute beginners. The presentation will walk you through why we should use React to develop web applications, as well as a live coding session where you can see it in action.
Developed by Sauce Labs and a thriving community of open source contributors, Appium is a cross-platform automation framework for testing mobile web, native, and hybrid applications.
In this webinar, hear the latest about Appium version 1.3.x from project lead Jonathan Lipps as he takes us on a tour of the stability improvements and features the team has added since the Appium 1.0 release back in May of 2014.
Securing your Kubernetes cluster_ a step-by-step guide to success !KatiaHIMEUR1
Today, after several years of existence, an extremely active community and an ultra-dynamic ecosystem, Kubernetes has established itself as the de facto standard in container orchestration. Thanks to a wide range of managed services, it has never been so easy to set up a ready-to-use Kubernetes cluster.
However, this ease of use means that the subject of security in Kubernetes is often left for later, or even neglected. This exposes companies to significant risks.
In this talk, I'll show you step-by-step how to secure your Kubernetes cluster for greater peace of mind and reliability.
Maruthi Prithivirajan, Head of ASEAN & IN Solution Architecture, Neo4j
Get an inside look at the latest Neo4j innovations that enable relationship-driven intelligence at scale. Learn more about the newest cloud integrations and product enhancements that make Neo4j an essential choice for developers building apps with interconnected data and generative AI.
Sudheer Mechineni, Head of Application Frameworks, Standard Chartered Bank
Discover how Standard Chartered Bank harnessed the power of Neo4j to transform complex data access challenges into a dynamic, scalable graph database solution. This keynote will cover their journey from initial adoption to deploying a fully automated, enterprise-grade causal cluster, highlighting key strategies for modelling organisational changes and ensuring robust disaster recovery. Learn how these innovations have not only enhanced Standard Chartered Bank’s data infrastructure but also positioned them as pioneers in the banking sector’s adoption of graph technology.
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...SOFTTECHHUB
The choice of an operating system plays a pivotal role in shaping our computing experience. For decades, Microsoft's Windows has dominated the market, offering a familiar and widely adopted platform for personal and professional use. However, as technological advancements continue to push the boundaries of innovation, alternative operating systems have emerged, challenging the status quo and offering users a fresh perspective on computing.
One such alternative that has garnered significant attention and acclaim is Nitrux Linux 3.5.0, a sleek, powerful, and user-friendly Linux distribution that promises to redefine the way we interact with our devices. With its focus on performance, security, and customization, Nitrux Linux presents a compelling case for those seeking to break free from the constraints of proprietary software and embrace the freedom and flexibility of open-source computing.
Climate Impact of Software Testing at Nordic Testing DaysKari Kakkonen
My slides at Nordic Testing Days 6.6.2024
Climate impact / sustainability of software testing discussed on the talk. ICT and testing must carry their part of global responsibility to help with the climat warming. We can minimize the carbon footprint but we can also have a carbon handprint, a positive impact on the climate. Quality characteristics can be added with sustainability, and then measured continuously. Test environments can be used less, and in smaller scale and on demand. Test techniques can be used in optimizing or minimizing number of tests. Test automation can be used to speed up testing.
DevOps and Testing slides at DASA ConnectKari Kakkonen
My and Rik Marselis slides at 30.5.2024 DASA Connect conference. We discuss about what is testing, then what is agile testing and finally what is Testing in DevOps. Finally we had lovely workshop with the participants trying to find out different ways to think about quality and testing in different parts of the DevOps infinity loop.
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024Neo4j
Neha Bajwa, Vice President of Product Marketing, Neo4j
Join us as we explore breakthrough innovations enabled by interconnected data and AI. Discover firsthand how organizations use relationships in data to uncover contextual insights and solve our most pressing challenges – from optimizing supply chains, detecting fraud, and improving customer experiences to accelerating drug discoveries.
Removing Uninteresting Bytes in Software FuzzingAftab Hussain
Imagine a world where software fuzzing, the process of mutating bytes in test seeds to uncover hidden and erroneous program behaviors, becomes faster and more effective. A lot depends on the initial seeds, which can significantly dictate the trajectory of a fuzzing campaign, particularly in terms of how long it takes to uncover interesting behaviour in your code. We introduce DIAR, a technique designed to speedup fuzzing campaigns by pinpointing and eliminating those uninteresting bytes in the seeds. Picture this: instead of wasting valuable resources on meaningless mutations in large, bloated seeds, DIAR removes the unnecessary bytes, streamlining the entire process.
In this work, we equipped AFL, a popular fuzzer, with DIAR and examined two critical Linux libraries -- Libxml's xmllint, a tool for parsing xml documents, and Binutil's readelf, an essential debugging and security analysis command-line tool used to display detailed information about ELF (Executable and Linkable Format). Our preliminary results show that AFL+DIAR does not only discover new paths more quickly but also achieves higher coverage overall. This work thus showcases how starting with lean and optimized seeds can lead to faster, more comprehensive fuzzing campaigns -- and DIAR helps you find such seeds.
- These are slides of the talk given at IEEE International Conference on Software Testing Verification and Validation Workshop, ICSTW 2022.
In the rapidly evolving landscape of technologies, XML continues to play a vital role in structuring, storing, and transporting data across diverse systems. The recent advancements in artificial intelligence (AI) present new methodologies for enhancing XML development workflows, introducing efficiency, automation, and intelligent capabilities. This presentation will outline the scope and perspective of utilizing AI in XML development. The potential benefits and the possible pitfalls will be highlighted, providing a balanced view of the subject.
We will explore the capabilities of AI in understanding XML markup languages and autonomously creating structured XML content. Additionally, we will examine the capacity of AI to enrich plain text with appropriate XML markup. Practical examples and methodological guidelines will be provided to elucidate how AI can be effectively prompted to interpret and generate accurate XML markup.
Further emphasis will be placed on the role of AI in developing XSLT, or schemas such as XSD and Schematron. We will address the techniques and strategies adopted to create prompts for generating code, explaining code, or refactoring the code, and the results achieved.
The discussion will extend to how AI can be used to transform XML content. In particular, the focus will be on the use of AI XPath extension functions in XSLT, Schematron, Schematron Quick Fixes, or for XML content refactoring.
The presentation aims to deliver a comprehensive overview of AI usage in XML development, providing attendees with the necessary knowledge to make informed decisions. Whether you’re at the early stages of adopting AI or considering integrating it in advanced XML development, this presentation will cover all levels of expertise.
By highlighting the potential advantages and challenges of integrating AI with XML development tools and languages, the presentation seeks to inspire thoughtful conversation around the future of XML development. We’ll not only delve into the technical aspects of AI-powered XML development but also discuss practical implications and possible future directions.
A tale of scale & speed: How the US Navy is enabling software delivery from l...sonjaschweigert1
Rapid and secure feature delivery is a goal across every application team and every branch of the DoD. The Navy’s DevSecOps platform, Party Barge, has achieved:
- Reduction in onboarding time from 5 weeks to 1 day
- Improved developer experience and productivity through actionable findings and reduction of false positives
- Maintenance of superior security standards and inherent policy enforcement with Authorization to Operate (ATO)
Development teams can ship efficiently and ensure applications are cyber ready for Navy Authorizing Officials (AOs). In this webinar, Sigma Defense and Anchore will give attendees a look behind the scenes and demo secure pipeline automation and security artifacts that speed up application ATO and time to production.
We will cover:
- How to remove silos in DevSecOps
- How to build efficient development pipeline roles and component templates
- How to deliver security artifacts that matter for ATO’s (SBOMs, vulnerability reports, and policy evidence)
- How to streamline operations with automated policy checks on container images
Communications Mining Series - Zero to Hero - Session 1DianaGray10
This session provides introduction to UiPath Communication Mining, importance and platform overview. You will acquire a good understand of the phases in Communication Mining as we go over the platform with you. Topics covered:
• Communication Mining Overview
• Why is it important?
• How can it help today’s business and the benefits
• Phases in Communication Mining
• Demo on Platform overview
• Q/A
UiPath Test Automation using UiPath Test Suite series, part 6DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 6. In this session, we will cover Test Automation with generative AI and Open AI.
UiPath Test Automation with generative AI and Open AI webinar offers an in-depth exploration of leveraging cutting-edge technologies for test automation within the UiPath platform. Attendees will delve into the integration of generative AI, a test automation solution, with Open AI advanced natural language processing capabilities.
Throughout the session, participants will discover how this synergy empowers testers to automate repetitive tasks, enhance testing accuracy, and expedite the software testing life cycle. Topics covered include the seamless integration process, practical use cases, and the benefits of harnessing AI-driven automation for UiPath testing initiatives. By attending this webinar, testers, and automation professionals can gain valuable insights into harnessing the power of AI to optimize their test automation workflows within the UiPath ecosystem, ultimately driving efficiency and quality in software development processes.
What will you get from this session?
1. Insights into integrating generative AI.
2. Understanding how this integration enhances test automation within the UiPath platform
3. Practical demonstrations
4. Exploration of real-world use cases illustrating the benefits of AI-driven test automation for UiPath
Topics covered:
What is generative AI
Test Automation with generative AI and Open AI.
UiPath integration with generative AI
Speaker:
Deepak Rai, Automation Practice Lead, Boundaryless Group and UiPath MVP
Unlocking Productivity: Leveraging the Potential of Copilot in Microsoft 365, a presentation by Christoforos Vlachos, Senior Solutions Manager – Modern Workplace, Uni Systems
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex ProofsAlex Pruden
This paper presents Reef, a system for generating publicly verifiable succinct non-interactive zero-knowledge proofs that a committed document matches or does not match a regular expression. We describe applications such as proving the strength of passwords, the provenance of email despite redactions, the validity of oblivious DNS queries, and the existence of mutations in DNA. Reef supports the Perl Compatible Regular Expression syntax, including wildcards, alternation, ranges, capture groups, Kleene star, negations, and lookarounds. Reef introduces a new type of automata, Skipping Alternating Finite Automata (SAFA), that skips irrelevant parts of a document when producing proofs without undermining soundness, and instantiates SAFA with a lookup argument. Our experimental evaluation confirms that Reef can generate proofs for documents with 32M characters; the proofs are small and cheap to verify (under a second).
Paper: https://eprint.iacr.org/2023/1886
In his public lecture, Christian Timmerer provides insights into the fascinating history of video streaming, starting from its humble beginnings before YouTube to the groundbreaking technologies that now dominate platforms like Netflix and ORF ON. Timmerer also presents provocative contributions of his own that have significantly influenced the industry. He concludes by looking at future challenges and invites the audience to join in a discussion.
4. CommonJS Everywhere
What does CommonJS Everywhere mean?
Being able to run CommonJS
compliant code in all areas a system.
5. CommonJS Everywhere
What does CommonJS Everywhere mean?
Being able to run CommonJS
compliant code in all areas a system.
Since CommonJS builds on JavaScript we need
JavaScript Everywhere
first!
6. CommonJS Everywhere
What does CommonJS Everywhere mean?
Being able to run CommonJS
compliant code in all areas a system.
Since CommonJS builds on JavaScript we need
JavaScript Everywhere
first!
Where are we at with that and
where does CommonJS fit within this context?
9. JavaScript Everywhere
• All too familiar with Browsers
• Have heard of Server Side JavaScript (thanks to NodeJS)
10. JavaScript Everywhere
• All too familiar with Browsers
• Have heard of Server Side JavaScript (thanks to NodeJS)
• Know about Firebug a Firefox Extension
11. JavaScript Everywhere
• All too familiar with Browsers
• Have heard of Server Side JavaScript (thanks to NodeJS)
• Know about Firebug a Firefox Extension
• Titanium and PhoneGap for Native JS Mobile Apps
12. JavaScript Everywhere
• All too familiar with Browsers
• Have heard of Server Side JavaScript (thanks to NodeJS)
• Know about Firebug a Firefox Extension
• Titanium and PhoneGap for Native JS Mobile Apps
• AppEngineJS for Google App Engine (Java/Rhino)
13. JavaScript Everywhere
• All too familiar with Browsers
• Have heard of Server Side JavaScript (thanks to NodeJS)
• Know about Firebug a Firefox Extension
• Titanium and PhoneGap for Native JS Mobile Apps
• AppEngineJS for Google App Engine (Java/Rhino)
• V8CGI for CGI, FastCGI, Apache module and CLI JS
14. JavaScript Everywhere
• All too familiar with Browsers
• Have heard of Server Side JavaScript (thanks to NodeJS)
• Know about Firebug a Firefox Extension
• Titanium and PhoneGap for Native JS Mobile Apps
• AppEngineJS for Google App Engine (Java/Rhino)
• V8CGI for CGI, FastCGI, Apache module and CLI JS
• GPSEE for Embedding Spidermonkey in C and Shell JS
15. JavaScript Everywhere
• All too familiar with Browsers
• Have heard of Server Side JavaScript (thanks to NodeJS)
• Know about Firebug a Firefox Extension
• Titanium and PhoneGap for Native JS Mobile Apps
• AppEngineJS for Google App Engine (Java/Rhino)
• V8CGI for CGI, FastCGI, Apache module and CLI JS
• GPSEE for Embedding Spidermonkey in C and Shell JS
• RingoJS for Embedding Rhino in Java
16. JavaScript Everywhere
• All too familiar with Browsers
• Have heard of Server Side JavaScript (thanks to NodeJS)
• Know about Firebug a Firefox Extension
• Titanium and PhoneGap for Native JS Mobile Apps
• AppEngineJS for Google App Engine (Java/Rhino)
• V8CGI for CGI, FastCGI, Apache module and CLI JS
• GPSEE for Embedding Spidermonkey in C and Shell JS
• RingoJS for Embedding Rhino in Java
• Narwhal for JavaScriptCore, Node & Rhino
17. JavaScript Everywhere
• All too familiar with Browsers
• Have heard of Server Side JavaScript (thanks to NodeJS)
• Know about Firebug a Firefox Extension
• Titanium and PhoneGap for Native JS Mobile Apps
• AppEngineJS for Google App Engine (Java/Rhino)
• V8CGI for CGI, FastCGI, Apache module and CLI JS
• GPSEE for Embedding Spidermonkey in C and Shell JS
• RingoJS for Embedding Rhino in Java
• Narwhal for JavaScriptCore, Node & Rhino
• Add-on SDK for Restartless & Secure Firefox Extensions
18. JavaScript Everywhere
• All too familiar with Browsers
• Have heard of Server Side JavaScript (thanks to NodeJS)
• Know about Firebug a Firefox Extension
• Titanium and PhoneGap for Native JS Mobile Apps
• AppEngineJS for Google App Engine (Java/Rhino)
• V8CGI for CGI, FastCGI, Apache module and CLI JS
• GPSEE for Embedding Spidermonkey in C and Shell JS
• RingoJS for Embedding Rhino in Java
• Narwhal for JavaScriptCore, Node & Rhino
• Add-on SDK for Restartless & Secure Firefox Extensions
• CouchDB Apps served from a User-facing REST Database
19. JavaScript Everywhere
• All too familiar with Browsers
• Have heard of Server Side JavaScript (thanks to NodeJS)
• Know about Firebug a Firefox Extension
• Titanium and PhoneGap for Native JS Mobile Apps
• AppEngineJS for Google App Engine (Java/Rhino)
• V8CGI for CGI, FastCGI, Apache module and CLI JS
• GPSEE for Embedding Spidermonkey in C and Shell JS
• RingoJS for Embedding Rhino in Java
• Narwhal for JavaScriptCore, Node & Rhino
• Add-on SDK for Restartless & Secure Firefox Extensions
• CouchDB Apps served from a User-facing REST Database
What do all these platforms have in common?
23. JavaScript Everywhere
All these (and many more) platforms:
• Allow us to run JavaScript everywhere
• Maintained by passionate authors and contributors
24. JavaScript Everywhere
All these (and many more) platforms:
• Allow us to run JavaScript everywhere
• Maintained by passionate authors and contributors
• Have energetic and loyal userbases
25. JavaScript Everywhere
All these (and many more) platforms:
• Allow us to run JavaScript everywhere
• Maintained by passionate authors and contributors
• Have energetic and loyal userbases
• Have great ideas
26. JavaScript Everywhere
All these (and many more) platforms:
• Allow us to run JavaScript everywhere
• Maintained by passionate authors and contributors
• Have energetic and loyal userbases
• Have great ideas
• Solve specific problems
27. JavaScript Everywhere
All these (and many more) platforms:
• Allow us to run JavaScript everywhere
• Maintained by passionate authors and contributors
• Have energetic and loyal userbases
• Have great ideas
• Solve specific problems
• Share common problems
28. JavaScript Everywhere
All these (and many more) platforms:
• Allow us to run JavaScript everywhere
• Maintained by passionate authors and contributors
• Have energetic and loyal userbases
• Have great ideas
• Solve specific problems
• Share common problems
That is a great thing!
32. JavaScript Everywhere
BUT all these (and many more) platforms also lack:
• A compatible standard library
(Binary, IO, File, Socket, Event, System, ...)
33. JavaScript Everywhere
BUT all these (and many more) platforms also lack:
• A compatible standard library
(Binary, IO, File, Socket, Event, System, ...)
• Ability to share the same code packages & modules
34. JavaScript Everywhere
BUT all these (and many more) platforms also lack:
• A compatible standard library
(Binary, IO, File, Socket, Event, System, ...)
• Ability to share the same code packages & modules
• Ability to share the same debug tools
35. JavaScript Everywhere
BUT all these (and many more) platforms also lack:
• A compatible standard library
(Binary, IO, File, Socket, Event, System, ...)
• Ability to share the same code packages & modules
• Ability to share the same debug tools
• Ability to set portable standards by themselves
36. JavaScript Everywhere
BUT all these (and many more) platforms also lack:
• A compatible standard library
(Binary, IO, File, Socket, Event, System, ...)
• Ability to share the same code packages & modules
• Ability to share the same debug tools
• Ability to set portable standards by themselves
That is an unfortunate thing!
43. CommonJS: What
• Group of volunteers from many different projects
• Want to: use JavaScript & share code
44. CommonJS: What
• Group of volunteers from many different projects
• Want to: use JavaScript & share code
• A Mailing List
45. CommonJS: What
• Group of volunteers from many different projects
• Want to: use JavaScript & share code
• A Mailing List
• A Wiki with specifications in various stages
46. CommonJS: What
• Group of volunteers from many different projects
• Want to: use JavaScript & share code
• A Mailing List
• A Wiki with specifications in various stages
• Run by group consensus and benevolent dictators
47. CommonJS: What
• Group of volunteers from many different projects
• Want to: use JavaScript & share code
• A Mailing List
• A Wiki with specifications in various stages
• Run by group consensus and benevolent dictators
• Implementation driven
48. CommonJS: What
• Group of volunteers from many different projects
• Want to: use JavaScript & share code
• A Mailing List
• A Wiki with specifications in various stages
• Run by group consensus and benevolent dictators
• Implementation driven
• Always open for membership!
49. CommonJS: What
• Group of volunteers from many different projects
• Want to: use JavaScript & share code
• A Mailing List
• A Wiki with specifications in various stages
• Run by group consensus and benevolent dictators
• Implementation driven
• Always open for membership!
A group of people
working together to realize
an Ecosystem for JavaScript
55. CommonJS: API Process
How does the CommonJS API proposal process work?
1. You pick a JS platform
2. Play with it and tie it into some of your stuff
56. CommonJS: API Process
How does the CommonJS API proposal process work?
1. You pick a JS platform
2. Play with it and tie it into some of your stuff
3. Now you want to do something with a second platform; BUT:
57. CommonJS: API Process
How does the CommonJS API proposal process work?
1. You pick a JS platform
2. Play with it and tie it into some of your stuff
3. Now you want to do something with a second platform; BUT:
• There are no consistent APIs across platforms
58. CommonJS: API Process
How does the CommonJS API proposal process work?
1. You pick a JS platform
2. Play with it and tie it into some of your stuff
3. Now you want to do something with a second platform; BUT:
• There are no consistent APIs across platforms
4. So you ASK and then:
59. CommonJS: API Process
How does the CommonJS API proposal process work?
1. You pick a JS platform
2. Play with it and tie it into some of your stuff
3. Now you want to do something with a second platform; BUT:
• There are no consistent APIs across platforms
4. So you ASK and then:
• Hack something together based on the best you can find or know
60. CommonJS: API Process
How does the CommonJS API proposal process work?
1. You pick a JS platform
2. Play with it and tie it into some of your stuff
3. Now you want to do something with a second platform; BUT:
• There are no consistent APIs across platforms
4. So you ASK and then:
• Hack something together based on the best you can find or know
• Notice sound common ground and improve your implementation
61. CommonJS: API Process
How does the CommonJS API proposal process work?
1. You pick a JS platform
2. Play with it and tie it into some of your stuff
3. Now you want to do something with a second platform; BUT:
• There are no consistent APIs across platforms
4. So you ASK and then:
• Hack something together based on the best you can find or know
• Notice sound common ground and improve your implementation
5. Champion your solution on the CommonJS Wiki & Mailing List
62. CommonJS: API Process
How does the CommonJS API proposal process work?
1. You pick a JS platform
2. Play with it and tie it into some of your stuff
3. Now you want to do something with a second platform; BUT:
• There are no consistent APIs across platforms
4. So you ASK and then:
• Hack something together based on the best you can find or know
• Notice sound common ground and improve your implementation
5. Champion your solution on the CommonJS Wiki & Mailing List
6. Expect to be redirected or have your solution dissected
63. CommonJS: API Process
How does the CommonJS API proposal process work?
1. You pick a JS platform
2. Play with it and tie it into some of your stuff
3. Now you want to do something with a second platform; BUT:
• There are no consistent APIs across platforms
4. So you ASK and then:
• Hack something together based on the best you can find or know
• Notice sound common ground and improve your implementation
5. Champion your solution on the CommonJS Wiki & Mailing List
6. Expect to be redirected or have your solution dissected
7. See the solution grow into a specification with many implementations
64. CommonJS: API Process
How does the CommonJS API proposal process work?
1. You pick a JS platform
2. Play with it and tie it into some of your stuff
3. Now you want to do something with a second platform; BUT:
• There are no consistent APIs across platforms
4. So you ASK and then:
• Hack something together based on the best you can find or know
• Notice sound common ground and improve your implementation
5. Champion your solution on the CommonJS Wiki & Mailing List
6. Expect to be redirected or have your solution dissected
7. See the solution grow into a specification with many implementations
Take pride in helping CommonJS move forward!
69. CommonJS: Standards
What makes a CommonJS specification ratified?
1. A proposal
2. Sufficient discussions
3. Group consensus
70. CommonJS: Standards
What makes a CommonJS specification ratified?
1. A proposal
2. Sufficient discussions
3. Group consensus
4. Draft specification
71. CommonJS: Standards
What makes a CommonJS specification ratified?
1. A proposal
2. Sufficient discussions
3. Group consensus
4. Draft specification
5. Sufficient votes from members with skin in the CommonJS game
72. CommonJS: Standards
What makes a CommonJS specification ratified?
1. A proposal
2. Sufficient discussions
3. Group consensus
4. Draft specification
5. Sufficient votes from members with skin in the CommonJS game
6. At least a handful of implementations
73. CommonJS: Standards
What makes a CommonJS specification ratified?
1. A proposal
2. Sufficient discussions
3. Group consensus
4. Draft specification
5. Sufficient votes from members with skin in the CommonJS game
6. At least a handful of implementations
7. Sufficient time
74. CommonJS: Standards
What makes a CommonJS specification ratified?
1. A proposal
2. Sufficient discussions
3. Group consensus
4. Draft specification
5. Sufficient votes from members with skin in the CommonJS game
6. At least a handful of implementations
7. Sufficient time
Is it worth it?
75. CommonJS: Standards
What makes a CommonJS specification ratified?
1. A proposal
2. Sufficient discussions
3. Group consensus
4. Draft specification
5. Sufficient votes from members with skin in the CommonJS game
6. At least a handful of implementations
7. Sufficient time
Is it worth it?
Absolutely!
81. CommonJS: Status
Where is CommonJS at?
• Modules 1.1/1.1.1 (RATIFIED) MANY implementations YAY!
• Packages 1.0 (RATIFIED) 1.1 in the works
82. CommonJS: Status
Where is CommonJS at?
• Modules 1.1/1.1.1 (RATIFIED) MANY implementations YAY!
• Packages 1.0 (RATIFIED) 1.1 in the works
• Unit Testing 1.0 (RATIFIED) amendment pending
83. CommonJS: Status
Where is CommonJS at?
• Modules 1.1/1.1.1 (RATIFIED) MANY implementations YAY!
• Packages 1.0 (RATIFIED) 1.1 in the works
• Unit Testing 1.0 (RATIFIED) amendment pending
• System 1.0 (pre-RATIFIED) more IMPLEMENTATIONS needed
84. CommonJS: Status
Where is CommonJS at?
• Modules 1.1/1.1.1 (RATIFIED) MANY implementations YAY!
• Packages 1.0 (RATIFIED) 1.1 in the works
• Unit Testing 1.0 (RATIFIED) amendment pending
• System 1.0 (pre-RATIFIED) more IMPLEMENTATIONS needed
• JSGI 0.2/0.3 (PROPOSALS) more IMPLEMENTATIONS needed
85. CommonJS: Status
Where is CommonJS at?
• Modules 1.1/1.1.1 (RATIFIED) MANY implementations YAY!
• Packages 1.0 (RATIFIED) 1.1 in the works
• Unit Testing 1.0 (RATIFIED) amendment pending
• System 1.0 (pre-RATIFIED) more IMPLEMENTATIONS needed
• JSGI 0.2/0.3 (PROPOSALS) more IMPLEMENTATIONS needed
• Many proposals that need discussion and IMPLEMENTATIONS
86. CommonJS: Status
Where is CommonJS at?
• Modules 1.1/1.1.1 (RATIFIED) MANY implementations YAY!
• Packages 1.0 (RATIFIED) 1.1 in the works
• Unit Testing 1.0 (RATIFIED) amendment pending
• System 1.0 (pre-RATIFIED) more IMPLEMENTATIONS needed
• JSGI 0.2/0.3 (PROPOSALS) more IMPLEMENTATIONS needed
• Many proposals that need discussion and IMPLEMENTATIONS
Sufficient for CommonJS Everywhere?
87. CommonJS: Status
Where is CommonJS at?
• Modules 1.1/1.1.1 (RATIFIED) MANY implementations YAY!
• Packages 1.0 (RATIFIED) 1.1 in the works
• Unit Testing 1.0 (RATIFIED) amendment pending
• System 1.0 (pre-RATIFIED) more IMPLEMENTATIONS needed
• JSGI 0.2/0.3 (PROPOSALS) more IMPLEMENTATIONS needed
• Many proposals that need discussion and IMPLEMENTATIONS
Sufficient for CommonJS Everywhere?
Unfortunately NO :(
88. CommonJS: Status
Where is CommonJS at?
• Modules 1.1/1.1.1 (RATIFIED) MANY implementations YAY!
• Packages 1.0 (RATIFIED) 1.1 in the works
• Unit Testing 1.0 (RATIFIED) amendment pending
• System 1.0 (pre-RATIFIED) more IMPLEMENTATIONS needed
• JSGI 0.2/0.3 (PROPOSALS) more IMPLEMENTATIONS needed
• Many proposals that need discussion and IMPLEMENTATIONS
Sufficient for CommonJS Everywhere?
Unfortunately NO :(
What is needed?
91. CommonJS: Needed
What do we need for CommonJS Everywhere?
• Portable unit tests for specifications
92. CommonJS: Needed
What do we need for CommonJS Everywhere?
• Portable unit tests for specifications
• Move to Github for specifications and tests
93. CommonJS: Needed
What do we need for CommonJS Everywhere?
• Portable unit tests for specifications
• Move to Github for specifications and tests
• New interest from new and existing members
94. CommonJS: Needed
What do we need for CommonJS Everywhere?
• Portable unit tests for specifications
• Move to Github for specifications and tests
• New interest from new and existing members
• More implementers seeking CommonJS compliance
95. CommonJS: Needed
What do we need for CommonJS Everywhere?
• Portable unit tests for specifications
• Move to Github for specifications and tests
• New interest from new and existing members
• More implementers seeking CommonJS compliance
• Users demanding CommonJS compliance
96. CommonJS: Needed
What do we need for CommonJS Everywhere?
• Portable unit tests for specifications
• Move to Github for specifications and tests
• New interest from new and existing members
• More implementers seeking CommonJS compliance
• Users demanding CommonJS compliance
• Packages/Mappings/C (PROPOSAL)
98. CommonJS: Needed
What do we need for CommonJS Everywhere?
• Portable unit tests for specifications
• Move to Github for specifications and tests
• New interest from new and existing members
• More implementers seeking CommonJS compliance
• Users demanding CommonJS compliance
• Packages/Mappings/C (PROPOSAL)
99. CommonJS: Needed
What do we need for CommonJS Everywhere?
• Portable unit tests for specifications
• Move to Github for specifications and tests
• New interest from new and existing members
• More implementers seeking CommonJS compliance
• Users demanding CommonJS compliance
• Packages/Mappings/C (PROPOSAL)
• Modules 2.0 (DRAFT) “wrapped” Modules 1.1 + more
100. CommonJS: Needed
What do we need for CommonJS Everywhere?
• Portable unit tests for specifications
• Move to Github for specifications and tests
• New interest from new and existing members
• More implementers seeking CommonJS compliance
• Users demanding CommonJS compliance
• Packages/Mappings/C (PROPOSAL)
• Modules 2.0 (DRAFT) “wrapped” Modules 1.1 + more
• Portable loaders + package managers & registries
101. CommonJS: Needed
What do we need for CommonJS Everywhere?
• Portable unit tests for specifications
• Move to Github for specifications and tests
• New interest from new and existing members
• More implementers seeking CommonJS compliance
• Users demanding CommonJS compliance
• Packages/Mappings/C (PROPOSAL)
• Modules 2.0 (DRAFT) “wrapped” Modules 1.1 + more
• Portable loaders + package managers & registries
• Agreement on low-level APIs
102. CommonJS: Needed
What do we need for CommonJS Everywhere?
• Portable unit tests for specifications
• Move to Github for specifications and tests
• New interest from new and existing members
• More implementers seeking CommonJS compliance
• Users demanding CommonJS compliance
• Packages/Mappings/C (PROPOSAL)
• Modules 2.0 (DRAFT) “wrapped” Modules 1.1 + more
• Portable loaders + package managers & registries
• Agreement on low-level APIs
What is happening in this regard?
140. PINF JavaScript Loader
Types of applications:
• Browser: Websites and application user interfaces (web views)
• NodeJS: Asynchronous network programs
141. PINF JavaScript Loader
Types of applications:
• Browser: Websites and application user interfaces (web views)
• NodeJS: Asynchronous network programs
• V8CGI: PHP-like server apps (via Apache module/CGI)
142. PINF JavaScript Loader
Types of applications:
• Browser: Websites and application user interfaces (web views)
• NodeJS: Asynchronous network programs
• V8CGI: PHP-like server apps (via Apache module/CGI)
• GPSEE: JS scripting for C apps
143. PINF JavaScript Loader
Types of applications:
• Browser: Websites and application user interfaces (web views)
• NodeJS: Asynchronous network programs
• V8CGI: PHP-like server apps (via Apache module/CGI)
• GPSEE: JS scripting for C apps
• RingoJS: JS scripting for Java apps
144. PINF JavaScript Loader
Types of applications:
• Browser: Websites and application user interfaces (web views)
• NodeJS: Asynchronous network programs
• V8CGI: PHP-like server apps (via Apache module/CGI)
• GPSEE: JS scripting for C apps
• RingoJS: JS scripting for Java apps
• Narwhal: JS scripting for Mac OS X apps via JavaScriptCore
145. PINF JavaScript Loader
Types of applications:
• Browser: Websites and application user interfaces (web views)
• NodeJS: Asynchronous network programs
• V8CGI: PHP-like server apps (via Apache module/CGI)
• GPSEE: JS scripting for C apps
• RingoJS: JS scripting for Java apps
• Narwhal: JS scripting for Mac OS X apps via JavaScriptCore
• Jetpack: Restartless Firefox extensions
146. PINF JavaScript Loader
Types of applications:
• Browser: Websites and application user interfaces (web views)
• NodeJS: Asynchronous network programs
• V8CGI: PHP-like server apps (via Apache module/CGI)
• GPSEE: JS scripting for C apps
• RingoJS: JS scripting for Java apps
• Narwhal: JS scripting for Mac OS X apps via JavaScriptCore
• Jetpack: Restartless Firefox extensions
• Titanium: Native mobile, tablet and desktop apps
147. PINF JavaScript Loader
Types of applications:
• Browser: Websites and application user interfaces (web views)
• NodeJS: Asynchronous network programs
• V8CGI: PHP-like server apps (via Apache module/CGI)
• GPSEE: JS scripting for C apps
• RingoJS: JS scripting for Java apps
• Narwhal: JS scripting for Mac OS X apps via JavaScriptCore
• Jetpack: Restartless Firefox extensions
• Titanium: Native mobile, tablet and desktop apps
• AdobeAir: Mobile, desktop and TV apps
148. PINF JavaScript Loader
Types of applications:
• Browser: Websites and application user interfaces (web views)
• NodeJS: Asynchronous network programs
• V8CGI: PHP-like server apps (via Apache module/CGI)
• GPSEE: JS scripting for C apps
• RingoJS: JS scripting for Java apps
• Narwhal: JS scripting for Mac OS X apps via JavaScriptCore
• Jetpack: Restartless Firefox extensions
• Titanium: Native mobile, tablet and desktop apps
• AdobeAir: Mobile, desktop and TV apps
• Wakanda: COMING SOON
149. PINF JavaScript Loader
Types of applications:
• Browser: Websites and application user interfaces (web views)
• NodeJS: Asynchronous network programs
• V8CGI: PHP-like server apps (via Apache module/CGI)
• GPSEE: JS scripting for C apps
• RingoJS: JS scripting for Java apps
• Narwhal: JS scripting for Mac OS X apps via JavaScriptCore
• Jetpack: Restartless Firefox extensions
• Titanium: Native mobile, tablet and desktop apps
• AdobeAir: Mobile, desktop and TV apps
• Wakanda: COMING SOON
Low-level API standards needed!
151. Cross-platform ‘Hello World’
time commonjs --platform node ./HelloWorld
Hello World
real 0m0.157s
time commonjs --platform v8cgi ./HelloWorld
Hello World
real 0m0.089s <--
time commonjs --platform gpsee ./HelloWorld
Hello World
real 0m0.071s <--
time commonjs --platform ringo ./HelloWorld
Hello World
real 0m1.796s
time commonjs --platform narwhal ./HelloWorld
Hello World
real 0m2.246s
152. Cross-platform benchmarks
time commonjs --platform node ./JSLintBenchmark
Running JSLint Benchmark by running JSLint against itself ...
... took: 0.874 seconds
real 0m1.675s
user 0m1.578s
sys 0m0.055s
time commonjs --platform v8cgi ./JSLintBenchmark
Running JSLint Benchmark by running JSLint against itself ...
... took: 0.238 seconds
real 0m0.622s
user 0m0.463s
sys 0m0.033s
Google Chrome: 0.179 Firefox: 0.533
157. Parting Suggestions
1. Use packages to hold modules
2. Store packages by their URI:
~/packages/<URI_NO_PROTOCOL>/<REVISION>
~/packages/github.com/commonjs/stdlib/zipball/v0.1.0 (dev & prod)
~/packages/github.com/commonjs/stdlib/master (dev only)
158. Parting Suggestions
1. Use packages to hold modules
2. Store packages by their URI:
~/packages/<URI_NO_PROTOCOL>/<REVISION>
~/packages/github.com/commonjs/stdlib/zipball/v0.1.0 (dev & prod)
~/packages/github.com/commonjs/stdlib/master (dev only)
3. Define dependencies via mappings in package.json
159. Parting Suggestions
1. Use packages to hold modules
2. Store packages by their URI:
~/packages/<URI_NO_PROTOCOL>/<REVISION>
~/packages/github.com/commonjs/stdlib/zipball/v0.1.0 (dev & prod)
~/packages/github.com/commonjs/stdlib/master (dev only)
3. Define dependencies via mappings in package.json
4. Use and support module loaders and package managers that
support not only modules and packages, but also mappings
160. Parting Suggestions
1. Use packages to hold modules
2. Store packages by their URI:
~/packages/<URI_NO_PROTOCOL>/<REVISION>
~/packages/github.com/commonjs/stdlib/zipball/v0.1.0 (dev & prod)
~/packages/github.com/commonjs/stdlib/master (dev only)
3. Define dependencies via mappings in package.json
4. Use and support module loaders and package managers that
support not only modules and packages, but also mappings
This will allow you to SWAP OUT PACKAGES depending on
the environment your application is running in WITHOUT
HAVING TO WORRY ABOUT CONFLICTS. EVER!
161. Thank you!
Big applause for the
Community!
Slides and links will be made available at:
http://bit.ly/commonjs-everywhere