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.
Handwritten Text Recognition for manuscripts and early printed texts
CommonJS via PINF JavaScript Loader - Introduction
1. CommonJS via BETA
PINF JavaScript Loader
github.com/pinf/loader-js (MIT Licensed)
Introduction
Boston JavaScript - October 14, 2011
by Christoph Dorn
Copyright (c) 2011 Christoph Dorn <christoph@christophdorn.com>
License: Creative Commons Attribution-NonCommercial-ShareAlike 3.0
Various names and trademarks copyright respective parties.
5. About Christoph
• 15+ years experience (web apps & business)
• Self taught developer
• Independent
6. About Christoph
• 15+ years experience (web apps & business)
• Self taught developer
• Independent
• Playing with and integrating toolchains for years
7. About Christoph
• 15+ years experience (web apps & business)
• Self taught developer
• Independent
• Playing with and integrating toolchains for years
• Firebug Working Group (3 years)
8. About Christoph
• 15+ years experience (web apps & business)
• Self taught developer
• Independent
• Playing with and integrating toolchains for years
• Firebug Working Group (3 years)
• Extensions
9. About Christoph
• 15+ years experience (web apps & business)
• Self taught developer
• Independent
• Playing with and integrating toolchains for years
• Firebug Working Group (3 years)
• Extensions
• CommonJS List (2 years)
10. About Christoph
• 15+ years experience (web apps & business)
• Self taught developer
• Independent
• Playing with and integrating toolchains for years
• Firebug Working Group (3 years)
• Extensions
• CommonJS List (2 years)
• Packages & dependency management
11. About Christoph
• 15+ years experience (web apps & business)
• Self taught developer
• Independent
• Playing with and integrating toolchains for years
• Firebug Working Group (3 years)
• Extensions
• CommonJS List (2 years)
• Packages & dependency management
Focus: Toolchain Design & Efficient Workflows
13. What drives me?
I believe a major factor constraining software evolution is
the lack of refactorability as a core design goal of toolchains.
14. What drives me?
I believe a major factor constraining software evolution is
the lack of refactorability as a core design goal of toolchains.
If we can easily change our software in every way we can
focus on figuring out what actually works the best!
15. What drives me?
I believe a major factor constraining software evolution is
the lack of refactorability as a core design goal of toolchains.
If we can easily change our software in every way we can
focus on figuring out what actually works the best!
Building a JavaScript based Toolchain Platform!
16. What drives me?
I believe a major factor constraining software evolution is
the lack of refactorability as a core design goal of toolchains.
If we can easily change our software in every way we can
focus on figuring out what actually works the best!
Building a JavaScript based Toolchain Platform!
github.com/pinf (MIT Licensed)
17. What drives me?
I believe a major factor constraining software evolution is
the lack of refactorability as a core design goal of toolchains.
If we can easily change our software in every way we can
focus on figuring out what actually works the best!
Building a JavaScript based Toolchain Platform!
github.com/pinf (MIT Licensed)
JavaScript: Very expressive and easy to refactor; everyone will know it
18. What drives me?
I believe a major factor constraining software evolution is
the lack of refactorability as a core design goal of toolchains.
If we can easily change our software in every way we can
focus on figuring out what actually works the best!
Building a JavaScript based Toolchain Platform!
github.com/pinf (MIT Licensed)
JavaScript: Very expressive and easy to refactor; everyone will know it
CommonJS: Developers seeking to build a JavaScript Ecosystem
which allows for:
19. What drives me?
I believe a major factor constraining software evolution is
the lack of refactorability as a core design goal of toolchains.
If we can easily change our software in every way we can
focus on figuring out what actually works the best!
Building a JavaScript based Toolchain Platform!
github.com/pinf (MIT Licensed)
JavaScript: Very expressive and easy to refactor; everyone will know it
CommonJS: Developers seeking to build a JavaScript Ecosystem
which allows for:
• Code-sharing, interoperable libraries and portable applications
20. What drives me?
I believe a major factor constraining software evolution is
the lack of refactorability as a core design goal of toolchains.
If we can easily change our software in every way we can
focus on figuring out what actually works the best!
Building a JavaScript based Toolchain Platform!
github.com/pinf (MIT Licensed)
JavaScript: Very expressive and easy to refactor; everyone will know it
CommonJS: Developers seeking to build a JavaScript Ecosystem
which allows for:
• Code-sharing, interoperable libraries and portable applications
• Transferring the power of JavaScript to various parts of a system
21. What drives me?
I believe a major factor constraining software evolution is
the lack of refactorability as a core design goal of toolchains.
If we can easily change our software in every way we can
focus on figuring out what actually works the best!
Building a JavaScript based Toolchain Platform!
github.com/pinf (MIT Licensed)
JavaScript: Very expressive and easy to refactor; everyone will know it
CommonJS: Developers seeking to build a JavaScript Ecosystem
which allows for:
• Code-sharing, interoperable libraries and portable applications
• Transferring the power of JavaScript to various parts of a system
• Seamless refactoring and re-composition of programs
38. Separate Concerns
To achieve our goals I believe we MUST:
• Clearly separate concerns
• Logically (within runtime by using different API methods vs overloading)
39. Separate Concerns
To achieve our goals I believe we MUST:
• Clearly separate concerns
• Logically (within runtime by using different API methods vs overloading)
• Physically (between runtimes and parties)
40. Separate Concerns
To achieve our goals I believe we MUST:
• Clearly separate concerns
• Logically (within runtime by using different API methods vs overloading)
• Physically (between runtimes and parties)
• Link everything by URIs (globally unique namespace)
41. Separate Concerns
To achieve our goals I believe we MUST:
• Clearly separate concerns
• Logically (within runtime by using different API methods vs overloading)
• Physically (between runtimes and parties)
• Link everything by URIs (globally unique namespace)
• Layer control to introduce possibilities of indirection
42. Separate Concerns
To achieve our goals I believe we MUST:
• Clearly separate concerns
• Logically (within runtime by using different API methods vs overloading)
• Physically (between runtimes and parties)
• Link everything by URIs (globally unique namespace)
• Layer control to introduce possibilities of indirection
We are talking about layered re-configurability of a program from
the outside in at any point of the program’s pre-run lifecycle.
43. Separate Concerns
To achieve our goals I believe we MUST:
• Clearly separate concerns
• Logically (within runtime by using different API methods vs overloading)
• Physically (between runtimes and parties)
• Link everything by URIs (globally unique namespace)
• Layer control to introduce possibilities of indirection
We are talking about layered re-configurability of a program from
the outside in at any point of the program’s pre-run lifecycle.
It must be:
44. Separate Concerns
To achieve our goals I believe we MUST:
• Clearly separate concerns
• Logically (within runtime by using different API methods vs overloading)
• Physically (between runtimes and parties)
• Link everything by URIs (globally unique namespace)
• Layer control to introduce possibilities of indirection
We are talking about layered re-configurability of a program from
the outside in at any point of the program’s pre-run lifecycle.
It must be:
• Easy to learn and understand
45. Separate Concerns
To achieve our goals I believe we MUST:
• Clearly separate concerns
• Logically (within runtime by using different API methods vs overloading)
• Physically (between runtimes and parties)
• Link everything by URIs (globally unique namespace)
• Layer control to introduce possibilities of indirection
We are talking about layered re-configurability of a program from
the outside in at any point of the program’s pre-run lifecycle.
It must be:
• Easy to learn and understand
• Restrict only where absolutely necessary
46. Separate Concerns
To achieve our goals I believe we MUST:
• Clearly separate concerns
• Logically (within runtime by using different API methods vs overloading)
• Physically (between runtimes and parties)
• Link everything by URIs (globally unique namespace)
• Layer control to introduce possibilities of indirection
We are talking about layered re-configurability of a program from
the outside in at any point of the program’s pre-run lifecycle.
It must be:
• Easy to learn and understand
• Restrict only where absolutely necessary
• Lightweight and easily implemented
47. Separate Concerns
To achieve our goals I believe we MUST:
• Clearly separate concerns
• Logically (within runtime by using different API methods vs overloading)
• Physically (between runtimes and parties)
• Link everything by URIs (globally unique namespace)
• Layer control to introduce possibilities of indirection
We are talking about layered re-configurability of a program from
the outside in at any point of the program’s pre-run lifecycle.
It must be:
• Easy to learn and understand
• Restrict only where absolutely necessary
• Lightweight and easily implemented