SlideShare a Scribd company logo
1 of 45
Download to read offline
2.0
Leaner & Meaner
#HappyMothersDayFromTiConf
Text
Tony Lukasavage
@tonylukasavage
tlukasavage@appcelerator.com
MVC framework for
Titanium
Declarative UI via XML
Styling via TSS
Models & data bindings
Widgets
Embeds best practices and high performance
techniques aimed at delivering the most stable,
high quality Titaniums apps possible.
3 types of people
Those who love Alloy
Those who have never used
Alloy
Those who have founded
Apperson Labs
Why Alloy Works
Community-driven effort
Feedback loop
Iterations & experience
Features based on need
How can we do better?
Vision & Transparency
Road map
Ownership
app development
Features, best practices, and stability
“If builders built buildings like programmers
wrote programs, then the first woodpecker
that came along would destroy civilization.”
— Gerald Weinberg
Write Once Mode
Parity Mode
Aims for a higher degree of a write once, run
anywhere experience
Parity where parity matters, but still provide native
experience
Large, integrated effort
Intelligently creating new normalized APIs
XML Templating
view modules
Same views you know and love
Compiled to separate modules
Promotes reuse and export
Possible to generate entirely new syntax 

(i.e., hyperloop)
Titanium
iOS
Windows
How do you export your own controller definition?
How can you do true prototype inheritance on controllers?
How do you create a controller-specific model in code and
use it with view-model binding?
How do I get arguments in my controller without this hideous
syntax: var args = arguments[0] || {};
How do you skip time-consuming AST parsing on controllers
that don’t need it?
Controller Trivia
How do we solve all of that
with one fundamental
change?
Pure JS controllers
TSS.. more or LESS
Alternates forms of style syntax?
What about something like LESS?
Improvements to the core of TSS, driven by
external TSS pre-processor development
data models
Simpler and more focused
No more masking Backbone
Expose a programmatic interface for view-
model binding
Faster, more intelligent data binding
Existing format
exports.definition?
What happens to it?
Why separate
definition from models
and collections?
extendModel &
extendCollection…
WAT?!
Hey look, Backbone!
Use Backbone
conventions
Simpler, pure
CommonJS format
Unnecessary Cruft
nested collections
Very specific use cases: TableView & ListView
Efficiency and convention
bidirectional binding
Very specific use cases: TextField & TextArea
Convenience where it makes sense.
dev experience
faster, happier development
“I love it when a plan comes together”
— John “Hannibal” Smith
local installs
Have as many non-conflicting alloy installs as you
want.
Can be global or per-project
Allows you to take Alloy updates on a needed basis,
just like Titanium.
Alloy as a dependency
export widgets
Widgets in traditional Titanium apps
Fully functional
Native or plain CommonJS modules
scaffolding
robust generators for widgets, builtins, adapters,
commands, and generic commonjs modules
Configurable to your environment



Not just code structure, but ready for distribution
ridiculously fast compiles
No builtins
Pure JS controllers to handle inheritance
Separation between controller and views
There’s full runtime version of the Alloy library
No more AST parsing!!!
100x speed up with Alloy compiles
Leave the AST parsing to optional
pre-processors
LiveView, TiShadow, and RapidDev
just got extremely more powerful
parallel compiles
Android Blackberry iOS MobileWeb
$	
  alloy	
  compile	
  —platform	
  all
rock solid
with metrics
!
“What’s measured improves”
— Peter F. Drucker
unit testing
Travis CI for continuous
integration
Covers master, branches, and
even pull requests
test coverage
ti-mocha
contributing
made easy
“In open source… to really do
something well, you have to
get a lot of people involved.”
— Linus Torvalds
npm
70K+ modules, 1/4 billion downloads a month
distribution for all widgets, “builtins”, adapters,
commands, and anything we come up with.
It’ll just work with Ti.Next
require() will work like node.js
ti-commonjs in the meantime
ti-commonjs
Library and CLI hook that provides a node.js-style
commonjs implementation to ti.current
Using npm for package management just works
Initially supported on android and ios
Initially alloy, but could work for traditional titanium
VS
Undo incremental
growth and expansion
of repo
grok-ability
Externalize non-
essential modules
widgets
“builtins”
tools
git-style subcommands
Add arbitrary commands that can make use of Alloy
configuration data
Extensibility allowing for out-of-band contributions
module API
!
Use Alloy as a node.js module, not just a CLI
No more expensive, unreliable sub-processing
natural progression with git-style subcommands
get on board
migrating to the awesomeness
“If you want to make enemies,
try to change something.”
— Woodrow Wilson
1.X -> 2.0
Migration will be a driving force behind the new features,
not an afterthought.
Old formats will be deprecated, but most will still work
New controllers, views, models, styles, widgets, and even
builtins will be able to be migrated through an
automation script.
You could very well be porting to 2.0 with no manual
intervention
wrap-up
try to keep up
http://bit.ly/alloy_2
Special Thanks
Fokke
Zandbergen
Mads Moller
Aaron
Saunders
Paul Egli
David Bankier
Tim Poulsen

