Into The Box 2019 - Keynote Day1
Into The Box 2019 - Keynote Day1
Welcome To
YOUR HOST
ColdFusion & Java, Redefined
May 1 - May 3 | Houston Tx
Modernize or Die!
SPONSORS
SPONSORS
schedule.intothebox.org
PWA
PWA
SPEAKERS
Into The Box 2019 - Keynote Day1
HAPPY BOX @ 6 PM
TWO RAFFLES
✴ Raffle #1
✴ 6pm Before Happy Box
✴ Raffle #2
✴ Friday after last session
✴ Must be Present to win!
PATRONS
patreon.com/ortussolutions
All funds => Open
Source Development
Into The Box 2019 - Keynote Day1
Brad Wood
Jon Clausen
Jorge Reyes Gavin PickinBill Garoutte
Esme Acevedo Eric Peterson Javier QuinteroCarlos Castillo
Saeed BawaneyEdgardo Cabezas
Luis Majano
Manuel Monedero Israel Urquiza
ORTUS CFML MODERNIZATION PLAN
Tooling Community Education
2016
MEMORY LANE
2006
“Study the past if you want to define
the future.” Confucious
2006 2007 2008
✴ Ortus Founded
✴ ColdBox Beta
✴ ColdBox Docs
Daniel Powter

Bad Day
2009
BIRTH - HOPE
✴ Ortus Site
✴ ColdBox Site
✴ ColdBox IRC!!
✴ Plugins
✴ Dashboard
✴ ColdBox Cache
Beyonce 

Irreplaceable
✴ ColdBox 2.6 Series
✴ Integration Testing
✴ REST
✴ 1st Training
✴ BD + Railo Support
✴ 1st Conference
✴ Railo Open Source
Flo Rida
Low
✴ Groovy or CFML
✴ ColdBox Book
✴ Trainings
Commitment
✴ ForgeBox v1
✴ ColdBox 3.x in dev
✴ LogBox, MockBox
✴ CodexWiki
✴ BeanFactory
(WireBox)
✴ Groovy Loaders
✴ cbORM
Black Eyed Peas
Boom Boom Pow
2010 2011 2012
✴ CacheBox Released
✴ Databoss begins
✴ CFBuilder
Integrations
✴ HMVC Modules
✴ ColdBox Support
Services
✴ Migrated to Github
Ke$ha

Tik Tok
2013
INFANCY
✴ Ortus Full Time
✴ WireBox
✴ ColdBox 3
✴ ColdBox Relax
✴ Module Dev
Explodes
✴ BlogBox is born
✴ Bill Garoutte
Adele

Rolling in the deep
✴ ContentBox v1
✴ ColdBox 3.5
✴ Brad Wood
✴ ColdBox Dev Week
✴ New Logos
✴ ColdBox DevBox
✴ Railo Extensions
✴ Online Courses
✴ TestBox Ideas
Gotye fea Kimbra
Somebody that I used
to Know
✴ DataBoss Released
✴ Jira
✴ Into The Box Ideas
✴ Couchbase ❤
✴ ProfileBox Released
✴ TestBox Released
✴ Jorge Reyes
✴ Project Gideon
Begins
Macklemore
Can’t Hold Us
2014 2015 2016
✴ ColdBox 4
Roadmap
✴ CommandBox Beta
✴ CFCouchbase SDK
✴ ContentBox 2.x
✴ TestBox BDD
Training
✴ First ITB
Pharell Williams
Happy
2017
CHILDHOOD
✴ Ortus => Houston
✴ Ortus Dev Week
✴ ColdBox 4
✴ CommandBox v1-2
✴ Gitbook Docs
✴ Gavin Pickin
✴ Lucee Extensions
✴ ForgeBox v2 Begins
Bruno Mars
Uptown Funk
✴ ContentBox v3
✴ CommandBox v3
✴ ColdBox 10 Years!
✴ DocBox
✴ Legacy Initiatives
✴ Jon, Esme, Eric
✴ Patreon Begins
✴ Containers/Cloud
✴ QB Released
Justin Bieber
Lover Yourself
✴ ITB @ Houston
✴ Docker Images
✴ CFConfig
✴ CFML Micro-
Services
✴ ContentBox Docker
✴ CommandBox v4
✴ Elastic Search
✴ Ortus University
Luis Fonsi
Despacito
2018 2019
✴ ContentBox v4
✴ Task Runners
✴ ColdBox v5
✴ cbStreams
✴ RuleBox
✴ Redis Extensions
✴ ForgeBox v3
✴ Quick ORM
Drake
God’s Plan
REBELTEEN
✴ Patreon Growing
✴ Modernize or Die!
✴ Ortus ES born
✴ ???
Ortus El Salvador

8 Developers
The End!
13YEARS GO BY FAST!
Focused Intensity through time
will lead to success!
Focus Areas
Support 

& 

Training
Consulting
&
Mentoring
Staff
Augmentation
Product
Development
New Motto:
MODERNIZE 

OR 

DIE!™
LEGACY PROBLEM
• Gives CFML a bad name
• Security Issues
• Performance Issues
• Employee Issues
• Development Issues
• Finding Developer Issues
• >50% No MVC
• >50% No DI
• >50% NoTesting
Refresh is not validTesting
CFML SHAMING
• No More Excuses
• We have the tools
• Show them off!
• Tell your story!
HOW DO WE….
No Hacks
No Shortcuts
Hard Work
Focused IntensityThroughTime
Into The Box 2019 - Keynote Day1
HARD REALITY
They won’t do it!
Take Ownership
Be Disciplined
Innovate From Within
Create cool tools, apps, solutions
Share!
New Initiatives…
Modernize Or Die!™
Podcasts
Let us be the little voices in your head
Why?
2 FORMATS
modernizeOrDie.io
™ ™
✴ Weekly podcast
✴ Longer format =>30-60 mins
✴ Interviews and discussions with the OrtusTeam & Community members
✴ Discuss Roadmaps and MajorVersion releases of Frameworks,Tools and Modules
✴ Discuss behind the scenes and inside the minds of creators, learn why and not just
what they’re building
✴ Discuss real world applications of CFML and the problems you’re facing and how
you’re solving those problems
✴ Discuss best practices and lessons learned
™
✴ Weekly Podcast ( Possibly live )
✴ Shorter Format => 10-15 mins
✴ Ortus and CFML Community News so you always know about conferences and
releases
✴ Spotlight and share tweets, blogs and video so you don’t miss the good stuff
✴ Share hints and tips - including latestVS Code themes and extensions
✴ Forgebox Module Reviews to make you more efficient.

™
HAPPY BOX - RECORDINGS
OPEN HACKATHONS
Ortus Sponsored 

Prizes, Food and Drinks
Starting with Houston
Targeting Universities
CFML Indoctrination

Fall 2019
SEÑOR SAMUEL
CIRCA 2015
OUR ACTUAL REPOSITORY
Into The Box 2019
(How Coldbox Made Coldfusion Great Again)
Samuel W. Knowlton
sam@inleague.io / @MordantWastrel / @SKnowlton (CFML Slack)
inLeague LLC
Austin, TX
SO ADVANCED
WE’RE HERETO LEARN
(ANDTO SUPPORT ORTUS)
✴ Every part of what we do relies on ColdBox, ColdBox Modules, or
CommandBox
✴ We don’t have a formal relationship with Ortus 

