2. History 101
back in 2006 we looked for a storage solution
we found JCR, back then in the form of JSR-170
started to use and port it
adopted JSR-283 along the way
Inspiring people to
share
3. Java vs. PHP
Name clashes
• clone, and
Method signatures
• optional parameters
• different parameter order
too many objects
Inspiring people to
share
4. History 101
transparent object persistence on top of TYPO3CR
TYPO3
FLOW3 Persistence
TYPO3 Content Repository
PDO ...
SQLite PgSQL MySQL ...
Inspiring people to
share
5. History 101
wanted to move TYPO3CR on top of FLOW3
TYPO3
FLOW3 Persistence
TYPO3 Content Repository
PDO ...
SQLite PgSQL MySQL ...
Inspiring people to
share
6. History 101
wanted to move TYPO3CR on top of FLOW3
TYPO3
TYPO3 Content Repository
FLOW3 Persistence
PDO ...
SQLite PgSQL MySQL ...
Inspiring people to
share
7. History 101
we decided to not use TYPO3CR anymore at all
now we use it again after starting from scratch
http://bit.ly/froscamp2010
Inspiring people to
share
8. What do we need?
website content
• (sort of) unstructured
• dependent on use case
• little logic
domain models
• for complex business logic
display both on a website
Inspiring people to
share
9. TYPO3CR today
inspired by—but not bound to—JCR and Sling
not implementing any specification
has what we need for TYPO3
leaves out a loft of cruft
can combine unstructured content and domain
models just fine
spicy workspaces the way we like ‘em
Inspiring people to
share
10. Using nodes in TYPO3
website content usually stored in nodes
content types define properties of content
Fluid templates and TypoScript define rendering
paths are the base, context provides details
Inspiring people to
share
11. /sites/typo3.org/homepage/
typo3.org /sites/typo3.org/homepage/section:main/welcometxt1
mul en en
ZZ EN EN
homepage section:main welcometxt1
title: Home content: ...
en en
EN EN
section:side moreinfo1
content: ...
en en en
EN EN EN
about section:main abouttxt1
/sites/typo3.org/homepage/about/section:main/twocolumn1/section:left/lefttxt1
title: About content: ...
en en en
EN EN EN
twocolumn1 section:left lefttxt1
content: void content: ...
en en
EN EN
section:right righttxt1
content: ...
de de
DE DE
section:right righttxt1
content: ...
en en
EN EN
section:side moreinfo2
content: ...
Inspiring people to
share
de de de
12. en en
EN EN
section:right righttxt1
content: ...
de de
DE DE
section:right righttxt1
content: ...
en en
EN EN
section:side moreinfo2
content: ...
de de de
ZZ ZZ DE
spenden section:main spendentxt1
title: Spenden content: ...
de
CH
spendentxt2
content: ...
de de
ZZ DE
section:side mehrinfo1
content: ...
es
ES
donar
title: Donar
en
EN
donate
title: Donate Inspiring people to
share
13. Workspaces
built into TYPO3 right away
shine through with copy-on-write
Inspiring people to
share
14. typo3.org
mul
ZZ
homepage
title: Home
en
EN
about
title: About
de
ZZ
spenden
title: Spenden
“live”
Inspiring people to
share
15. typo3.org typo3.org
mul mul
ZZ ZZ
homepage homepage
title: Home title: Home
en en
EN EN
about about
title: About title: About
de de
ZZ ZZ
spenden spenden
title: Spenden title: Spenden
“live” “user-liga”
Inspiring people to
share
16. typo3.org typo3.org
mul mul
ZZ ZZ
homepage homepage
title: Home title: Home
en en
EN EN
about about
title: About title: About
de de
lv
ZZ ZZ
LV
spenden spenden
ziedot
title: Spenden title: Spenden
title: Ziedot
“live” “user-liga”
Inspiring people to
share
17. Workspaces
can be nested at will
no editing in live
every user has a personal workspace
Inspiring people to
share
18. Versioning
currently in planning phase
will be a FLOW3 persistence feature
TYPO3 user interface will expose the
underlying data
Inspiring people to
share