More Related Content

What's hot

What's hot (20)

NCUG 2019: Super charge your API’s with Reactive streams
NCUG 2019: Super charge your API’s with Reactive streamsNCUG 2019: Super charge your API’s with Reactive streams
NCUG 2019: Super charge your API’s with Reactive streams
 
Simple Unit Testing in Appcelerator Titanium Alloy
Simple Unit Testing in Appcelerator Titanium AlloySimple Unit Testing in Appcelerator Titanium Alloy
Simple Unit Testing in Appcelerator Titanium Alloy
 
Continuous Integration for Titanium
Continuous Integration for TitaniumContinuous Integration for Titanium
Continuous Integration for Titanium
 
Continous integration with jenkins
Continous integration with jenkinsContinous integration with jenkins
Continous integration with jenkins
 
Testing the way it should be
Testing the way it should beTesting the way it should be
Testing the way it should be
 
TiCalabash and TiMocha: The keys to Better & More Stable Titanium Apps
TiCalabash and TiMocha: The keys to Better & More Stable Titanium AppsTiCalabash and TiMocha: The keys to Better & More Stable Titanium Apps
TiCalabash and TiMocha: The keys to Better & More Stable Titanium Apps
 
Continuous Delivery su progetti Java: cosa abbiamo imparato facendoci del male
Continuous Delivery su progetti Java: cosa abbiamo imparato facendoci del maleContinuous Delivery su progetti Java: cosa abbiamo imparato facendoci del male
Continuous Delivery su progetti Java: cosa abbiamo imparato facendoci del male
 
Speed up your regression and reduce cost load with Selenoid + K8s + ReportPortal
Speed up your regression and reduce cost load with Selenoid + K8s + ReportPortalSpeed up your regression and reduce cost load with Selenoid + K8s + ReportPortal
Speed up your regression and reduce cost load with Selenoid + K8s + ReportPortal
 
Selenoid & Allure - how to make them work together?
Selenoid & Allure -  how to make them work together?Selenoid & Allure -  how to make them work together?
Selenoid & Allure - how to make them work together?
 
Tooling for the productive front-end developer
Tooling for the productive front-end developerTooling for the productive front-end developer
Tooling for the productive front-end developer
 
Getting Started With Cypress
Getting Started With CypressGetting Started With Cypress
Getting Started With Cypress
 
Cypress - Best Practices
Cypress - Best PracticesCypress - Best Practices
Cypress - Best Practices
 
WordCamp IL 2016 - WordPress Scale on AWS
WordCamp IL 2016 - WordPress Scale on AWSWordCamp IL 2016 - WordPress Scale on AWS
WordCamp IL 2016 - WordPress Scale on AWS
 
QAAgility Presentation - Cucumber with Appium
QAAgility Presentation - Cucumber with AppiumQAAgility Presentation - Cucumber with Appium
QAAgility Presentation - Cucumber with Appium
 
Automated-Testing-inside-containers
Automated-Testing-inside-containersAutomated-Testing-inside-containers
Automated-Testing-inside-containers
 
The busy developers guide to Docker
The busy developers guide to DockerThe busy developers guide to Docker
The busy developers guide to Docker
 
ScotSoft 2017: Power Your Move to the Cloud with Docker
ScotSoft 2017: Power Your Move to the Cloud with DockerScotSoft 2017: Power Your Move to the Cloud with Docker
ScotSoft 2017: Power Your Move to the Cloud with Docker
 
How to Get Started with Cypress
How to Get Started with CypressHow to Get Started with Cypress
How to Get Started with Cypress
 
Continuous Integration: How I stopped guessing if that merge was bad
Continuous Integration: How I stopped guessing if that merge was badContinuous Integration: How I stopped guessing if that merge was bad
Continuous Integration: How I stopped guessing if that merge was bad
 
