Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
So you want to write a framework? Accidental le...
Search
Russell Keith-Magee
February 22, 2014
Programming
0
110
So you want to write a framework? Accidental lessons from a successful project
Opening keynote from PyCon PH 2014
Russell Keith-Magee
February 22, 2014
Tweet
Share
More Decks by Russell Keith-Magee
See All by Russell Keith-Magee
Python All The Things!
freakboy3742
2
340
Snakes in a browser
freakboy3742
1
120
Making a splash with your open source project
freakboy3742
0
360
Things your parents didn't teach you about sharing your toys
freakboy3742
0
370
A tale of two cellphones: Python on Android and iOS
freakboy3742
0
230
Beyond Web 2.0 - Django and Python in the modern web ecosystem
freakboy3742
0
260
Python on the move: The state of Mobile Python
freakboy3742
0
290
I am a doctor...
freakboy3742
0
140
Professional Yak Coiffure
freakboy3742
0
87
Other Decks in Programming
See All in Programming
AHC041解説
terryu16
0
400
BEエンジニアがFEの業務をできるようになるまでにやったこと
yoshida_ryushin
0
200
Package Traits
ikesyo
1
210
HTML/CSS超絶浅い説明
yuki0329
0
190
AWSのLambdaで PHPを動かす選択肢
rinchoku
2
390
技術的負債と向き合うカイゼン活動を1年続けて分かった "持続可能" なプロダクト開発
yuichiro_serita
0
300
Jaspr Dart Web Framework 박제창 @Devfest 2024
itsmedreamwalker
0
150
Amazon Nova Reelの可能性
hideg
0
200
知られざるDMMデータエンジニアの生態 〜かつてツチノコと呼ばれし者〜
takaha4k
1
460
EC2からECSへ 念願のコンテナ移行と巨大レガシーPHPアプリケーションの再構築
sumiyae
3
590
AppRouterを用いた大規模サービス開発におけるディレクトリ構成の変遷と問題点
eiganken
1
450
DevFest - Serverless 101 with Google Cloud Functions
tunmise
0
140
Featured
See All Featured
Fontdeck: Realign not Redesign
paulrobertlloyd
82
5.3k
Rebuilding a faster, lazier Slack
samanthasiow
79
8.8k
The Pragmatic Product Professional
lauravandoore
32
6.4k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
38
1.9k
Testing 201, or: Great Expectations
jmmastey
41
7.2k
Into the Great Unknown - MozCon
thekraken
34
1.6k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
132
33k
What's in a price? How to price your products and services
michaelherold
244
12k
GraphQLの誤解/rethinking-graphql
sonatard
68
10k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
330
21k
A designer walks into a library…
pauljervisheath
205
24k
Embracing the Ebb and Flow
colly
84
4.5k
Transcript
So you want to write a framework? Accidental lessons from
a successful project Dr Russell Keith-Magee PyCon PH 2014
None
None
None
I've got fingerprints elsewhere.
This isn't about Python.
This isn't about web frameworks.
Best of Breed vs Batteries Included
"Batteries Included" Frameworks "Everything comes in the box" One package
to download/install Minimal dependencies No decisions to make Documentation on the parts
"Best of Breed" Frameworks Pick from existing selection of libraries
Glue logic to tie them together Many dependencies Multiple decisions may be required Documentation on integration
None
Hybrids are possible.
Why pick one over the other?
History matters.
It's hard to be best of breed when the breed
doesn't exist yet.
Ian Bicking and SQLObject http://bit.ly/bicking-goodbye
Picking "best of breed" early can be detrimental.
History matters.
Backwards compatibility
Time is relative.
“ A rule of thumb that has worked for me
is that if I'm excited to play around with something it probably doesn't belong in production ” Maciej Ceglowski (Pinboard)
Backwards compatibility has a price.
Batteries Included can still be backwards incompatible.
Best of breed encourages you to pick and choose.
Is a choice of batteries really what is required?
"Batteries included" doesn't mean "Can't use other batteries".
Messaging matters.
Timing matters.
The 90% framework.
Out of the box experience matters.
http://goo.gl/Epzms
None
Implicit documentation
Models and Forms class MyUser(models.Model): name = models.CharField(max_length=100) age =
models.IntegerField() date_of_birth = models.DateField() class MyForm(forms.Form): name = forms.CharField(max_length=100) age = forms.IntegerField() date_of_birth = forms.DateField()
Tools vs ecosystems
Jacob's Tractor
Tools vs ecosystems
Metcalfe's Law: The utility of a network increases with the
square of it's participants.
Ecosystems
Microframeworks
Remember to share with the other children.
Sending the wrong signals.
Packaging systems matter.
Community matters.
Outreach is important.
Absent friends
http://bit.ly/malcolm-monkey-hat
http://bit.ly/malcolm-plays-spassky
Requiem in pace
“ A society grows great when old men plant trees
whose shade they know they shall never sit in. ” Greek proverb
Kid, you can move mountains. (98 and ¾ percent guaranteed)
He's not the messiah....
Thanks!
[email protected]
@freakboy3742 cecinestpasun.com djangoproject.com