(but we like submitting PRs)
✴ We didn’t sponsor anything
✴ Ortus isn’t paying us or even giving us free ITB tickets to talk to you about
all this
NOTTHAT WE DIDN’T ASK
INLEAGUE:THE DEVELOPMENTVEHICLE
✴ Usually 2-3 Employees, 2-3 contract as-needed
✴ Volunteer youth soccer league management for around 15 individual
leagues of the AmericanYouth Soccer Organization – around 10% of their
players
✴ Admissions and lottery for the Success Academy Charter Schools, a New
York City network of 45+ public schools that admit by lottery (2011-)
✴ 2018 Gross revenue over 7x 2008; Net is over 5x
OWNYOUR PRODUCT (DON’T HATE)
REST HMVC: FROM CF SUMMITTO OUR WALLET
Fall 2017 Today
/**
* scholar.index
* @hint Retrieves a single scholar record matching the scholarID path
parameter.
* @X-author Samuel W. Knowlton (inLeague LLC) <sam@inleague.io>
* @param-scholarID{36} { "name": "scholarID{36}", "type" : "string",
"format": "guid", "in": "path", "required": "true", "description": "Scholar
unique GUID (childID) to be retrieved." }
* @response-404 { "description" : "No scholar found matching specified
GUID.", "schema" : "/resources/api/response.json"}
* @response-200 { "description" : "Record Located", "schema" :
"/resources/api/scholars.schema.json" }
**/
function index( event, rc, prc ) {
var scholarResult = ScholarAPIService.getScholarByGUID( rc.scholarID );
if (! isNull( scholarResult ) ) {
prc.response.setError( true )
.setStatusCode( 404 )
.setStatusText( "NOT FOUND" )
.addMessage( "No scholar found with GUID " & rc.scholarID );
}
if ( !prc.response.getError() ) {
prc.response.setData( fractal.builder()
.item( scholarResult )
.withTransformer( "ScholarAPIJSONTransformer" )
.withSerializer( "SimpleSerializer@cffractal" )
.convert()
);
}
}
/**
* scholar.index
* @hint Retrieves a single scholar record matching the scholarID path
parameter.
* @X-author Samuel W. Knowlton (inLeague LLC) <sam@inleague.io>
* @param-scholarID{36} { "name": "scholarID{36}", "type" : "string",
"format": "guid", "in": "path", "required": "true", "description": "Scholar
unique GUID (childID) to be retrieved." }
* @response-404 { "description" : "No scholar found matching specified
GUID.", "schema" : "/resources/api/response.json"}
* @response-200 { "description" : "Record Located", "schema" :
"/resources/api/scholars.schema.json" }
**/
function index( event, rc, prc ) {
var scholarResult = ScholarAPIService.getScholarByGUID( rc.scholarID );
if (! isNull( scholarResult ) ) {
prc.response.setError( true )
.setStatusCode( 404 )
.setStatusText( "NOT FOUND" )
.addMessage( "No scholar found with GUID " & rc.scholarID );
}
if ( !prc.response.getError() ) {
prc.response.setData( fractal.builder()
.item( scholarResult )
.withTransformer( "ScholarAPIJSONTransformer" )
.withSerializer( "SimpleSerializer@cffractal" )
.convert()
);
}
}
cbSwagger:
Automated
API docs
REST-HMVC
baseHandler
and
Response.cfc
Cffractal:
Transformations
THE /MODULES FOLDER
ISTHE BEST FOLDER
✴ cbStreams: Big Collections
✴ cbSwagger: How DoesThis Work
✴ cbvalidation:Abort/Retry/Fail
✴ cffractal:Act LikeYou Did What the
Client Asked
✴ cfmigrations: Stop Emailing SQL
✴ hyper: DRY HTTPS
✴ mementifier: Input for cffractal and
cbvalidation
✴ cborm: Making CFORM Pretty Good Until
You Get Quick
✴ qb: Like learning a new Clef but you’ll never
go back
✴ s3sdk: Docker Containers Hate Storage and
Gotta Put the Cat Pics Somewhere
✴ Quick:The Special Sauce, aka No More
Bean Factories
✴ rollbar: Bugs grouped by stack trace with
Slack notications and assign them to Andrew
THAT SOUNDS GREAT AND ALL, BUT…
Into The Box 2019 - Keynote Day1
13
STATE OFTHE BOX
✴ 13Years in June
✴ Mature
✴ Established
✴ De facto standard for HMVC
✴ 4.x Series Started in 2015
✴ 5.x Series Started in 2018
✴ 8 Minor Releases
✴ 2 Major Architectural Shifts
✴ Not done yet!
GROWING ECOSYSTEM
✴ 294+ Modules Ecosystem
✴ 60 past 12 months
✴ 384 Closed Pull Requests
✴ 372 box-team members
✴ 568 #box-products members
ForgeBox Modules
0
100
200
300
400
2011 2012 2013 2014 2015 2016 2017 2018 2019
emoji 🤯 & Alexa Modules
Best indicator of success
5 VISION RECAP
✓ Increase Modularity
✓ Containerization
✓ Renderings
✓ Routing + APIs
✓ Ecosystem
Engine Updates
Container Support
Automation
Modularity
API Focus
Handler JSON
New Routing DSL
Named Routes
Resourceful Routes
Named Regions
APITesting
Script Conversions
Auto JSON Payloads
Flash RAM
New HTML Helper
XSS Helper
Fail Fast
cgi.https
HTML Helper
autoMapModels
Router as Interceptor
Rendering
Improvements
Virtual Inheritance
WireBox Errors
ENV Environments
Routing FineTuning
5.0 5.1 5.2
Fail Fast Closures
Multi Domain SES
Concurrent Interceptors
ColdBox Init
Interception
Enhancements
WireBoxTransients Boost
5.3
12 MONTH JOURNEY
Box Injection Namespace
Runnable Named Routes - runRoute()
Elixir v3 Support
Module Interception Points by Core
High i/o logging for LogBox
Streaming Console Appender
CacheBox Re-Write & Modernization
New Interfaces
CacheBox Performance
New multi methods
ResetTimeoutOnAccess => Session Storages
ACF 2018 Compatibilities
Concurrent Lock Optimizations
5.4.0
12 MONTH JOURNEY
CONTAINERIZATION
✴ Environment Settings
✴ Coldbox.cfc (Application Wide)
✴ ModuleConfig.cfc (Modules)
✴ WireBox Binder
✴ IntegrationTests
✴ Environment EnvironmentVariable
✴ ENVIRONMENT=development
getSystemSetting( key defaultValue )
getSystemProperty( key, defaultValue )
getEnv( key, defaultValue )
RENDERINGS
function index( event, rc, prc ){
return complexData;
}
function index( event, rc, prc ) renderdata=xml{
return complexData;
}
function index( event, rc, prc ) renderdata=pdf{
return complexData;
}
Native JSON + Auto Marshalling
component renderdata="json"
Handler Defaults
AUTO JSON PAYLOADS
{
"name" : "Jon Clausen",
"type" : "awesomeness",
"data" : [ 1,2,3 ]
}
JSON Payload
RCVariables
✴ name = “Jon Clausen”
✴ type = “awesomeness”
✴ data = [ 1, 2, 3 ]
FLUENT ROUTING DSL
✴ Complete Rewrite
✴ Router.cfc
✴ Named Routes
✴ Multi-Domain
✴ Automatic BaseURLs
✴ Domain Routing
✴ Redirects
✴ HMVC - Modularization
App

Router
Module

Router
Module

Router
Module

Router
Module

Router
Module

Router
Module

Router
Module

Router
Module

Router
Module

Router
ROUTING RESPONSES
route( "/luis2/:lname" )
  .toResponse( ( event, rc, prc ) => {
        return "<h1>Hello from lambda land: #arguments.rc.lname#</h1>";
   } );
