selecting a web framework
DESCRIPTION
Presented at Wharton Web Conf 2013 Description: Blank slates and green fields are all well and good, but the question of choosing a framework can be a critical leadership decision. How do you go about choosing what’s best for your team, for your problem, at this point in time? In this session, Pam Selle, a polyglot developer who’s built on her share of platforms, will talk about priorities to consider to help you make the best decision. We’ll also leave time for discussion where we’ll share experiences and lessons learned. Be prepared to take some notes!TRANSCRIPT
![Page 1: Selecting a Web Framework](https://reader035.vdocuments.net/reader035/viewer/2022062418/5555f9a3d8b42a8a5f8b5055/html5/thumbnails/1.jpg)
SELECTING A WEB FRAMEWORKwith Pam Selle (@pamasaur) // thewebivore.com
Tuesday, July 30, 13
![Page 2: Selecting a Web Framework](https://reader035.vdocuments.net/reader035/viewer/2022062418/5555f9a3d8b42a8a5f8b5055/html5/thumbnails/2.jpg)
Tuesday, July 30, 13
![Page 3: Selecting a Web Framework](https://reader035.vdocuments.net/reader035/viewer/2022062418/5555f9a3d8b42a8a5f8b5055/html5/thumbnails/3.jpg)
I will not tell you what to do.
SPOILERS!
Tuesday, July 30, 13
![Page 4: Selecting a Web Framework](https://reader035.vdocuments.net/reader035/viewer/2022062418/5555f9a3d8b42a8a5f8b5055/html5/thumbnails/4.jpg)
But, maybe I can help you approach the decision.
Tuesday, July 30, 13
![Page 5: Selecting a Web Framework](https://reader035.vdocuments.net/reader035/viewer/2022062418/5555f9a3d8b42a8a5f8b5055/html5/thumbnails/5.jpg)
Agenda
Focus on the outcomes
Criteria for frameworks
Framework cheat sheet
Interactive!
Case studies & Resources
Discussion
Tuesday, July 30, 13
![Page 6: Selecting a Web Framework](https://reader035.vdocuments.net/reader035/viewer/2022062418/5555f9a3d8b42a8a5f8b5055/html5/thumbnails/6.jpg)
OUTCOMES
Tuesday, July 30, 13
![Page 7: Selecting a Web Framework](https://reader035.vdocuments.net/reader035/viewer/2022062418/5555f9a3d8b42a8a5f8b5055/html5/thumbnails/7.jpg)
Technical
Ramping up
Maintainable
Iterate
Tuesday, July 30, 13
![Page 8: Selecting a Web Framework](https://reader035.vdocuments.net/reader035/viewer/2022062418/5555f9a3d8b42a8a5f8b5055/html5/thumbnails/8.jpg)
Operations
Uptime
Speed
Resources
Tuesday, July 30, 13
![Page 9: Selecting a Web Framework](https://reader035.vdocuments.net/reader035/viewer/2022062418/5555f9a3d8b42a8a5f8b5055/html5/thumbnails/9.jpg)
Team
Productivity
Retainability
Growth
Tuesday, July 30, 13
![Page 10: Selecting a Web Framework](https://reader035.vdocuments.net/reader035/viewer/2022062418/5555f9a3d8b42a8a5f8b5055/html5/thumbnails/10.jpg)
Business
Solves the business problem
Affordable in the long run
Tuesday, July 30, 13
![Page 11: Selecting a Web Framework](https://reader035.vdocuments.net/reader035/viewer/2022062418/5555f9a3d8b42a8a5f8b5055/html5/thumbnails/11.jpg)
EVALUATING FRAMEWORKS
Tuesday, July 30, 13
![Page 12: Selecting a Web Framework](https://reader035.vdocuments.net/reader035/viewer/2022062418/5555f9a3d8b42a8a5f8b5055/html5/thumbnails/12.jpg)
TECHNICAL
Tuesday, July 30, 13
![Page 13: Selecting a Web Framework](https://reader035.vdocuments.net/reader035/viewer/2022062418/5555f9a3d8b42a8a5f8b5055/html5/thumbnails/13.jpg)
Core
Core capabilities
What do you get?
Tuesday, July 30, 13
![Page 14: Selecting a Web Framework](https://reader035.vdocuments.net/reader035/viewer/2022062418/5555f9a3d8b42a8a5f8b5055/html5/thumbnails/14.jpg)
Needs vs. Strengths
What do you need most?
Strengths you don’t need are cruft
Tuesday, July 30, 13
![Page 15: Selecting a Web Framework](https://reader035.vdocuments.net/reader035/viewer/2022062418/5555f9a3d8b42a8a5f8b5055/html5/thumbnails/15.jpg)
Data abstraction
How does it save you time?
ORM
Tuesday, July 30, 13
![Page 16: Selecting a Web Framework](https://reader035.vdocuments.net/reader035/viewer/2022062418/5555f9a3d8b42a8a5f8b5055/html5/thumbnails/16.jpg)
Testing
Unit testing
Integration testing
Do you like those frameworks, or prefer plug and play?
Tuesday, July 30, 13
![Page 17: Selecting a Web Framework](https://reader035.vdocuments.net/reader035/viewer/2022062418/5555f9a3d8b42a8a5f8b5055/html5/thumbnails/17.jpg)
Documentation
Well-written and explained
Updated with versions
Sample code, tutorials
Tuesday, July 30, 13
![Page 18: Selecting a Web Framework](https://reader035.vdocuments.net/reader035/viewer/2022062418/5555f9a3d8b42a8a5f8b5055/html5/thumbnails/18.jpg)
Extension
Plugins
Libraries
The dangers of ugly lamp syndrome
Tuesday, July 30, 13
![Page 19: Selecting a Web Framework](https://reader035.vdocuments.net/reader035/viewer/2022062418/5555f9a3d8b42a8a5f8b5055/html5/thumbnails/19.jpg)
OPERATIONS
Tuesday, July 30, 13
![Page 20: Selecting a Web Framework](https://reader035.vdocuments.net/reader035/viewer/2022062418/5555f9a3d8b42a8a5f8b5055/html5/thumbnails/20.jpg)
Servability
Hosting
Speed
Operations cost
Tuesday, July 30, 13
![Page 21: Selecting a Web Framework](https://reader035.vdocuments.net/reader035/viewer/2022062418/5555f9a3d8b42a8a5f8b5055/html5/thumbnails/21.jpg)
Security
Does it have a standing track record of maintenance/patches?
Are patches accessible and simple to implement?
Does it cover common vulnerabilities (injection, etc.)
Tuesday, July 30, 13
![Page 22: Selecting a Web Framework](https://reader035.vdocuments.net/reader035/viewer/2022062418/5555f9a3d8b42a8a5f8b5055/html5/thumbnails/22.jpg)
Resources
Can you serve it?
Are there resources available for emergencies?
Tuesday, July 30, 13
![Page 23: Selecting a Web Framework](https://reader035.vdocuments.net/reader035/viewer/2022062418/5555f9a3d8b42a8a5f8b5055/html5/thumbnails/23.jpg)
TEAM
Tuesday, July 30, 13
![Page 24: Selecting a Web Framework](https://reader035.vdocuments.net/reader035/viewer/2022062418/5555f9a3d8b42a8a5f8b5055/html5/thumbnails/24.jpg)
Longevity
How long has it been around?
How long will it be around?
Tuesday, July 30, 13
![Page 25: Selecting a Web Framework](https://reader035.vdocuments.net/reader035/viewer/2022062418/5555f9a3d8b42a8a5f8b5055/html5/thumbnails/25.jpg)
Community
Are there user groups?
Conferences?
Screencasts?
Is there free help to be had?
Tuesday, July 30, 13
![Page 26: Selecting a Web Framework](https://reader035.vdocuments.net/reader035/viewer/2022062418/5555f9a3d8b42a8a5f8b5055/html5/thumbnails/26.jpg)
Learning Curve
Tuesday, July 30, 13
![Page 27: Selecting a Web Framework](https://reader035.vdocuments.net/reader035/viewer/2022062418/5555f9a3d8b42a8a5f8b5055/html5/thumbnails/27.jpg)
Hireablility
Do people have this skill, and can you find them?
Do people want to learn this skill, or is it being abandoned?
Can you build your team?
Can you bring in reinforcements?
Tuesday, July 30, 13
![Page 28: Selecting a Web Framework](https://reader035.vdocuments.net/reader035/viewer/2022062418/5555f9a3d8b42a8a5f8b5055/html5/thumbnails/28.jpg)
BUSINESS
Tuesday, July 30, 13
![Page 29: Selecting a Web Framework](https://reader035.vdocuments.net/reader035/viewer/2022062418/5555f9a3d8b42a8a5f8b5055/html5/thumbnails/29.jpg)
Licenses
Licensing ups & downs
Impact on longevity
Free isn’t so free
Tuesday, July 30, 13
![Page 30: Selecting a Web Framework](https://reader035.vdocuments.net/reader035/viewer/2022062418/5555f9a3d8b42a8a5f8b5055/html5/thumbnails/30.jpg)
Audience
What they have to use
What you want them to experience
Tuesday, July 30, 13
![Page 31: Selecting a Web Framework](https://reader035.vdocuments.net/reader035/viewer/2022062418/5555f9a3d8b42a8a5f8b5055/html5/thumbnails/31.jpg)
Other Business Goals
SEO
Marketing/Sales
Tuesday, July 30, 13
![Page 32: Selecting a Web Framework](https://reader035.vdocuments.net/reader035/viewer/2022062418/5555f9a3d8b42a8a5f8b5055/html5/thumbnails/32.jpg)
FRAMEWORK CHEAT SHEET
Tuesday, July 30, 13
![Page 33: Selecting a Web Framework](https://reader035.vdocuments.net/reader035/viewer/2022062418/5555f9a3d8b42a8a5f8b5055/html5/thumbnails/33.jpg)
PHPhttp://www.phpframeworks.com/
Yii, CodeIgniter, Symphony, CakePHP, Zend
Common language, decent performance
Reputation for security issues (unwarranted?)
Viewed as a sunsetting language
Tuesday, July 30, 13
![Page 34: Selecting a Web Framework](https://reader035.vdocuments.net/reader035/viewer/2022062418/5555f9a3d8b42a8a5f8b5055/html5/thumbnails/34.jpg)
Java, JVMBenefits greatly from the JVM
Spring, Stripes, Tapestry ...
Grails/Groovy, Clojure, Lift/Scala
Common language, Clojure/Scala are growing skill sets
Tuesday, July 30, 13
![Page 35: Selecting a Web Framework](https://reader035.vdocuments.net/reader035/viewer/2022062418/5555f9a3d8b42a8a5f8b5055/html5/thumbnails/35.jpg)
Python/RubyPython
Django, Pyramid, Pylons, web2py
Strong data and science support
Explicit language, good for new learners
Ruby
Rails by far the most common
Quick to learn, hard to master
“Gems” written for nearly every problem to be solved
Poor security reputation
Tuesday, July 30, 13
![Page 36: Selecting a Web Framework](https://reader035.vdocuments.net/reader035/viewer/2022062418/5555f9a3d8b42a8a5f8b5055/html5/thumbnails/36.jpg)
JavaScriptNode!
MV* frameworks abound
Build as much or little was you want
Tuesday, July 30, 13
![Page 37: Selecting a Web Framework](https://reader035.vdocuments.net/reader035/viewer/2022062418/5555f9a3d8b42a8a5f8b5055/html5/thumbnails/37.jpg)
INTERACTIVE
Tuesday, July 30, 13
![Page 38: Selecting a Web Framework](https://reader035.vdocuments.net/reader035/viewer/2022062418/5555f9a3d8b42a8a5f8b5055/html5/thumbnails/38.jpg)
Game plan
Form teams
Choose a number
Choose [number] “team member” cards
Choose a solution to build
Tuesday, July 30, 13
![Page 39: Selecting a Web Framework](https://reader035.vdocuments.net/reader035/viewer/2022062418/5555f9a3d8b42a8a5f8b5055/html5/thumbnails/39.jpg)
Activity
Discuss the top 3+ features/requirements for building solution
Based on your requirements and resources, what framework would you use?
Let me know if you need an additional challenge.
(After) Present to the group
Tuesday, July 30, 13
![Page 40: Selecting a Web Framework](https://reader035.vdocuments.net/reader035/viewer/2022062418/5555f9a3d8b42a8a5f8b5055/html5/thumbnails/40.jpg)
Interactive
Framework criteria list: http://bit.ly/13UueHf
Keep in mind:
How do we reach our outcomes?
Are we appropriately weighing the factors?
Can we see multiple ‘optimal’ solutions?
Tuesday, July 30, 13
![Page 41: Selecting a Web Framework](https://reader035.vdocuments.net/reader035/viewer/2022062418/5555f9a3d8b42a8a5f8b5055/html5/thumbnails/41.jpg)
DISCUSS!https://frameworks.hackpad.com/
Tuesday, July 30, 13
![Page 42: Selecting a Web Framework](https://reader035.vdocuments.net/reader035/viewer/2022062418/5555f9a3d8b42a8a5f8b5055/html5/thumbnails/42.jpg)
CASE STUDIES
Tuesday, July 30, 13
![Page 43: Selecting a Web Framework](https://reader035.vdocuments.net/reader035/viewer/2022062418/5555f9a3d8b42a8a5f8b5055/html5/thumbnails/43.jpg)
Tuesday, July 30, 13
![Page 44: Selecting a Web Framework](https://reader035.vdocuments.net/reader035/viewer/2022062418/5555f9a3d8b42a8a5f8b5055/html5/thumbnails/44.jpg)
AxisPhilly priorities
End user experience (writers)
Extendibility
Future maintenance
Tuesday, July 30, 13
![Page 45: Selecting a Web Framework](https://reader035.vdocuments.net/reader035/viewer/2022062418/5555f9a3d8b42a8a5f8b5055/html5/thumbnails/45.jpg)
Outcomes
Mobile-friendly
Writers don’t rely in IT
In and out-of-site apps
Common platform makes solution-finding simple
Tuesday, July 30, 13
![Page 46: Selecting a Web Framework](https://reader035.vdocuments.net/reader035/viewer/2022062418/5555f9a3d8b42a8a5f8b5055/html5/thumbnails/46.jpg)
Tuesday, July 30, 13
![Page 47: Selecting a Web Framework](https://reader035.vdocuments.net/reader035/viewer/2022062418/5555f9a3d8b42a8a5f8b5055/html5/thumbnails/47.jpg)
AdHawk priorities
Hack weekend/Limited time and resources
Team skills and commonalities
Libraries available
Tuesday, July 30, 13
![Page 48: Selecting a Web Framework](https://reader035.vdocuments.net/reader035/viewer/2022062418/5555f9a3d8b42a8a5f8b5055/html5/thumbnails/48.jpg)
Tuesday, July 30, 13
![Page 49: Selecting a Web Framework](https://reader035.vdocuments.net/reader035/viewer/2022062418/5555f9a3d8b42a8a5f8b5055/html5/thumbnails/49.jpg)
AdHawk NumbersReleased by Sunlight 8/22/2012
12.5k downloads
Identified 4k+ ads
Tuesday, July 30, 13
![Page 50: Selecting a Web Framework](https://reader035.vdocuments.net/reader035/viewer/2022062418/5555f9a3d8b42a8a5f8b5055/html5/thumbnails/50.jpg)
SURVEY SAYS ...
Tuesday, July 30, 13
![Page 51: Selecting a Web Framework](https://reader035.vdocuments.net/reader035/viewer/2022062418/5555f9a3d8b42a8a5f8b5055/html5/thumbnails/51.jpg)
Prioritize Concerns
Best tool for the job. Scalability is great -- *if* scalability is a primary concern. Speed is great -- *if* speed is a primary concern. Repeat for team experience, ease of use, avoiding polyglot, etc.
If you're using the same tool for every service in your stack, you're probably letting bias play too big a role.
Tom Shawver, Leadnomics
Tuesday, July 30, 13
![Page 52: Selecting a Web Framework](https://reader035.vdocuments.net/reader035/viewer/2022062418/5555f9a3d8b42a8a5f8b5055/html5/thumbnails/52.jpg)
What they want
My clients have generally come to me, and said “I want a [Drupal | WordPress | NationBuilder] site”
Marjorie, Spatial Analyst & Freelance Software Developer
Tuesday, July 30, 13
![Page 53: Selecting a Web Framework](https://reader035.vdocuments.net/reader035/viewer/2022062418/5555f9a3d8b42a8a5f8b5055/html5/thumbnails/53.jpg)
Work within resources
[My top concerns are] compatibility with pre-existing infrastructure, how a given language or framework meets the design requirements, pre-existing knowledge, longer-term scalability concerns
Tuesday, July 30, 13
![Page 54: Selecting a Web Framework](https://reader035.vdocuments.net/reader035/viewer/2022062418/5555f9a3d8b42a8a5f8b5055/html5/thumbnails/54.jpg)
Common Top Priorities
Experience (6)
Scalability (3)
Use case/Design (3)
Libraries/Tools (2)
“Right tool for the job” (2)
Tuesday, July 30, 13
![Page 55: Selecting a Web Framework](https://reader035.vdocuments.net/reader035/viewer/2022062418/5555f9a3d8b42a8a5f8b5055/html5/thumbnails/55.jpg)
How to choose a framework
Prioritize your criteria
Work with what you have
Cut away things you can’t control
Tuesday, July 30, 13
![Page 56: Selecting a Web Framework](https://reader035.vdocuments.net/reader035/viewer/2022062418/5555f9a3d8b42a8a5f8b5055/html5/thumbnails/56.jpg)
COMPARISONS & RESEARCH
Tuesday, July 30, 13
![Page 57: Selecting a Web Framework](https://reader035.vdocuments.net/reader035/viewer/2022062418/5555f9a3d8b42a8a5f8b5055/html5/thumbnails/57.jpg)
Quantitativehttps://github.com/TechEmpower/FrameworkBenchmarks
Tests on EC2
Results at http://www.techempower.com/benchmarks/
Tuesday, July 30, 13
![Page 58: Selecting a Web Framework](https://reader035.vdocuments.net/reader035/viewer/2022062418/5555f9a3d8b42a8a5f8b5055/html5/thumbnails/58.jpg)
Java CommunityMatt Raible, presented this year on the topic http://slidesha.re/YOcbTj, http://bit.ly/15pXYvz (PDF)
Good statistics on language trends
Good notes on the history of framework development
Tuesday, July 30, 13
![Page 59: Selecting a Web Framework](https://reader035.vdocuments.net/reader035/viewer/2022062418/5555f9a3d8b42a8a5f8b5055/html5/thumbnails/59.jpg)
Source: Matt Raible
Tuesday, July 30, 13
![Page 60: Selecting a Web Framework](https://reader035.vdocuments.net/reader035/viewer/2022062418/5555f9a3d8b42a8a5f8b5055/html5/thumbnails/60.jpg)
JavaScript CommunityCommon interests
Event handling/DOM access
The “Single-Page App”
Client + Server-side combos
Tuesday, July 30, 13
![Page 61: Selecting a Web Framework](https://reader035.vdocuments.net/reader035/viewer/2022062418/5555f9a3d8b42a8a5f8b5055/html5/thumbnails/61.jpg)
Tuesday, July 30, 13
![Page 62: Selecting a Web Framework](https://reader035.vdocuments.net/reader035/viewer/2022062418/5555f9a3d8b42a8a5f8b5055/html5/thumbnails/62.jpg)
More Projects
TasteJS, PropertyCross
https://github.com/paulmillr/ostio-apps, TasteStack
Tuesday, July 30, 13
![Page 63: Selecting a Web Framework](https://reader035.vdocuments.net/reader035/viewer/2022062418/5555f9a3d8b42a8a5f8b5055/html5/thumbnails/63.jpg)
How to choose a framework
Prioritize your criteria
Work with what you have
Cut away things you can’t control
Tuesday, July 30, 13
![Page 64: Selecting a Web Framework](https://reader035.vdocuments.net/reader035/viewer/2022062418/5555f9a3d8b42a8a5f8b5055/html5/thumbnails/64.jpg)
How to choose a framework
Tuesday, July 30, 13
![Page 65: Selecting a Web Framework](https://reader035.vdocuments.net/reader035/viewer/2022062418/5555f9a3d8b42a8a5f8b5055/html5/thumbnails/65.jpg)
How to choose a framework
You can’t get it (too) wrong
Tuesday, July 30, 13
![Page 66: Selecting a Web Framework](https://reader035.vdocuments.net/reader035/viewer/2022062418/5555f9a3d8b42a8a5f8b5055/html5/thumbnails/66.jpg)
How to choose a framework
You can’t get it (too) wrong
Learning the lay of the land helps
Tuesday, July 30, 13
![Page 67: Selecting a Web Framework](https://reader035.vdocuments.net/reader035/viewer/2022062418/5555f9a3d8b42a8a5f8b5055/html5/thumbnails/67.jpg)
How to choose a framework
You can’t get it (too) wrong
Learning the lay of the land helps
But knowing your team and resources helps more.
Tuesday, July 30, 13
![Page 68: Selecting a Web Framework](https://reader035.vdocuments.net/reader035/viewer/2022062418/5555f9a3d8b42a8a5f8b5055/html5/thumbnails/68.jpg)
THANK YOU!Pam Selle // @pamasaur // thewebivore.com
Tuesday, July 30, 13
![Page 69: Selecting a Web Framework](https://reader035.vdocuments.net/reader035/viewer/2022062418/5555f9a3d8b42a8a5f8b5055/html5/thumbnails/69.jpg)
Discussion
Share your name/organization
What’s your decision role in your organization?
What’s your top consideration and why?
Share a story
Tuesday, July 30, 13