silverstripe meetup presentation 03/03/2011
DESCRIPTION
This presentation was used for March's SilverStripe meetup event held in London.TRANSCRIPT
- 1. SilverStripe 3.0 Roadmap SilverStripe UK Meetup, London 3rd March 2011 Jamie Neil
2. Schedule
-
- SilverStripe history 3. Vision for 3.0 4. Development process 5. Highlights 6. Timeline 7. Questions 8. Beer
9. SilverStripe History
-
- Originally commerciallylicensed 10. First open source
version2.0 released in 2007
- BSD licence
- New minor release every year since
- ModelAdmin 11. Modularisation 12. Caching 13. i18n
- Current stable version is 2.4.5
- Management interface is still basically the same as original release
- Originally commerciallylicensed 10. First open source
version2.0 released in 2007
14. Vision for 3.0
-
- Could you build Twitter on Sapphire?
- Emphasison Sapphire as a standalone framework
- Improve and stabilise core features 15. Admin interface
facelift, but not a revolution
- Extensive customer feedback 16. Lots of work on UX
- Facilitate creation of custom user interfaces
- Plans for inline editing as primary method dropped
- Could you build Twitter on Sapphire?
17. Development Process
-
- Agile
- Being run as an internal project 18. Short iterations, measurable goals
- Transparency
- Backlog and status will be available on Trac
- http://open.silverstripe.org/
- API drafts published on development mailing list
- http://groups.google.com/group/silverstripe-dev
- Backlog and status will be available on Trac
- Agile
19. Git
-
- Modules and themes have been moved to github
- https://github.com/silverstripe/ 20. Allows decentraliseddevelopment 21. Encourage more community contributions to core
- Old subversion repos are now frozen
- Community members are providing svn mirrors
- Git doesn't have externals
- Does have submodules 22. SilverStripe is recommending piston as
a replacement
- Supports links to git andsvn
- Does have submodules 22. SilverStripe is recommending piston as
a replacement
- Modules and themes have been moved to github
23. Highlights*
- Flexible Object Relational Mapper (ORM) 24. Separating CMS and Sapphire 25. jQuery UI 26. Flexible templating 27. Performance 28. Configuration 29. Data integrity 30. Module management 31. Versioned assets 32. Data grid 33. Social
* Many things still being actively discussed, so all subject to changes 34. Object Relational Mapper (ORM)
-
- Core differentiating feature 35. Move to more expressive object
based queries
- Existing ORM exposes too much SQL
- Improve performance
- Optimise database queries 36. Less joining
- Database abstraction
- PHP Data Objects (PDO) 37. Non SQL data sources 38. MySQL to remain core due to module management
- Core differentiating feature 35. Move to more expressive object
based queries
39. Separating CMS and Sapphire
-
- Sapphire difficult to use as a stand alone framework
- Admin interface all in CMS 40. Need to be able to create pageless applications
- Plan is to bundle basic admin framework with Sapphire
- Security 41. ModelAdmin? 42. Similar to Django
- Sapphire difficult to use as a stand alone framework
43. jQuery
-
- jQuery to replace (customised) Prototype
- Already used in places, but admin interface still largely based on Prototype
- jQuery.entwine to replace behavior.js
- Progressive enhancement 44. https://github.com/hafriedlander/jquery.entwine
- jQuery UI will provide standard interface library
- Familiar to many developers 45. Will make custom themes easier to implement
- jQuery to replace (customised) Prototype
46. 47. 48. 49. 50. Flexible Templating
-
- Regexspaghettito be replaced with a proper syntax parser
- Will removearbitraryrestrictions on template args
- e.g. More than two args on an block
- String quoting 51. Inclusion 52. $Up 53. Negation
- Will removearbitraryrestrictions on template args
- Decouple from SSViewer (AJShort)
- Will allow alternative templating systems
- Regexspaghettito be replaced with a proper syntax parser
54. Performance
-
- Improvements to startup time
- Will make AJAX calls more responsive
- Efficient queries
- Less joins
- Smaller memory footprint (hopefully)
- Improvements to startup time
55. Configuration
-
- Currently very dependent on static variables
- Global state
- Move towards dependency injection
- Control inversion 56. Reduced coupling 57. Easier testing 58. https://groups.google.com/d/topic/silverstripe-dev/Lxj8QN-6Glk/discussion
- Configuration still by code
- No plans for database storage or web interface
- Currently very dependent on static variables
59. DependencyInjection Example
- classMyClass{
- + public $dataService; // Dependency defined by convention
- public function getWidgets() { - return DataObject::get('Widget');
- + return $this->dataService->get('Widget'); 60. } 61. }
- DataService is registered with the injector (container), which then used to create the object:
- Injector::inst()->instantiate('MyClass');
62. Data Integrity
-
- Foreign keys
- Native database FKs not currently used
- Constraints
- Existing arrangement can result in orphaned data
- Foreign keys
63. Module Management
-
- Addition of metadata to modules 64. Dependencies
- Currently relies on developer knowledge
- Tools could allow installation of modules along with their
dependencies
- Debian APT?
- No plans for web interface
- Addition of metadata to modules 64. Dependencies
65. Versioned Assets
-
- Files and images are currently not versioned controlled 66. Aim
to provide a workflow similar to SiteTree pages
- Could possibly be extended to relationships (which are also currently not versioned)
- Files and images are currently not versioned controlled 66. Aim
to provide a workflow similar to SiteTree pages
67. Data Grid
-
- ComplexTableField needs replacing
- Has evolved organically 68. Hard for users and developers to use 69. DataObject Manager has become the defacto choice
- New Data Grid will take advantage of plannedimprovementsto ORM
- Should make it more efficient
- ComplexTableField needs replacing
70. Social
-
- Integration with popular third party services
- Facebook 71. Twitter
- Tools to make integration with other data services easier
- Integration with popular third party services
72. Other Potential Targets
-
- ModelAdmin 73. Permissions model 74. Command line tools (sake)
75. Generic requirements checker for installer
- Can be usedafter installation
- Static publisher rewrite 76. Device independence 77. Better REST api
- ModelAdmin 73. Permissions model 74. Command line tools (sake)
75. Generic requirements checker for installer
78. Compatibility
-
- Backwardscompatibilityis important
- Good upgrade docs will be needed
- Templating language will have minimal changes
- Edge cases will be documented
- Backwards compatibility layers may be added where appropriate
79. Some features may be moved to legacy modules
- e.g. ComplexTableField 80. Avoids bloat
- Code which was deprecated in 2.4 will be removed
- Backwardscompatibilityis important
81. Timeline
-
- Alpha
- Mid 2011
- Beta
- Late 2011 82. API should be stable here
- Stable
- End 2011
- Alpha
83. Community
- Move to github intended to permit greater community
participation
- Makes accepting patches to core easier
- How can we help?
- Modules
- Even simple or unpolished ones
- Tickets in Trac
- Easy ones are tagged
- Contribute your opinions on the mailing list 84. Testing
- Once alphas are released in the summer
- Modules
85. Links
- Wellington presentation
- Video:http://vimeo.com/20075840 86. Slides:http://prezi.com/lr3lmrgdhlgj/silverstripe-3-roadmap-preview/
- Roadmap:http://silverstripe.org/roadmap 87.
Planning:http://open.silverstripe.org/wiki/planning 88. Mailing
List:http://groups.google.com/group/silverstripe-dev 89.
Designs:https://github.com/silverstripe/silverstripe-design 90.
These slides (and video) will be uploaded by next week
- http://www.gpmd.co.uk/