route( "/contacts", ( event, rc, prc ) => {
event.paramValue( "search", "" )
var contacts = getInstance( "ContactsService" ).list( rc.search );
return contacts;
} );
RESOURCEFUL ROUTES
Verb Route Event Purpose
GET /photos photos.index Display a list of photos
GET /photos/new photos.new Return an HTML form for creating a new photo
POST /photos photos.create Create a new photo
GET /photos/:id photos.show Display a specific photo
GET /photos/:id/edit photos.edit Return an HTML form for editing a photo
POST/PUT/PATCH /photos/:id photos.update Update a specific photo
DELETE /photos/:id photos.delete Delete a specific photo
✴ Automatic Resource Routing
✴ resources( “photos” )
API INTEGRATIONTESTING
✴ request( route, params, headers, method=“get” )
✴ GET( route, params, headers, method=get )
✴ POST( route, params, headers, method=get )
✴ PUT( route, params, headers, method=get )
✴ PATCH( route, params, headers, method=get )
✴ DELETE( route, params, headers, method=get )
BOX INJECTION DSL
✴ coldbox:setting:name -> box:setting:name
✴ coldbox:moduleConfig:module -> box:moduleConfig:module
✴ coldbox:moduleService -> box:moduleService
✴ etc….
?
FUNKYNESS IS FORMING
4YEAR ROADMAP
*2019
5.x
6.x Alpha
2020
6 RC
6 Final
5 LTS
2021
6.x
7.x Alpha
5 LTS
2022
6 LTS
7.x RC
7.x Final
6 VISION
✓ CFML Engine Support + Modernization
✓ Rendering Engines
✓ API Development
✓ Streams + Functional
✓ Concurrency
Mr Funky!
√ Streams
√ Optionals
Futures (Dev)
cbRx
ColdBox 6-7
✴ Streams will be core
✴ CacheBox
✴ WireBox
✴ LogBox
✴ Everywhere!!!
✴ Optionals will be core
>Functional Asynchronicity Reactivity
ColdBox 6-7
✴ View Rendering Engines
✴ ColdBoxViews
✴ CBT
✴ InertiaJS
✴ ServerSide JS
✴ Much More…
IRenderingEngine
CBT
ColdBoxViews
InertiaJS
ServerSide JS
Custom
ColdBox 6-7
✴ WireBox NEXT
✴ Script + Modernization
✴ Better debugging and error messages
✴ Streams Integration
✴ Metadata Storage Streamlining
✴ Metadata + Mapping Pre-Optimizations
✴ Classloading Core (javaloader)
✴ Concurrent Singleton Initializations
✴ Lazy Properties
✴ Optional Functions
ColdBox 6-7
✴ RenderdataTransformers
✴ New/OverrideTypes
✴ Custom JSON Serializer
✴ Vue components as Web Components
✴ Angular classes as Web Components
IRenderingType
xml
json
excel
pdf
vue
✴ CacheBox Functional DSL
✴ Optionals for results
✴ Streams Integration
✴ Parallel
✴ Retrievals/Sets/Lookups/Reaping
✴ Reactivity?
ColdBox 6-7
✴ cbFutures => CompletableFuture (Java)
✴ async function annotations for models
✴ runAsyncEvent(), runAsyncRoute()
✴ announceAsyncInterception()
✴ Reactive events?
ColdBox 6-7
ColdBox QL
✴ ColdBox REST Query Language
✴ ColdBox Routing
✴ Abstract the QL to a consistent 

Search Criteria API
✴ Leverage hibernate, quick, etc for querying
✴ Mementifier for state transformation
✴ ColdBox push the results
✴ Design & Research Phase
✴ 2020
HTTP/S
ColdBox QL
Search Criteria
Quick cbORM
Mementier
JSON Results
/users?q=lastName:doe,age>25
/users?q=firstName:joe*,age<25,isActive!true
/users?q=slug:~box,isActive:true,name=*box
WE ARE STILL EXCITED
BOX EVANGELIST
Into The Box 2019 - Keynote Day1
STATE OF COMMAND
✴ 5Years in June
✴ Our first server product
✴ 157 JIRA tickets resolved
✴ 32 merged pull requests
✴ 19,400+ Downloads
✴ 4.x Series 2018
✴ 6 Minor Releases
Major rewrite of 

CLI engine loader

Lucee 5 and JSR-223
ImprovedTask Runners
Private packages
Revamped Server Logs
ColdBox 5 Support
Bullet train shell
New UI for progress
bars and interactive jobs

256 colors

Syntax highlighting in
REPL

Interactive Mode for
CI
Load ad-hoc modules
in tasks
Smaller binary size
Tab Completion
Better exit codes
S3 Endpoint
Updated ServerTray
4.0 4.1 4.2
Task RunnerTarget Deps
Gzip Compression
forEach Command
Prelim Java 9-11 Support
4.3
12 MONTH JOURNEY
Enhanced directory
watchers
coldbox reinit
JSON color
highlighting
Gist Endpoint
OpenJDK
Shell Environment
Vars
ForgeBox Enterprise
Bundled JRE to
OpenJDK
TestBox code
coverage
Env var expansions in
REPL
Tab complete for
private packages
Exit codes forTask
Runners
4.4 4.5 4.6
12 MONTH JOURNEY
CFMLTRANSFORMED
✴ Don’t need to spin up a server to run CFML
✴ Automate builds and processes with CFML from the command line
✴ Simpler local development
✴ Scripted, consistent deployments
✴ Easier CI/CD
✴ New CFML-based CLI utilities like:
✴ fixinator, codechecker, cfformat, and cfscriptme
=> APP/WEB SERVER
Undertow
Runwar
Custom
Modules
Core
Modules
Module Service
L

o

a

d

e

r
WireBox
✴ Full Production Web Server
✴ Full Production Java EE Servlet 4.0
✴ Non Blocking I/O
✴ High Performance
✴ Small Binary
✴ HTTP/2 Support
✴ HTTPS Support
✴ Web Socket Support
GROWINGTO BECOMETHE

#1 APP/WEB SERVER 

OF CHOICE
✴ 36,600+ Adobe engine downloads
✴ 36,500+ Lucee engine downloads
✴ Powering local development
✴ Powering Docker containers
✴ Powering productionVMs
Ortus wants to strengthen this area and support our users
✴ POSS CommandBox
✴ POSS Images
✴ Automatic JDK Management
✴ POSS Modules
✴ DotEnv, Host Updater,
CFCong, Ngrok,
CodeChecker, BulletTrain
✴ Exclusive Modules
✴ STIG CFML Lockdown
✴ Audit Command
✴ Service Manager
✴ High Priority Fixes
✴ Support + Mentorship
Now!
Runs jQuery!
Developer
License
$29/month
Server
License
$39/Month
Unlimited JVM
Instances
Unlimited
Containers
JBoss,Resin, Glasssh,Weblogic,
Websphere

$600/month/avg
WHAT’S COMING!
4YEAR ROADMAP
*2019
4.x
5.x Alpha
2020
5 RC
5 Final
4 LTS
2021
5.x
6.x Alpha
4 LTS
2022
5 LTS
6.x RC
6.x Final
COMMANDBOX IMAGES
Source
Code
CFCong Settings
Lucee Extensions
CFML Engine
server.json
D

o

c

k

e

r
environment
$ server start image=slug@version
FUTURE EPICS
✴ More JVM Languages
✴ Java, Kotlin, Groovy, Scala, JRuby, etc…
✴ Maven Endpoint
✴ Easy Websockets
✴ More Portability
✴ More Performance
✴ Better Security (ip restrictions, waf, etc)
✴ Undertow v3 (Netty vs XNIO)
✴ More ASCII art!
✴ Strategic Partnerships….
• More JVM Languages
• Java, Kotlin, Groovy, Scala, JRuby, etc…
• Maven Endpoint
• Easy Websockets
• More Portability
• More Performance
• Better Security (ip restrictions, waf, etc)
• Undertow v3 (Netty vs XNIO)
• More ASCII art!
• Strategic Partnerships….
FUTURE EPICS
SEÑOR SECURITY
BUILDING ON ORTUS TOOLS
Pete Freitagfoundeo
FOUNDEO 💚 ORTUS TOOLS
➤ CommandBox
➤ FORGEBOX
➤ TestBox
➤ ColdBox
➤ Ortus Docker Images
SOME GAPS IN CFML SECURITY TOOLING
➤ No one was keeping track of known vulnerable CFML libraries
➤ No tools could detect vulnerable CFML libraries
➤ Should be able to check for vulnerable dependencies
➤ Existing CFML code security tools, worked poorly, expensive,
and CI workflows impossible or difficult.
“NEARLY 60% OF BREACHES
DUE TO UN-PATCHED
VULNERABILITY
-According to a ServiceNow Survey
FIXINATOR
Stop. Demo Time.
FIXINATOR
➤ Client implemented on top of CommandBox as a command
➤ Scans for known vulnerable third party CFML, Java & JS libraries
➤ Scans your code for security issues as well
WHY COMMANDBOX? SIMPLE INSTALLATION
box install fixinator
WHY COMMANDBOX? PRODUCTIVITY
➤ If you know CFML you can write your own CLI tools
➤ The command API is easy to use
➤ Has everything you could possibly want
WHY COMMANDBOX? SIMPLIFIED PRODUCT STRATEGY
➤ Once I decided to implement as a command
➤ Got to market quickly
➤ Worked on the scanner on and off for over 10 years
➤ Didn’t need a GUI
➤ Simplified the CI integration story
➤ Each CI integration is just a few lines of code
FIXINATOR COMMUNITY EDITION
➤ Complimentary license keys made available to 

