#SummitNow Lessons Learnt From Share Extras Alfresco Summit 2013 Will Abson
#SummitNow My Role at Alfresco At Alfresco since 2005 First Share Customizations 2008 Founded Share Extras project 2010 Joined Integrations Team 2012
#SummitNow What is Share Extras? Project started in 2010 Now provides over 40 add-ons Tens of 1,000s of downloads Originally hosted on Google Code Now moved to GitHub I will talk about this some more
#SummitNow Some Examples
#SummitNow What does Share Extras do? Hosting of add-ons Best practice sharing and ‘SDK’ Our role is changing Increasing maturity of services allowing you to host your own projects But, more frameworks and tools Concentrate on processes and contributions
#SummitNow
Migration to GitHub Started end of 2012 Completed Nov 2013 Not just a matter of copying source files over! Issues Wiki pages Releases / Downloads
#SummitNow From Subversion to Git Code migration was the first major task git-svn is a great tool Branches were preserved Tags were added afterwards Needed to map committer identities
#SummitNow Breaking Apart the Project Previously a single monolithic project Google Code has no concept of organizations, only individual isolated projects Smaller projects are much better for encouraging contributions
#SummitNow Old Source Layout / trunk Audit Dashlet BBC Weather Dashlet CKEditor Form Control Content Expiration... branches tags
#SummitNow New Source Layout share-extras share-oauth master 1.0 oauth2-connector refresh-tokens... media-viewers audit-dashlet js-console...
#SummitNow Contributing to the Project Forking is a good thing Three separate pull requests in first three weeks on GitHub
#SummitNow Git vs. Subversion master, not trunk Branch early, branch often No working copies – clone vs. checkout Ability to work offline Reduced disk space for multiple branches
#SummitNow Maven Usage Alfresco Maven SDK Parent POM Maven usage is increasing Used by both Java-based add-ons JavaScript Console Share OAuth Starting to be applied to other add-ons Media Viewers
#SummitNow Documentation Project web site was previously the Google Code project page
#SummitNow Old Documentation Wiki pages were used to document each add-on, plus for specific general topics READMEs in project source provided some basic details, plus instructions on building and installing Content got out of sync
#SummitNow New Documentation Add-ons are documented fully in a README.md file (Markdown format) GitHub renders README files on the project page New project web site at share- extras.github.ioshare- extras.github.io Also a Git repo on share-extras/share- extras.github.com
#SummitNow
GitHub-flavored Markdown Simple, intuitive syntax e.g. *bold*, _italics_ Readable as text as well as when formatted Easily transformed to HTML
#SummitNow New Web Site Static content authored as HTML Projects split into Add-ons and SDK Project pages generated from READMEs Uses repository metadata from GitHub API Project listings ordered by update time, most recently-updated first Uses Bootstrap for basic styling
#SummitNow
Packaging JAR format was used for most projects JS Console had both JARs and AMPs Aim for both for all projects going forward AMP files should contain only the JAR file plus module.properties file for ease of removal Regardless of build system (Ant / Maven) Artifacts should be deployed to Maven
#SummitNow Release Process 1.Build locally 2.Tag release in Git and push tag 3.Edit release name and notes in GitHub 4.Add artifacts to the release 5.Push artifacts to Maven
#SummitNow Customizing Share Evolution of Alfresco UI customization Image:
#SummitNow Future Unit/Integration Testing Frameworks being investigated by UI Team Continuous Integration Service More use of Maven Apply to more projects Share Extras Parent POM
#SummitNow More Information
#SummitNow