silverstripe meetup presentation 03/03/2011

Download SilverStripe Meetup Presentation 03/03/2011

If you can't read please download the document

Upload: wearegpmd

Post on 30-Jun-2015

631 views

Category:

Technology


2 download

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

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

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

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

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

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

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

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
    • Decouple from SSViewer (AJShort)
      • Will allow alternative templating systems

54. Performance

    • Improvements to startup time
      • Will make AJAX calls more responsive
    • Efficient queries
      • Less joins
    • Smaller memory footprint (hopefully)

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

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

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

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)

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

70. Social

    • Integration with popular third party services
      • Facebook 71. Twitter
    • Tools to make integration with other data services easier

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

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

81. Timeline

    • Alpha
      • Mid 2011
    • Beta
      • Late 2011 82. API should be stable here
    • Stable
      • End 2011

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

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/