ALL open source CFML projects!
➤ Free scanning of box.json files for everyone!
COMING SOON
➤ Fixinator private package scanning in
➤ FORGEBOX Pro
➤ FORGEBOX Enterprise
MO BOX!!
Into The Box 2019 - Keynote Day1
✴ Feedback driven journey
✴ Lots of customer feedback
✴ Very Busy (12 Months)
✴ 14 ForgeBoxVersion Releases
✴ 99 New Users
✴ 143 New Packages
✴ 1,508 NewVersions
✴ 60,127 Package Installs
STATE OF FORGEBOX
STATE OF FORGEBOX
ForgeBox Users
0
150
300
450
600
2012 2013 2014 2015 2016 2017 2018 2019
STATE OF FORGEBOX
New Packages
0
175
350
525
700
2012 2013 2014 2015 2016 2017 2018 2019
STATE OF FORGEBOX
New PackageVersions
0
1250
2500
3750
5000
2012 2013 2014 2015 2016 2017 2018 2019
Lucee Extensions
Package Storage
Private Packages
Search
Enhancements
Badges
S3 SDK
UI Updates
Caching Updates
Collaborators
Slug Requirements
Emojis 🤩
New UI
Enterprise Support
S3 Multi Region
ColdBox 5
GDPR
ColdBox Elixir
Vue Integration
Drop API Compat
VersionsTab
Storage Rewrite
BetterValidation
Mementier API
3.0 3.1 4.0
UI Updates
Collaborators Invite/
Reject Updates
4.1
12 MONTH JOURNEY
CLI Storage Fixes
Layout
Consolidations
Enterprise Logs
Enterprise Cache
Actions
Slug Search
Mementier Updates
Version Outputs
4.2 4.3 4.4
Licensing Constraints
Responsiveness
Enterprise News Banners
Documentation
Search Improvements
Pagination UI
Digital Ocean Support
Clickjacking
Session Rotations
Enterprise Google
Analytics
Admin Dashboard Stats
4.5
12 MONTH JOURNEY
/@user
API data grooming
API Secure
Annotations
New User
Dashboards
VersionTab Updates
DependencyViewer
Badges
4.6 4.7
12 MONTH JOURNEY
NEW MODERN UI
PACKAGE STORAGE
✴ “location” = “forgeboxStorage”
✴ForgeBox stores your software
✴Versioning Included
✴Private and Secure Storage
✴US and EU Mirrors
✴FREE for all open source packages (10GB)
✴PRO Accounts (50GB)
PRIVATE PACKAGES
✴ PRO Accounts
✴ Unlimited Packages
✴ Storage Included
✴ Unlimited Collaborations
✴ Free for now
package init
package set private=true
package set slug=my-slug@forgeBoxUser
etc...
publish
install slug@forgeboxUser
install slug@forgeboxUser@be
install slug@forgeboxUser@1.0.0
LUCEE EXTENSION PROVIDER
https://www.forgebox.io
publish
CommandBox> package set type=lucee-extensions
CommandBox> publish
ENTERPRISE IS HERE
FEATURES
✴ Secure + Isolated private registry
✴ SSL + WAF
✴ Unlimited public/private packages
✴ 250GB Package Storage + CDN
✴ Custom CommandBox Namespace
✴ Unlimited Collaborators
✴ Custom Access Rules
✴ Custom Security, Roles and Permissions
✴ Fixinator & Package Auditing (*Coming)
EASYTO USE
forgebox endpoint register abc https://abc.forgebox.io/api/v1
forgebox login endpointName=abc
Register Endpoint
Login
forgebox install abc:coldbox
Use
BENEFITS
✴ Scalable Binary Storage
✴ Detect outdated packages
✴ Faster updates
✴ No more repository cloning or full downloads
✴ Fast Semver evaluations
✴ Faster Downloads (CDN)
✴ Security
✴ No more source code access
✴ Granular installation/publishing access
✴ Security Audits and Fixinator via Foundeo
LEARN MORE
Brad Wood
Javier Quintero
DAY 2 - BOX ROOM
WHAT’S COMING!
ROADMAP
Q2
Pro Subscriptions
Swagger Docs
Password Meters
Password Rules
Q3
Security Audits
Fixinator
Analytics
Two-Factor Auth
Q4
Teams
Collaboration
Managers
2020
PackageTransfers
Notications
Web hooks
Code Quality
Code Metrics
Search Contexts
MOLDTHE CFML FUTURE
THANKS & ENJOY!

More Related Content

PDF
Welcome to planet Fintlewoodlewix - SmashingConf NYC 2014
PDF
Smashingconf nyc-final
PDF
Into The Box 2018 Ortus Keynote
PPTX
An API Your Parents Would Be Proud Of
PDF
Into The Box 2023 Keynote day 2
PDF
Ck12 preso macul
PDF
Bits and Pieces from the UPEI Experience
PDF
[In Control 2010] HTML5
Welcome to planet Fintlewoodlewix - SmashingConf NYC 2014
Smashingconf nyc-final
Into The Box 2018 Ortus Keynote
An API Your Parents Would Be Proud Of
Into The Box 2023 Keynote day 2
Ck12 preso macul
Bits and Pieces from the UPEI Experience
[In Control 2010] HTML5

Similar to Into The Box 2019 - Keynote Day1 (20)

PDF
Into the Box 2024 - Keynote Day 2 Slides.pdf
KEY
JavaScript For People Who Don't Code
ODP
700 Tons of Code Later
PDF
JCConf 2016 - Google Dataflow 小試
PDF
ITB2017 - Keynote
PPTX
The Expanding Nature of SEO (MarTech 2016)
KEY
Building Semantic HTML tables
PDF
Being Buck Woody - PASS Summit 2014 Edition
PDF
05092019 The Battle of the IDEs by Ko Turk at the AlmereJUG / Conspect
PDF
Serverless Finland Meetup 16.11.2016: Messenger Bot Workshop
PDF
Elastic Data Analytics Platform @Datadog
PDF
Coding for beginners - Future Assembly 2016
PDF
Economies of Scaling Software
PPT
Library 2.0: A Roadmap
PPTX
Continuous integration by RĂŠmy Virin
PDF
From Hacker to Programmer (w/ Webpack, Babel and React)
PDF
Failing @ Scaling: Don’t panic, and carry a towel!
PDF
Put a little Backbone in your WordPress vs. 3
PDF
Getting Things Done at Scale
PPT
Wordpress Meetup 2 23 10
Into the Box 2024 - Keynote Day 2 Slides.pdf
JavaScript For People Who Don't Code
700 Tons of Code Later
JCConf 2016 - Google Dataflow 小試
ITB2017 - Keynote
The Expanding Nature of SEO (MarTech 2016)
Building Semantic HTML tables
Being Buck Woody - PASS Summit 2014 Edition
05092019 The Battle of the IDEs by Ko Turk at the AlmereJUG / Conspect
Serverless Finland Meetup 16.11.2016: Messenger Bot Workshop
Elastic Data Analytics Platform @Datadog
Coding for beginners - Future Assembly 2016
Economies of Scaling Software
Library 2.0: A Roadmap
Continuous integration by RĂŠmy Virin
From Hacker to Programmer (w/ Webpack, Babel and React)
Failing @ Scaling: Don’t panic, and carry a towel!
Put a little Backbone in your WordPress vs. 3
Getting Things Done at Scale
Wordpress Meetup 2 23 10
Ad

More from Ortus Solutions, Corp (20)

