Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

ITB2019 Keynotes Day 1 - Ortus Team

70 views

Published on

The Ortus Keynote gives you insight into Ortus Solutions, the past, present and future. You'll meet the members of Team Ortus, community members, speakers and sponsors. We'll tell you a story about CFML, which we think you will want to hear, and learn what Ortus and the community is doing for CFML and the future of CFML. You will get updates on an array of Ortus *Box products, including recent releases & upcoming plans and features in our roadmaps. We will finish with Ortus's plans for the future… as well as remind you of a driving force behind all things Ortus.

Published in: Technology
  • Be the first to comment

  • Be the first to like this

ITB2019 Keynotes Day 1 - Ortus Team

  1. 1. Welcome To
  2. 2. YOUR HOST
  3. 3. ColdFusion & Java, Redefined May 1 - May 3 | Houston Tx Modernize or Die! SPONSORS SPONSORS
  4. 4. schedule.intothebox.org PWA PWA
  5. 5. SPEAKERS
  6. 6. HAPPY BOX @ 6 PM
  7. 7. TWO RAFFLES ✴ Raffle #1 ✴ 6pm Before Happy Box ✴ Raffle #2 ✴ Friday after last session ✴ Must be Present to win!
  8. 8. PATRONS patreon.com/ortussolutions All funds => Open Source Development
  9. 9. 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
  10. 10. ORTUS CFML MODERNIZATION PLAN Tooling Community Education 2016
  11. 11. MEMORY LANE 2006 “Study the past if you want to define the future.” Confucious
  12. 12. 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
  13. 13. 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
  14. 14. 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
  15. 15. 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
  16. 16. The End! 13YEARS GO BY FAST! Focused Intensity through time will lead to success!
  17. 17. Focus Areas Support 
 & 
 Training Consulting & Mentoring Staff Augmentation Product Development
  18. 18. New Motto: MODERNIZE 
 OR 
 DIE!™
  19. 19. 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
  20. 20. CFML SHAMING • No More Excuses • We have the tools • Show them off! • Tell your story!
  21. 21. HOW DO WE….
  22. 22. No Hacks No Shortcuts Hard Work Focused IntensityThroughTime
  23. 23. HARD REALITY They won’t do it! Take Ownership Be Disciplined Innovate From Within Create cool tools, apps, solutions Share!
  24. 24. New Initiatives… Modernize Or Die!™ Podcasts Let us be the little voices in your head
  25. 25. Why?
  26. 26. 2 FORMATS modernizeOrDie.io ™ ™
  27. 27. ✴ 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 ™
  28. 28. ✴ 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.
 ™
  29. 29. HAPPY BOX - RECORDINGS
  30. 30. OPEN HACKATHONS Ortus Sponsored 
 Prizes, Food and Drinks Starting with Houston Targeting Universities CFML Indoctrination
 Fall 2019
  31. 31. SEÑOR SAMUEL
  32. 32. CIRCA 2015
  33. 33. OUR ACTUAL REPOSITORY
  34. 34. Into The Box 2019 (How Coldbox Made Coldfusion Great Again) Samuel W. Knowlton sam@inleague.io / @MordantWastrel / @SKnowlton (CFML Slack) inLeague LLC Austin, TX
  35. 35. SO ADVANCED
  36. 36. 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
  37. 37. NOTTHAT WE DIDN’T ASK
  38. 38. 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
  39. 39. OWNYOUR PRODUCT (DON’T HATE)
  40. 40. REST HMVC: FROM CF SUMMITTO OUR WALLET Fall 2017 Today
  41. 41. /** * 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() ); } }
  42. 42. /** * 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
  43. 43. 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 notifications and assign them to Andrew
  44. 44. THAT SOUNDS GREAT AND ALL, BUT…
  45. 45. 13
  46. 46. 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!
  47. 47. 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
  48. 48. 5 VISION RECAP ✓ Increase Modularity ✓ Containerization ✓ Renderings ✓ Routing + APIs ✓ Ecosystem
  49. 49. 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
  50. 50. 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
  51. 51. 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 )
  52. 52. 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
  53. 53. AUTO JSON PAYLOADS { "name" : "Jon Clausen", "type" : "awesomeness", "data" : [ 1,2,3 ] } JSON Payload RCVariables ✴ name = “Jon Clausen” ✴ type = “awesomeness” ✴ data = [ 1, 2, 3 ]
  54. 54. 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
  55. 55. 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; } );
  56. 56. 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” )
  57. 57. 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 )
  58. 58. BOX INJECTION DSL ✴ coldbox:setting:name -> box:setting:name ✴ coldbox:moduleConfig:module -> box:moduleConfig:module ✴ coldbox:moduleService -> box:moduleService ✴ etc…. ?
  59. 59. FUNKYNESS IS FORMING
  60. 60. 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
  61. 61. 6 VISION ✓ CFML Engine Support + Modernization ✓ Rendering Engines ✓ API Development ✓ Streams + Functional ✓ Concurrency
  62. 62. Mr Funky! √ Streams √ Optionals Futures (Dev) cbRx
  63. 63. ColdBox 6-7 ✴ Streams will be core ✴ CacheBox ✴ WireBox ✴ LogBox ✴ Everywhere!!! ✴ Optionals will be core >Functional Asynchronicity Reactivity
  64. 64. ColdBox 6-7 ✴ View Rendering Engines ✴ ColdBoxViews ✴ CBT ✴ InertiaJS ✴ ServerSide JS ✴ Much More… IRenderingEngine CBT ColdBoxViews InertiaJS ServerSide JS Custom
  65. 65. 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
  66. 66. 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
  67. 67. ✴ CacheBox Functional DSL ✴ Optionals for results ✴ Streams Integration ✴ Parallel ✴ Retrievals/Sets/Lookups/Reaping ✴ Reactivity? ColdBox 6-7
  68. 68. ✴ cbFutures => CompletableFuture (Java) ✴ async function annotations for models ✴ runAsyncEvent(), runAsyncRoute() ✴ announceAsyncInterception() ✴ Reactive events? ColdBox 6-7
  69. 69. 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 Mementifier JSON Results /users?q=lastName:doe,age>25 /users?q=firstName:joe*,age<25,isActive!true /users?q=slug:~box,isActive:true,name=*box
  70. 70. WE ARE STILL EXCITED
  71. 71. BOX EVANGELIST
  72. 72. 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
  73. 73. 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
  74. 74. 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
  75. 75. 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
  76. 76. => 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
  77. 77. 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
  78. 78. ✴ POSS CommandBox ✴ POSS Images ✴ Automatic JDK Management ✴ POSS Modules ✴ DotEnv, Host Updater, CFConfig, Ngrok, CodeChecker, BulletTrain ✴ Exclusive Modules ✴ STIG CFML Lockdown ✴ Audit Command ✴ Service Manager ✴ High Priority Fixes ✴ Support + Mentorship Now! Runs jQuery!
  79. 79. Developer License $29/month Server License $39/Month Unlimited JVM Instances Unlimited Containers JBoss,Resin, Glassfish,Weblogic, Websphere
 $600/month/avg
  80. 80. WHAT’S COMING!
  81. 81. 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
  82. 82. COMMANDBOX IMAGES Source Code CFConfig Settings Lucee Extensions CFML Engine server.json D
 o
 c
 k
 e
 r environment $ server start image=slug@version
  83. 83. 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….
  84. 84. • 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
  85. 85. SEÑOR SECURITY
  86. 86. BUILDING ON ORTUS TOOLS Pete Freitagfoundeo
  87. 87. FOUNDEO 💚 ORTUS TOOLS ➤ CommandBox ➤ FORGEBOX ➤ TestBox ➤ ColdBox ➤ Ortus Docker Images
  88. 88. 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.
  89. 89. “NEARLY 60% OF BREACHES DUE TO UN-PATCHED VULNERABILITY -According to a ServiceNow Survey
  90. 90. FIXINATOR Stop. Demo Time.
  91. 91. 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
  92. 92. WHY COMMANDBOX? SIMPLE INSTALLATION box install fixinator
  93. 93. 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
  94. 94. 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
  95. 95. FIXINATOR COMMUNITY EDITION ➤ Complimentary license keys made available to 
 ALL open source CFML projects! ➤ Free scanning of box.json files for everyone!
  96. 96. COMING SOON ➤ Fixinator private package scanning in ➤ FORGEBOX Pro ➤ FORGEBOX Enterprise
  97. 97. MO BOX!!
  98. 98. ✴ 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
  99. 99. STATE OF FORGEBOX ForgeBox Users 0 150 300 450 600 2012 2013 2014 2015 2016 2017 2018 2019
  100. 100. STATE OF FORGEBOX New Packages 0 175 350 525 700 2012 2013 2014 2015 2016 2017 2018 2019
  101. 101. STATE OF FORGEBOX New PackageVersions 0 1250 2500 3750 5000 2012 2013 2014 2015 2016 2017 2018 2019
  102. 102. 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 Mementifier API 3.0 3.1 4.0 UI Updates Collaborators Invite/ Reject Updates 4.1 12 MONTH JOURNEY
  103. 103. CLI Storage Fixes Layout Consolidations Enterprise Logs Enterprise Cache Actions Slug Search Mementifier 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
  104. 104. /@user API data grooming API Secure Annotations New User Dashboards VersionTab Updates DependencyViewer Badges 4.6 4.7 12 MONTH JOURNEY
  105. 105. NEW MODERN UI
  106. 106. 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)
  107. 107. 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
  108. 108. LUCEE EXTENSION PROVIDER https://www.forgebox.io publish CommandBox> package set type=lucee-extensions CommandBox> publish
  109. 109. ENTERPRISE IS HERE
  110. 110. 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)
  111. 111. EASYTO USE forgebox endpoint register abc https://abc.forgebox.io/api/v1 forgebox login endpointName=abc Register Endpoint Login forgebox install abc:coldbox Use
  112. 112. 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
  113. 113. LEARN MORE Brad Wood Javier Quintero DAY 2 - BOX ROOM
  114. 114. WHAT’S COMING!
  115. 115. ROADMAP Q2 Pro Subscriptions Swagger Docs Password Meters Password Rules Q3 Security Audits Fixinator Analytics Two-Factor Auth Q4 Teams Collaboration Managers 2020 PackageTransfers Notifications Web hooks Code Quality Code Metrics Search Contexts
  116. 116. MOLDTHE CFML FUTURE
  117. 117. THANKS & ENJOY!

×