SlideShare a Scribd company logo
1 of 45
Download to read offline
Should rolling your own
be the way you roll?
Respond15, 2015.03.19
Ben Buchanan / @200okpublic
Like any tech agenda...
know what you're aiming for
have a way to roll it out
get social buy-in
t
Photo: https://www.flickr.com/photos/booleansplit/3782726220
RWD ♥ UI Libraries
Libraries help...
●
Consistent design & interaction
●
Code re-use & portability
●
Centralised dev & testing
●
Rapid updates
Performance
●
Remove duplication
●
Replace heavy old libraries
●
Allow modular loading (http2 will love this!)
RWD limits
●
Media queries are limited
●
Significant context is often the parent
Solutions?
●
Flexbox
●
Whole-page patterns
●
Judicious JS tweaks
●
Polyfill eg. css-element-queries
●
Client side MVC (heaviest)
Just chuck in a library? Awesome!
Photo: https://www.flickr.com/photos/eschipul/4160817135
All options require work.
Beware the "which library" bikeshed.
It's not just a keel and aIt's not just a keel and a
hull and a deck and sails.hull and a deck and sails.
That's what a shipThat's what a ship needsneeds
but what a shipbut what a ship isis......
is freedom.is freedom.
"Which library are we using?"
vs
"What is our design language?"
Have you ever defined your design language?
Define a palette
Legacy codebase (112+)
#000000 #0000ee #0000ff #0066cc #0066ee #0071b5 #0087c0 #0099cc #00ff00 #0782c1
#0a6332 #1392e9 #139ff7 #189de1 #19478a #1a1718 #212121 #221e1f #222222 #333333
#383838 #3875d7 #3e3c3d #444444 #44aee2 #4668c5 #474747 #4a4c4a #4b4d4b #4c4c4c
#518013 #551a8b #555555 #595959 #5f6062 #666666 #696b6d #75b81b #777777 #807e7f
#808080 #828282 #84bd39 #919191 #979797 #999999 #9fa0a1 #a01f13 #a0a0a0 #a0a6ad
#a1a1a1 #aaaaaa #aeb3b9 #b5b5b5 #b6b6b6 #b81b75 #b83b1d #b9b9b9 #babcbe #bcbbb9
#bfbfbf #c0c0c0 #cccccc #cfd1cf #d0d2d0 #d3d3d3 #d4d4d4 #d6d7d8 #d7d7d7 #d7d8d7
#dddddd #dedede #dfdfdf #e0e0e0 #e3e3e3 #e4e0d8 #e4e4e4 #e5e5e5 #eaeaea #ebeae7
#ebebeb #ececec #ed1c24 #eddab7 #ededed #eeeeee #efeeed #eff0ef #f0dddd #f1f2f2
#f1f9e7 #f2f1ef #f2f2f2 #f3f3f3 #f4f4f4 #f5ecdb #f7f7f7 #f8f8f8 #fafabb #fafafa
#fcfcfc #fe57a1 #feffde #ff0000 #ff7e00 #ff9900 #ffaaaa #ffccba #ffff00 #ffff99
#fffffc #ffffff ...
Definition sets a target.
Create a common language for your UI.
≡
OK. Now you can choose a library.
Broad approaches
●
Off the shelf
●
Bespoke
●
Plunder
Why namespace?
●
Existing libraries?
●
Uncontrolled code – plugins, ads?
●
Fresh build or side-by-side rollout?
Off the shelf
●
Use without modification
●
Reskin & configure
●
Trades off flexibility
One size does not fit all.
You will probably end up forking the library.
You need to change your product.
Do other people
want the change?
A new version of the library is out.
Can you use
the new version?
Submit patch.
 Definitely! 
Submit patch
anyway?
 Maybe 
Did your patch
get accepted?
 Wait   Yes 
You have now forked.
 No 
 Yes! Finally! 
 No 
Update.
 Yes   No 
 Time passes 
Solve your own problems.
Bespoke
●
Building everything gives 100% control
●
It's expensive though!
Plunder
●
Take the best bits
●
Modify to your liking
●
Build bespoke for the gaps
Some tips...
●
Normalise the code
●
Build & test outside your product
●
Set a lean API
●
Templates != API
So you have a library. Now what?
Social impact
●
Empower designers
●
Engage frontenders
●
Free backenders
●
Reassure Ops and PMs
Create an ecosystem, not a library.
Design ecosystem
●
Living style guide
●
Hi-fi rapid prototypes
●
Supporting artefacts:
●
Code templates
●
Graphics and prototyping templates
●
Dash docsets
Portable, usable design gets used.
know what you're aiming for
have a way to roll it out
get social buy-in
your design language
informs your library
and their creation builds buy-in
Create a design ecosystem which
simply includes responsive design.
Thank you.
GNU Terry Pratchett