PDF
BoxLang in Japan - The Future is Dynamic.pdf
PDF
BoxLang Dynamic AWS Lambda - Japan Edition
PDF
TheFutureIsDynamic-BoxLang witch Luis Majano.pdf
PDF
June Webinar: BoxLang-Dynamic-AWS-Lambda
PDF
BoxLang-Dynamic-AWS-Lambda by Luis Majano.pdf
PDF
What's-New-with-BoxLang-Brad Wood.pptx.pdf
PDF
Getting Started with BoxLang - CFCamp 2025.pdf
PDF
CFCamp2025 - Keynote Day 1 led by Luis Majano.pdf
PDF
What's New with BoxLang Led by Brad Wood.pdf
PDF
Vector Databases and the BoxLangCFML Developer.pdf
PDF
Using cbSSO in a ColdBox App Led by Jacob Beers.pdf
PDF
Use JSON to Slash Your Database Performance.pdf
PDF
Portable CI wGitLab and Github led by Gavin Pickin.pdf
PDF
Tame the Mesh An intro to cross-platform tracing and troubleshooting.pdf
PDF
Supercharging CommandBox with Let's Encrypt.pdf
PDF
Spice up your site with cool animations using GSAP..pdf
PDF
Passkeys and cbSecurity Led by Eric Peterson.pdf
PDF
Legacy Code Nightmares , Hellscapes, and Lessons Learned.pdf
PDF
Integrating the OpenAI API in Your Coldfusion Apps.pdf
PDF
Hidden Gems in FusionReactor for BoxLang, ACF, and Lucee Users.pdf
BoxLang in Japan - The Future is Dynamic.pdf
BoxLang Dynamic AWS Lambda - Japan Edition
TheFutureIsDynamic-BoxLang witch Luis Majano.pdf
June Webinar: BoxLang-Dynamic-AWS-Lambda
BoxLang-Dynamic-AWS-Lambda by Luis Majano.pdf
What's-New-with-BoxLang-Brad Wood.pptx.pdf
Getting Started with BoxLang - CFCamp 2025.pdf
CFCamp2025 - Keynote Day 1 led by Luis Majano.pdf
What's New with BoxLang Led by Brad Wood.pdf
Vector Databases and the BoxLangCFML Developer.pdf
Using cbSSO in a ColdBox App Led by Jacob Beers.pdf
Use JSON to Slash Your Database Performance.pdf
Portable CI wGitLab and Github led by Gavin Pickin.pdf
Tame the Mesh An intro to cross-platform tracing and troubleshooting.pdf
Supercharging CommandBox with Let's Encrypt.pdf
Spice up your site with cool animations using GSAP..pdf
Passkeys and cbSecurity Led by Eric Peterson.pdf
Legacy Code Nightmares , Hellscapes, and Lessons Learned.pdf
Integrating the OpenAI API in Your Coldfusion Apps.pdf
Hidden Gems in FusionReactor for BoxLang, ACF, and Lucee Users.pdf
Ad

Recently uploaded (20)

PDF
zbrain.ai-Scope Key Metrics Configuration and Best Practices.pdf
PDF
Early detection and classification of bone marrow changes in lumbar vertebrae...
PDF
“The Future of Visual AI: Efficient Multimodal Intelligence,” a Keynote Prese...
PDF
Connector Corner: Transform Unstructured Documents with Agentic Automation
PDF
Altius execution marketplace concept.pdf
PDF
Planning-an-Audit-A-How-To-Guide-Checklist-WP.pdf
 
PDF
Transform-Your-Streaming-Platform-with-AI-Driven-Quality-Engineering.pdf
PDF
A hybrid framework for wild animal classification using fine-tuned DenseNet12...
PDF
Advancing precision in air quality forecasting through machine learning integ...
PDF
ment.tech-Siri Delay Opens AI Startup Opportunity in 2025.pdf
PPTX
Internet of Everything -Basic concepts details
PPTX
SGT Report The Beast Plan and Cyberphysical Systems of Control
PDF
4 layer Arch & Reference Arch of IoT.pdf
PDF
Decision Optimization - From Theory to Practice
PDF
Ensemble model-based arrhythmia classification with local interpretable model...
PDF
CEH Module 2 Footprinting CEH V13, concepts
PDF
SaaS reusability assessment using machine learning techniques
PDF
AI.gov: A Trojan Horse in the Age of Artificial Intelligence
PDF
Transform-Your-Supply-Chain-with-AI-Driven-Quality-Engineering.pdf
PDF
substrate PowerPoint Presentation basic one
zbrain.ai-Scope Key Metrics Configuration and Best Practices.pdf
Early detection and classification of bone marrow changes in lumbar vertebrae...
“The Future of Visual AI: Efficient Multimodal Intelligence,” a Keynote Prese...
Connector Corner: Transform Unstructured Documents with Agentic Automation
Altius execution marketplace concept.pdf
Planning-an-Audit-A-How-To-Guide-Checklist-WP.pdf
 
Transform-Your-Streaming-Platform-with-AI-Driven-Quality-Engineering.pdf
A hybrid framework for wild animal classification using fine-tuned DenseNet12...
Advancing precision in air quality forecasting through machine learning integ...
ment.tech-Siri Delay Opens AI Startup Opportunity in 2025.pdf
Internet of Everything -Basic concepts details
SGT Report The Beast Plan and Cyberphysical Systems of Control
4 layer Arch & Reference Arch of IoT.pdf
Decision Optimization - From Theory to Practice
Ensemble model-based arrhythmia classification with local interpretable model...
CEH Module 2 Footprinting CEH V13, concepts
SaaS reusability assessment using machine learning techniques
AI.gov: A Trojan Horse in the Age of Artificial Intelligence
Transform-Your-Supply-Chain-with-AI-Driven-Quality-Engineering.pdf
substrate PowerPoint Presentation basic one