QA Automation testing online training
QA Automation testing online trainingQA Automation testing online training
QA Automation testing online training
 

Similar to TiConf NY 2014 - Alloy 2.0

Mix Tech Ed Update No Video
Mix Tech Ed Update No VideoMix Tech Ed Update No Video
Mix Tech Ed Update No Video
AllyWick
 
A journey from monolith to micro services
A journey from monolith to micro servicesA journey from monolith to micro services
A journey from monolith to micro services
Pravin Mishra
 

Similar to TiConf NY 2014 - Alloy 2.0 (20)

Beyond the MEAN Stack: Thinking Small with Node.js for the Enterprise
Beyond the MEAN Stack: Thinking Small with Node.js for the EnterpriseBeyond the MEAN Stack: Thinking Small with Node.js for the Enterprise
Beyond the MEAN Stack: Thinking Small with Node.js for the Enterprise
 
An agile approach to cloud infrastructure
An agile approach to cloud infrastructureAn agile approach to cloud infrastructure
An agile approach to cloud infrastructure
 
#SPSToronto How to do #DevOps with #SPFx and why it matters
#SPSToronto How to do #DevOps with #SPFx and why it matters#SPSToronto How to do #DevOps with #SPFx and why it matters
#SPSToronto How to do #DevOps with #SPFx and why it matters
 
Developing Actors in Azure with .net
Developing Actors in Azure with .netDeveloping Actors in Azure with .net
Developing Actors in Azure with .net
 
Experiences using CouchDB inside Microsoft's Azure team
Experiences using CouchDB inside Microsoft's Azure teamExperiences using CouchDB inside Microsoft's Azure team
Experiences using CouchDB inside Microsoft's Azure team
 
Introduction To Symfony
Introduction To SymfonyIntroduction To Symfony
Introduction To Symfony
 
Accelerate your Application Delivery with DevOps and Microservices
Accelerate your Application Delivery with DevOps and MicroservicesAccelerate your Application Delivery with DevOps and Microservices
Accelerate your Application Delivery with DevOps and Microservices
 
MongoATL: How Sourceforge is Using MongoDB
MongoATL: How Sourceforge is Using MongoDBMongoATL: How Sourceforge is Using MongoDB
MongoATL: How Sourceforge is Using MongoDB
 
Mix Tech Ed Update No Video
Mix Tech Ed Update No VideoMix Tech Ed Update No Video
Mix Tech Ed Update No Video
 
Fast, Secure Deployments with Docker on AWS
Fast, Secure Deployments with Docker on AWSFast, Secure Deployments with Docker on AWS
Fast, Secure Deployments with Docker on AWS
 
Meanstack overview
Meanstack overviewMeanstack overview
Meanstack overview
 
Elastic search overview
Elastic search overviewElastic search overview
Elastic search overview
 
Succeding with the Apache SOA stack
Succeding with the Apache SOA stackSucceding with the Apache SOA stack
Succeding with the Apache SOA stack
 
Titanium presentation
Titanium presentationTitanium presentation
Titanium presentation
 
NodeJs Frameworks.pdf
NodeJs Frameworks.pdfNodeJs Frameworks.pdf
NodeJs Frameworks.pdf
 
A journey from monolith to micro services
A journey from monolith to micro servicesA journey from monolith to micro services
A journey from monolith to micro services
 
Symfony - A Bird's Eye View
Symfony - A Bird's Eye ViewSymfony - A Bird's Eye View
Symfony - A Bird's Eye View
 
Microservices and Serverless for Mega Startups - DevOps IL Meetup
Microservices and Serverless for Mega Startups - DevOps IL MeetupMicroservices and Serverless for Mega Startups - DevOps IL Meetup
Microservices and Serverless for Mega Startups - DevOps IL Meetup
 
Accelerate DevOps/Microservices and Kubernetes
Accelerate DevOps/Microservices and KubernetesAccelerate DevOps/Microservices and Kubernetes
Accelerate DevOps/Microservices and Kubernetes
 
Appcelerator Alloy Deep Dive - tiTokyo 2013
Appcelerator Alloy Deep Dive - tiTokyo 2013Appcelerator Alloy Deep Dive - tiTokyo 2013
Appcelerator Alloy Deep Dive - tiTokyo 2013
 

Recently uploaded

Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
 

Recently uploaded (20)

Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of Brazil
 
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation Strategies
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdf
 

TiConf NY 2014 - Alloy 2.0