More Related Content

Similar to UI Libraries: should rolling your own be the way you roll?

Circuit 2015 Keynote - Carsten Ziegeler
Circuit 2015 Keynote -  Carsten ZiegelerCircuit 2015 Keynote -  Carsten Ziegeler
Circuit 2015 Keynote - Carsten ZiegelerICF CIRCUIT
 
Introduction to git & WordPress
Introduction to git & WordPressIntroduction to git & WordPress
Introduction to git & WordPressJosh Lee
 
Do Try This At Home Ajax Bookmarking, Cross Site Scripting, And Other Web 2 ...
Do Try This At Home  Ajax Bookmarking, Cross Site Scripting, And Other Web 2 ...Do Try This At Home  Ajax Bookmarking, Cross Site Scripting, And Other Web 2 ...
Do Try This At Home Ajax Bookmarking, Cross Site Scripting, And Other Web 2 ...jward5519
 
Beyond responsive design - UI for the modern web application - Pete Smith - C...
Beyond responsive design - UI for the modern web application - Pete Smith - C...Beyond responsive design - UI for the modern web application - Pete Smith - C...
Beyond responsive design - UI for the modern web application - Pete Smith - C...Codemotion
 
Drupal 7 and RDF
Drupal 7 and RDFDrupal 7 and RDF
Drupal 7 and RDFscorlosquet
 
How HTML5 missed its graduation - #TrondheimDC
How HTML5 missed its graduation - #TrondheimDCHow HTML5 missed its graduation - #TrondheimDC
How HTML5 missed its graduation - #TrondheimDCChristian Heilmann
 
About javascript libraries
About javascript librariesAbout javascript libraries
About javascript librariesHarshal Patil
 
OptView2 MUC meetup slides
OptView2 MUC meetup slidesOptView2 MUC meetup slides
OptView2 MUC meetup slidesOfek Shilon
 
TDC2016POA | Trilha JavaScript - O Rei dos Plugins - Tornando-se produtível e...
TDC2016POA | Trilha JavaScript - O Rei dos Plugins - Tornando-se produtível e...TDC2016POA | Trilha JavaScript - O Rei dos Plugins - Tornando-se produtível e...
TDC2016POA | Trilha JavaScript - O Rei dos Plugins - Tornando-se produtível e...tdc-globalcode
 
Drupal content editor flexibility
Drupal content editor flexibilityDrupal content editor flexibility
Drupal content editor flexibilityhernanibf
 
Full stack-web-design
Full stack-web-designFull stack-web-design
Full stack-web-designKevin Conboy
 
Jetpack SDK: The new possibility of the extensions on browser
Jetpack SDK: The new possibility of the extensions on browserJetpack SDK: The new possibility of the extensions on browser
Jetpack SDK: The new possibility of the extensions on browserlittlebtc
 
Active Web Development
Active Web DevelopmentActive Web Development
Active Web DevelopmentDivya Manian
 
Orthogonality: A Strategy for Reusable Code
Orthogonality: A Strategy for Reusable CodeOrthogonality: A Strategy for Reusable Code
Orthogonality: A Strategy for Reusable Codersebbe
 

Similar to UI Libraries: should rolling your own be the way you roll? (20)

Circuit 2015 Keynote - Carsten Ziegeler
Circuit 2015 Keynote -  Carsten ZiegelerCircuit 2015 Keynote -  Carsten Ziegeler
Circuit 2015 Keynote - Carsten Ziegeler
 
Forensic Theming - DrupalCon London
Forensic Theming - DrupalCon LondonForensic Theming - DrupalCon London
Forensic Theming - DrupalCon London
 
Introduction to git & WordPress
Introduction to git & WordPressIntroduction to git & WordPress
Introduction to git & WordPress
 
Do Try This At Home Ajax Bookmarking, Cross Site Scripting, And Other Web 2 ...
Do Try This At Home  Ajax Bookmarking, Cross Site Scripting, And Other Web 2 ...Do Try This At Home  Ajax Bookmarking, Cross Site Scripting, And Other Web 2 ...
Do Try This At Home Ajax Bookmarking, Cross Site Scripting, And Other Web 2 ...
 
ArangoDB
ArangoDBArangoDB
ArangoDB
 