Into The Box 2019 - Keynote Day1

  • 5. ColdFusion & Java, Redefined May 1 - May 3 | Houston Tx Modernize or Die! SPONSORS SPONSORS
  • 9. HAPPY BOX @ 6 PM
  • 10. TWO RAFFLES ✴ Raffle #1 ✴ 6pm Before Happy Box ✴ Raffle #2 ✴ Friday after last session ✴ Must be Present to win!
  • 13. Brad Wood Jon Clausen Jorge Reyes Gavin PickinBill Garoutte Esme Acevedo Eric Peterson Javier QuinteroCarlos Castillo Saeed BawaneyEdgardo Cabezas Luis Majano Manuel Monedero Israel Urquiza
  • 14. ORTUS CFML MODERNIZATION PLAN Tooling Community Education 2016
  • 15. MEMORY LANE 2006 “Study the past if you want to dene the future.” Confucious
  • 16. 2006 2007 2008 ✴ Ortus Founded ✴ ColdBox Beta ✴ ColdBox Docs Daniel Powter
 Bad Day 2009 BIRTH - HOPE ✴ Ortus Site ✴ ColdBox Site ✴ ColdBox IRC!! ✴ Plugins ✴ Dashboard ✴ ColdBox Cache Beyonce 
 Irreplaceable ✴ ColdBox 2.6 Series ✴ Integration Testing ✴ REST ✴ 1st Training ✴ BD + Railo Support ✴ 1st Conference ✴ Railo Open Source Flo Rida Low ✴ Groovy or CFML ✴ ColdBox Book ✴ Trainings Commitment ✴ ForgeBox v1 ✴ ColdBox 3.x in dev ✴ LogBox, MockBox ✴ CodexWiki ✴ BeanFactory (WireBox) ✴ Groovy Loaders ✴ cbORM Black Eyed Peas Boom Boom Pow
  • 17. 2010 2011 2012 ✴ CacheBox Released ✴ Databoss begins ✴ CFBuilder Integrations ✴ HMVC Modules ✴ ColdBox Support Services ✴ Migrated to Github Ke$ha
 Tik Tok 2013 INFANCY ✴ Ortus Full Time ✴ WireBox ✴ ColdBox 3 ✴ ColdBox Relax ✴ Module Dev Explodes ✴ BlogBox is born ✴ Bill Garoutte Adele
 Rolling in the deep ✴ ContentBox v1 ✴ ColdBox 3.5 ✴ Brad Wood ✴ ColdBox Dev Week ✴ New Logos ✴ ColdBox DevBox ✴ Railo Extensions ✴ Online Courses ✴ TestBox Ideas Gotye fea Kimbra Somebody that I used to Know ✴ DataBoss Released ✴ Jira ✴ Into The Box Ideas ✴ Couchbase ❤ ✴ ProleBox Released ✴ TestBox Released ✴ Jorge Reyes ✴ Project Gideon Begins Macklemore Can’t Hold Us
  • 18. 2014 2015 2016 ✴ ColdBox 4 Roadmap ✴ CommandBox Beta ✴ CFCouchbase SDK ✴ ContentBox 2.x ✴ TestBox BDD Training ✴ First ITB Pharell Williams Happy 2017 CHILDHOOD ✴ Ortus => Houston ✴ Ortus Dev Week ✴ ColdBox 4 ✴ CommandBox v1-2 ✴ Gitbook Docs ✴ Gavin Pickin ✴ Lucee Extensions ✴ ForgeBox v2 Begins Bruno Mars Uptown Funk ✴ ContentBox v3 ✴ CommandBox v3 ✴ ColdBox 10 Years! ✴ DocBox ✴ Legacy Initiatives ✴ Jon, Esme, Eric ✴ Patreon Begins ✴ Containers/Cloud ✴ QB Released Justin Bieber Lover Yourself ✴ ITB @ Houston ✴ Docker Images ✴ CFCong ✴ CFML Micro- Services ✴ ContentBox Docker ✴ CommandBox v4 ✴ Elastic Search ✴ Ortus University Luis Fonsi Despacito
  • 19. 2018 2019 ✴ ContentBox v4 ✴ Task Runners ✴ ColdBox v5 ✴ cbStreams ✴ RuleBox ✴ Redis Extensions ✴ ForgeBox v3 ✴ Quick ORM Drake God’s Plan REBELTEEN ✴ Patreon Growing ✴ Modernize or Die! ✴ Ortus ES born ✴ ??? Ortus El Salvador
 8 Developers
  • 20. The End! 13YEARS GO BY FAST! Focused Intensity through time will lead to success!
  • 21. Focus Areas Support 
 & 
 Training Consulting & Mentoring Staff Augmentation Product Development
  • 22. New Motto: MODERNIZE 
 OR 
 DIE!™
  • 23. LEGACY PROBLEM • Gives CFML a bad name • Security Issues • Performance Issues • Employee Issues • Development Issues • Finding Developer Issues • >50% No MVC • >50% No DI • >50% NoTesting Refresh is not validTesting
  • 24. CFML SHAMING • No More Excuses • We have the tools • Show them off! • Tell your story!
  • 26. No Hacks No Shortcuts Hard Work Focused IntensityThroughTime
  • 28. HARD REALITY They won’t do it! Take Ownership Be Disciplined Innovate From Within Create cool tools, apps, solutions Share!
  • 29. New Initiatives… Modernize Or Die!™ Podcasts Let us be the little voices in your head
  • 30. Why?
  • 32. ✴ Weekly podcast ✴ Longer format =>30-60 mins ✴ Interviews and discussions with the OrtusTeam & Community members ✴ Discuss Roadmaps and MajorVersion releases of Frameworks,Tools and Modules ✴ Discuss behind the scenes and inside the minds of creators, learn why and not just what they’re building ✴ Discuss real world applications of CFML and the problems you’re facing and how you’re solving those problems ✴ Discuss best practices and lessons learned ™
  • 33. ✴ Weekly Podcast ( Possibly live ) ✴ Shorter Format => 10-15 mins ✴ Ortus and CFML Community News so you always know about conferences and releases ✴ Spotlight and share tweets, blogs and video so you don’t miss the good stuff ✴ Share hints and tips - including latestVS Code themes and extensions ✴ Forgebox Module Reviews to make you more efcient.
 ™
  • 34. HAPPY BOX - RECORDINGS
  • 35. OPEN HACKATHONS Ortus Sponsored 
 Prizes, Food and Drinks Starting with Houston Targeting Universities CFML Indoctrination
 Fall 2019
  • 39. Into The Box 2019 (How Coldbox Made Coldfusion Great Again) Samuel W. Knowlton [email protected] / @MordantWastrel / @SKnowlton (CFML Slack) inLeague LLC Austin, TX
  • 41. WE’RE HERETO LEARN (ANDTO SUPPORT ORTUS) ✴ Every part of what we do relies on ColdBox, ColdBox Modules, or CommandBox ✴ We don’t have a formal relationship with Ortus 
 (but we like submitting PRs) ✴ We didn’t sponsor anything ✴ Ortus isn’t paying us or even giving us free ITB tickets to talk to you about all this
  • 43. INLEAGUE:THE DEVELOPMENTVEHICLE ✴ Usually 2-3 Employees, 2-3 contract as-needed ✴ Volunteer youth soccer league management for around 15 individual leagues of the AmericanYouth Soccer Organization – around 10% of their players ✴ Admissions and lottery for the Success Academy Charter Schools, a New York City network of 45+ public schools that admit by lottery (2011-) ✴ 2018 Gross revenue over 7x 2008; Net is over 5x
  • 45. REST HMVC: FROM CF SUMMITTO OUR WALLET Fall 2017 Today
  • 46. /** * scholar.index * @hint Retrieves a single scholar record matching the scholarID path parameter. * @X-author Samuel W. Knowlton (inLeague LLC) <[email protected]> * @param-scholarID{36} { "name": "scholarID{36}", "type" : "string", "format": "guid", "in": "path", "required": "true", "description": "Scholar unique GUID (childID) to be retrieved." } * @response-404 { "description" : "No scholar found matching specified GUID.", "schema" : "/resources/api/response.json"} * @response-200 { "description" : "Record Located", "schema" : "/resources/api/scholars.schema.json" } **/ function index( event, rc, prc ) { var scholarResult = ScholarAPIService.getScholarByGUID( rc.scholarID ); if (! isNull( scholarResult ) ) { prc.response.setError( true ) .setStatusCode( 404 ) .setStatusText( "NOT FOUND" ) .addMessage( "No scholar found with GUID " & rc.scholarID ); } if ( !prc.response.getError() ) { prc.response.setData( fractal.builder() .item( scholarResult ) .withTransformer( "ScholarAPIJSONTransformer" ) .withSerializer( "SimpleSerializer@cffractal" ) .convert() ); } }
  • 47. /** * scholar.index * @hint Retrieves a single scholar record matching the scholarID path parameter. * @X-author Samuel W. Knowlton (inLeague LLC) <[email protected]> * @param-scholarID{36} { "name": "scholarID{36}", "type" : "string", "format": "guid", "in": "path", "required": "true", "description": "Scholar unique GUID (childID) to be retrieved." } * @response-404 { "description" : "No scholar found matching specified GUID.", "schema" : "/resources/api/response.json"} * @response-200 { "description" : "Record Located", "schema" : "/resources/api/scholars.schema.json" } **/ function index( event, rc, prc ) { var scholarResult = ScholarAPIService.getScholarByGUID( rc.scholarID ); if (! isNull( scholarResult ) ) { prc.response.setError( true ) .setStatusCode( 404 ) .setStatusText( "NOT FOUND" ) .addMessage( "No scholar found with GUID " & rc.scholarID ); } if ( !prc.response.getError() ) { prc.response.setData( fractal.builder() .item( scholarResult ) .withTransformer( "ScholarAPIJSONTransformer" ) .withSerializer( "SimpleSerializer@cffractal" ) .convert() ); } } cbSwagger: Automated API docs REST-HMVC baseHandler and Response.cfc Cffractal: Transformations
  • 48. THE /MODULES FOLDER ISTHE BEST FOLDER ✴ cbStreams: Big Collections ✴ cbSwagger: How DoesThis Work ✴ cbvalidation:Abort/Retry/Fail ✴ cffractal:Act LikeYou Did What the Client Asked ✴ cfmigrations: Stop Emailing SQL ✴ hyper: DRY HTTPS ✴ mementier: Input for cffractal and cbvalidation ✴ cborm: Making CFORM Pretty Good Until You Get Quick ✴ qb: Like learning a new Clef but you’ll never go back ✴ s3sdk: Docker Containers Hate Storage and Gotta Put the Cat Pics Somewhere ✴ Quick:The Special Sauce, aka No More Bean Factories ✴ rollbar: Bugs grouped by stack trace with Slack notications and assign them to Andrew
  • 49. THAT SOUNDS GREAT AND ALL, BUT…
  • 51. 13
  • 52. STATE OFTHE BOX ✴ 13Years in June ✴ Mature ✴ Established ✴ De facto standard for HMVC ✴ 4.x Series Started in 2015 ✴ 5.x Series Started in 2018 ✴ 8 Minor Releases ✴ 2 Major Architectural Shifts ✴ Not done yet!
  • 53. GROWING ECOSYSTEM ✴ 294+ Modules Ecosystem ✴ 60 past 12 months ✴ 384 Closed Pull Requests ✴ 372 box-team members ✴ 568 #box-products members ForgeBox Modules 0 100 200 300 400 2011 2012 2013 2014 2015 2016 2017 2018 2019 emoji 🤯 & Alexa Modules Best indicator of success
  • 54. 5 VISION RECAP ✓ Increase Modularity ✓ Containerization ✓ Renderings ✓ Routing + APIs ✓ Ecosystem
  • 55. Engine Updates Container Support Automation Modularity API Focus Handler JSON New Routing DSL Named Routes Resourceful Routes Named Regions APITesting Script Conversions Auto JSON Payloads Flash RAM New HTML Helper XSS Helper Fail Fast cgi.https HTML Helper autoMapModels Router as Interceptor Rendering Improvements Virtual Inheritance WireBox Errors ENV Environments Routing FineTuning 5.0 5.1 5.2 Fail Fast Closures Multi Domain SES Concurrent Interceptors ColdBox Init Interception Enhancements WireBoxTransients Boost 5.3 12 MONTH JOURNEY
  • 56. Box Injection Namespace Runnable Named Routes - runRoute() Elixir v3 Support Module Interception Points by Core High i/o logging for LogBox Streaming Console Appender CacheBox Re-Write & Modernization New Interfaces CacheBox Performance New multi methods ResetTimeoutOnAccess => Session Storages ACF 2018 Compatibilities Concurrent Lock Optimizations 5.4.0 12 MONTH JOURNEY
  • 57. CONTAINERIZATION ✴ Environment Settings ✴ Coldbox.cfc (Application Wide) ✴ ModuleCong.cfc (Modules) ✴ WireBox Binder ✴ IntegrationTests ✴ Environment EnvironmentVariable ✴ ENVIRONMENT=development getSystemSetting( key defaultValue ) getSystemProperty( key, defaultValue ) getEnv( key, defaultValue )
  • 58. RENDERINGS function index( event, rc, prc ){ return complexData; } function index( event, rc, prc ) renderdata=xml{ return complexData; } function index( event, rc, prc ) renderdata=pdf{ return complexData; } Native JSON + Auto Marshalling component renderdata="json" Handler Defaults
  • 59. AUTO JSON PAYLOADS { "name" : "Jon Clausen", "type" : "awesomeness", "data" : [ 1,2,3 ] } JSON Payload RCVariables ✴ name = “Jon Clausen” ✴ type = “awesomeness” ✴ data = [ 1, 2, 3 ]
  • 60. FLUENT ROUTING DSL ✴ Complete Rewrite ✴ Router.cfc ✴ Named Routes ✴ Multi-Domain ✴ Automatic BaseURLs ✴ Domain Routing ✴ Redirects ✴ HMVC - Modularization App
 Router Module
 Router Module
 Router Module
 Router Module
 Router Module
 Router Module
 Router Module
 Router Module
 Router Module
 Router
  • 61. ROUTING RESPONSES route( "/luis2/:lname" )   .toResponse( ( event, rc, prc ) => {         return "<h1>Hello from lambda land: #arguments.rc.lname#</h1>";    } ); route( "/contacts", ( event, rc, prc ) => { event.paramValue( "search", "" ) var contacts = getInstance( "ContactsService" ).list( rc.search ); return contacts; } );
  • 62. RESOURCEFUL ROUTES Verb Route Event Purpose GET /photos photos.index Display a list of photos GET /photos/new photos.new Return an HTML form for creating a new photo POST /photos photos.create Create a new photo GET /photos/:id photos.show Display a specific photo GET /photos/:id/edit photos.edit Return an HTML form for editing a photo POST/PUT/PATCH /photos/:id photos.update Update a specific photo DELETE /photos/:id photos.delete Delete a specific photo ✴ Automatic Resource Routing ✴ resources( “photos” )
  • 63. API INTEGRATIONTESTING ✴ request( route, params, headers, method=“get” ) ✴ GET( route, params, headers, method=get ) ✴ POST( route, params, headers, method=get ) ✴ PUT( route, params, headers, method=get ) ✴ PATCH( route, params, headers, method=get ) ✴ DELETE( route, params, headers, method=get )
  • 64. BOX INJECTION DSL ✴ coldbox:setting:name -> box:setting:name ✴ coldbox:moduleConfig:module -> box:moduleConfig:module ✴ coldbox:moduleService -> box:moduleService ✴ etc…. ?
  • 66. 4YEAR ROADMAP *2019 5.x 6.x Alpha 2020 6 RC 6 Final 5 LTS 2021 6.x 7.x Alpha 5 LTS 2022 6 LTS 7.x RC 7.x Final
  • 67. 6 VISION ✓ CFML Engine Support + Modernization ✓ Rendering Engines ✓ API Development ✓ Streams + Functional ✓ Concurrency
  • 68. Mr Funky! √ Streams √ Optionals Futures (Dev) cbRx
  • 69. ColdBox 6-7 ✴ Streams will be core ✴ CacheBox ✴ WireBox ✴ LogBox ✴ Everywhere!!! ✴ Optionals will be core >Functional Asynchronicity Reactivity
  • 70. ColdBox 6-7 ✴ View Rendering Engines ✴ ColdBoxViews ✴ CBT ✴ InertiaJS ✴ ServerSide JS ✴ Much More… IRenderingEngine CBT ColdBoxViews InertiaJS ServerSide JS Custom
  • 71. ColdBox 6-7 ✴ WireBox NEXT ✴ Script + Modernization ✴ Better debugging and error messages ✴ Streams Integration ✴ Metadata Storage Streamlining ✴ Metadata + Mapping Pre-Optimizations ✴ Classloading Core (javaloader) ✴ Concurrent Singleton Initializations ✴ Lazy Properties ✴ Optional Functions
  • 72. ColdBox 6-7 ✴ RenderdataTransformers ✴ New/OverrideTypes ✴ Custom JSON Serializer ✴ Vue components as Web Components ✴ Angular classes as Web Components IRenderingType xml json excel pdf vue
  • 73. ✴ CacheBox Functional DSL ✴ Optionals for results ✴ Streams Integration ✴ Parallel ✴ Retrievals/Sets/Lookups/Reaping ✴ Reactivity? ColdBox 6-7
  • 74. ✴ cbFutures => CompletableFuture (Java) ✴ async function annotations for models ✴ runAsyncEvent(), runAsyncRoute() ✴ announceAsyncInterception() ✴ Reactive events? ColdBox 6-7
  • 75. ColdBox QL ✴ ColdBox REST Query Language ✴ ColdBox Routing ✴ Abstract the QL to a consistent 
 Search Criteria API ✴ Leverage hibernate, quick, etc for querying ✴ Mementier for state transformation ✴ ColdBox push the results ✴ Design & Research Phase ✴ 2020 HTTP/S ColdBox QL Search Criteria Quick cbORM Mementier JSON Results /users?q=lastName:doe,age>25 /users?q=firstName:joe*,age<25,isActive!true /users?q=slug:~box,isActive:true,name=*box
  • 76. WE ARE STILL EXCITED
  • 79. STATE OF COMMAND ✴ 5Years in June ✴ Our rst server product ✴ 157 JIRA tickets resolved ✴ 32 merged pull requests ✴ 19,400+ Downloads ✴ 4.x Series 2018 ✴ 6 Minor Releases
  • 80. Major rewrite of 
 CLI engine loader
 Lucee 5 and JSR-223 ImprovedTask Runners Private packages Revamped Server Logs ColdBox 5 Support Bullet train shell New UI for progress bars and interactive jobs
 256 colors
 Syntax highlighting in REPL
 Interactive Mode for CI Load ad-hoc modules in tasks Smaller binary size Tab Completion Better exit codes S3 Endpoint Updated ServerTray 4.0 4.1 4.2 Task RunnerTarget Deps Gzip Compression forEach Command Prelim Java 9-11 Support 4.3 12 MONTH JOURNEY
  • 81. Enhanced directory watchers coldbox reinit JSON color highlighting Gist Endpoint OpenJDK Shell Environment Vars ForgeBox Enterprise Bundled JRE to OpenJDK TestBox code coverage Env var expansions in REPL Tab complete for private packages Exit codes forTask Runners 4.4 4.5 4.6 12 MONTH JOURNEY
  • 82. CFMLTRANSFORMED ✴ Don’t need to spin up a server to run CFML ✴ Automate builds and processes with CFML from the command line ✴ Simpler local development ✴ Scripted, consistent deployments ✴ Easier CI/CD ✴ New CFML-based CLI utilities like: ✴ xinator, codechecker, cfformat, and cfscriptme
  • 83. => APP/WEB SERVER Undertow Runwar Custom Modules Core Modules Module Service L
 o
 a
 d
 e
 r WireBox ✴ Full Production Web Server ✴ Full Production Java EE Servlet 4.0 ✴ Non Blocking I/O ✴ High Performance ✴ Small Binary ✴ HTTP/2 Support ✴ HTTPS Support ✴ Web Socket Support
  • 84. GROWINGTO BECOMETHE
 #1 APP/WEB SERVER 
 OF CHOICE ✴ 36,600+ Adobe engine downloads ✴ 36,500+ Lucee engine downloads ✴ Powering local development ✴ Powering Docker containers ✴ Powering productionVMs Ortus wants to strengthen this area and support our users
  • 85. ✴ POSS CommandBox ✴ POSS Images ✴ Automatic JDK Management ✴ POSS Modules ✴ DotEnv, Host Updater, CFCong, Ngrok, CodeChecker, BulletTrain ✴ Exclusive Modules ✴ STIG CFML Lockdown ✴ Audit Command ✴ Service Manager ✴ High Priority Fixes ✴ Support + Mentorship Now! Runs jQuery!
  • 88. 4YEAR ROADMAP *2019 4.x 5.x Alpha 2020 5 RC 5 Final 4 LTS 2021 5.x 6.x Alpha 4 LTS 2022 5 LTS 6.x RC 6.x Final
  • 89. COMMANDBOX IMAGES Source Code CFCong Settings Lucee Extensions CFML Engine server.json D
 o
 c
 k
 e
 r environment $ server start image=slug@version
  • 90. FUTURE EPICS ✴ More JVM Languages ✴ Java, Kotlin, Groovy, Scala, JRuby, etc… ✴ Maven Endpoint ✴ Easy Websockets ✴ More Portability ✴ More Performance ✴ Better Security (ip restrictions, waf, etc) ✴ Undertow v3 (Netty vs XNIO) ✴ More ASCII art! ✴ Strategic Partnerships….
  • 91. • More JVM Languages • Java, Kotlin, Groovy, Scala, JRuby, etc… • Maven Endpoint • Easy Websockets • More Portability • More Performance • Better Security (ip restrictions, waf, etc) • Undertow v3 (Netty vs XNIO) • More ASCII art! • Strategic Partnerships…. FUTURE EPICS
  • 93. BUILDING ON ORTUS TOOLS Pete Freitagfoundeo
  • 94. FOUNDEO 💚 ORTUS TOOLS ➤ CommandBox ➤ FORGEBOX ➤ TestBox ➤ ColdBox ➤ Ortus Docker Images
  • 95. SOME GAPS IN CFML SECURITY TOOLING ➤ No one was keeping track of known vulnerable CFML libraries ➤ No tools could detect vulnerable CFML libraries ➤ Should be able to check for vulnerable dependencies ➤ Existing CFML code security tools, worked poorly, expensive, and CI workflows impossible or difcult.
  • 96. “NEARLY 60% OF BREACHES DUE TO UN-PATCHED VULNERABILITY -According to a ServiceNow Survey
  • 98. FIXINATOR ➤ Client implemented on top of CommandBox as a command ➤ Scans for known vulnerable third party CFML, Java & JS libraries ➤ Scans your code for security issues as well
  • 99. WHY COMMANDBOX? SIMPLE INSTALLATION box install fixinator
  • 100. WHY COMMANDBOX? PRODUCTIVITY ➤ If you know CFML you can write your own CLI tools ➤ The command API is easy to use ➤ Has everything you could possibly want
  • 101. WHY COMMANDBOX? SIMPLIFIED PRODUCT STRATEGY ➤ Once I decided to implement as a command ➤ Got to market quickly ➤ Worked on the scanner on and off for over 10 years ➤ Didn’t need a GUI ➤ Simplied the CI integration story ➤ Each CI integration is just a few lines of code
  • 102. FIXINATOR COMMUNITY EDITION ➤ Complimentary license keys made available to 
 ALL open source CFML projects! ➤ Free scanning of box.json les for everyone!
  • 103. COMING SOON ➤ Fixinator private package scanning in ➤ FORGEBOX Pro ➤ FORGEBOX Enterprise
  • 106. ✴ Feedback driven journey ✴ Lots of customer feedback ✴ Very Busy (12 Months) ✴ 14 ForgeBoxVersion Releases ✴ 99 New Users ✴ 143 New Packages ✴ 1,508 NewVersions ✴ 60,127 Package Installs STATE OF FORGEBOX
  • 107. STATE OF FORGEBOX ForgeBox Users 0 150 300 450 600 2012 2013 2014 2015 2016 2017 2018 2019
  • 108. STATE OF FORGEBOX New Packages 0 175 350 525 700 2012 2013 2014 2015 2016 2017 2018 2019
  • 109. STATE OF FORGEBOX New PackageVersions 0 1250 2500 3750 5000 2012 2013 2014 2015 2016 2017 2018 2019
  • 110. Lucee Extensions Package Storage Private Packages Search Enhancements Badges S3 SDK UI Updates Caching Updates Collaborators Slug Requirements Emojis 🤩 New UI Enterprise Support S3 Multi Region ColdBox 5 GDPR ColdBox Elixir Vue Integration Drop API Compat VersionsTab Storage Rewrite BetterValidation Mementier API 3.0 3.1 4.0 UI Updates Collaborators Invite/ Reject Updates 4.1 12 MONTH JOURNEY
  • 111. CLI Storage Fixes Layout Consolidations Enterprise Logs Enterprise Cache Actions Slug Search Mementier Updates Version Outputs 4.2 4.3 4.4 Licensing Constraints Responsiveness Enterprise News Banners Documentation Search Improvements Pagination UI Digital Ocean Support Clickjacking Session Rotations Enterprise Google Analytics Admin Dashboard Stats 4.5 12 MONTH JOURNEY
  • 112. /@user API data grooming API Secure Annotations New User Dashboards VersionTab Updates DependencyViewer Badges 4.6 4.7 12 MONTH JOURNEY
  • 114. PACKAGE STORAGE ✴ “location” = “forgeboxStorage” ✴ForgeBox stores your software ✴Versioning Included ✴Private and Secure Storage ✴US and EU Mirrors ✴FREE for all open source packages (10GB) ✴PRO Accounts (50GB)
  • 115. PRIVATE PACKAGES ✴ PRO Accounts ✴ Unlimited Packages ✴ Storage Included ✴ Unlimited Collaborations ✴ Free for now package init package set private=true package set slug=my-slug@forgeBoxUser etc... publish install slug@forgeboxUser install slug@forgeboxUser@be install slug@[email protected]
  • 118. FEATURES ✴ Secure + Isolated private registry ✴ SSL + WAF ✴ Unlimited public/private packages ✴ 250GB Package Storage + CDN ✴ Custom CommandBox Namespace ✴ Unlimited Collaborators ✴ Custom Access Rules ✴ Custom Security, Roles and Permissions ✴ Fixinator & Package Auditing (*Coming)
  • 119. EASYTO USE forgebox endpoint register abc https://abc.forgebox.io/api/v1 forgebox login endpointName=abc Register Endpoint Login forgebox install abc:coldbox Use
  • 120. BENEFITS ✴ Scalable Binary Storage ✴ Detect outdated packages ✴ Faster updates ✴ No more repository cloning or full downloads ✴ Fast Semver evaluations ✴ Faster Downloads (CDN) ✴ Security ✴ No more source code access ✴ Granular installation/publishing access ✴ Security Audits and Fixinator via Foundeo
  • 121. LEARN MORE Brad Wood Javier Quintero DAY 2 - BOX ROOM
  • 123. ROADMAP Q2 Pro Subscriptions Swagger Docs Password Meters Password Rules Q3 Security Audits Fixinator Analytics Two-Factor Auth Q4 Teams Collaboration Managers 2020 PackageTransfers Notications Web hooks Code Quality Code Metrics Search Contexts