Fitc Amsterdam 2010
Fitc Amsterdam 2010Fitc Amsterdam 2010
Fitc Amsterdam 2010
 
Beyond responsive design - UI for the modern web application - Pete Smith - C...
Beyond responsive design - UI for the modern web application - Pete Smith - C...Beyond responsive design - UI for the modern web application - Pete Smith - C...
Beyond responsive design - UI for the modern web application - Pete Smith - C...
 
Caveats
CaveatsCaveats
Caveats
 
Drupal 7 and RDF
Drupal 7 and RDFDrupal 7 and RDF
Drupal 7 and RDF
 
How HTML5 missed its graduation - #TrondheimDC
How HTML5 missed its graduation - #TrondheimDCHow HTML5 missed its graduation - #TrondheimDC
How HTML5 missed its graduation - #TrondheimDC
 
About javascript libraries
About javascript librariesAbout javascript libraries
About javascript libraries
 
Pulsar
PulsarPulsar
Pulsar
 
OptView2 MUC meetup slides
OptView2 MUC meetup slidesOptView2 MUC meetup slides
OptView2 MUC meetup slides
 
EhTrace -- RoP Hooks
EhTrace -- RoP HooksEhTrace -- RoP Hooks
EhTrace -- RoP Hooks
 
TDC2016POA | Trilha JavaScript - O Rei dos Plugins - Tornando-se produtível e...
TDC2016POA | Trilha JavaScript - O Rei dos Plugins - Tornando-se produtível e...TDC2016POA | Trilha JavaScript - O Rei dos Plugins - Tornando-se produtível e...
TDC2016POA | Trilha JavaScript - O Rei dos Plugins - Tornando-se produtível e...
 
Drupal content editor flexibility
Drupal content editor flexibilityDrupal content editor flexibility
Drupal content editor flexibility
 
Full stack-web-design
Full stack-web-designFull stack-web-design
Full stack-web-design
 
Jetpack SDK: The new possibility of the extensions on browser
Jetpack SDK: The new possibility of the extensions on browserJetpack SDK: The new possibility of the extensions on browser
Jetpack SDK: The new possibility of the extensions on browser
 
Active Web Development
Active Web DevelopmentActive Web Development
Active Web Development
 
Orthogonality: A Strategy for Reusable Code
Orthogonality: A Strategy for Reusable CodeOrthogonality: A Strategy for Reusable Code
Orthogonality: A Strategy for Reusable Code
 

More from Ben Buchanan

Clickable DIVs and other icebergs
Clickable DIVs and other icebergsClickable DIVs and other icebergs
Clickable DIVs and other icebergsBen Buchanan
 
Things designers and developers should know (WDS18)
Things designers and developers should know (WDS18)Things designers and developers should know (WDS18)
Things designers and developers should know (WDS18)Ben Buchanan
 
The Naming Of Things
The Naming Of ThingsThe Naming Of Things
The Naming Of ThingsBen Buchanan
 
ARIA: beyond accessibility
ARIA: beyond accessibilityARIA: beyond accessibility
ARIA: beyond accessibilityBen Buchanan
 
Half Of The Next Thing
Half Of The Next ThingHalf Of The Next Thing
Half Of The Next ThingBen Buchanan
 
Sydjs: static site generators
Sydjs: static site generatorsSydjs: static site generators
Sydjs: static site generatorsBen Buchanan
 
ARIA (SydJS lightning talk)
ARIA (SydJS lightning talk)ARIA (SydJS lightning talk)
ARIA (SydJS lightning talk)Ben Buchanan
 

More from Ben Buchanan (7)

Clickable DIVs and other icebergs
Clickable DIVs and other icebergsClickable DIVs and other icebergs
Clickable DIVs and other icebergs
 
Things designers and developers should know (WDS18)
Things designers and developers should know (WDS18)Things designers and developers should know (WDS18)
Things designers and developers should know (WDS18)
 
The Naming Of Things
The Naming Of ThingsThe Naming Of Things
The Naming Of Things
 
ARIA: beyond accessibility
ARIA: beyond accessibilityARIA: beyond accessibility
ARIA: beyond accessibility
 
Half Of The Next Thing
Half Of The Next ThingHalf Of The Next Thing
Half Of The Next Thing
 
Sydjs: static site generators
Sydjs: static site generatorsSydjs: static site generators
Sydjs: static site generators
 
ARIA (SydJS lightning talk)
ARIA (SydJS lightning talk)ARIA (SydJS lightning talk)
ARIA (SydJS lightning talk)
 

UI Libraries: should rolling your own be the way you roll?