SlideShare a Scribd company logo
1 of 12
Download to read offline
INTRODUCING
TIKI ADDONS
Nelson Ko – Feb 26, 2015
Background
¨  It all started with Tiki Profiles
¨  We have a way to quickly install preferences and
Tiki objects – great!
¨  Some issues faced:
¤  Too much work to write profiles from scratch, but we
can now export profiles – great!
¤  Profiles useful for “demos” but so far not so good for
“ready to use” features – why?
“Ready to use” features
¨  Needs configurable preferences
¤  Variations of use cases (without forking profiles)
¨  Needs custom templates (and custom CSS), e.g.
¤  Pretty tracker templates
¤  List/CustomSearch plugin templates
¤  Activity stream/notification templates
¨  Needs versioning and dependency management
¤  Able to systematically install, upgrade, remove
¤  Able to specify what else is installed first
Demo
¨  Event calendar version 0.1
¨  Someone installs it
¨  Now added new field in the tracker, and added
preferences to make some fields optional, released
as version 0.2
¨  Let’s upgrade from version 0.1 to 0.2
Do Tiki addons support code?
¨  Views (thinking of changing name as it seems potentially confusing)
¤  Think of it as a wiki-plugin but it executes specifically
through the Addon wiki-plugin
¤  Pretty much the same except it has its own namespace
¤  Views can also execute as a module
¨  Libs
¤  Introduced through standard (relatively new) Tiki
custom.xml style dependency injection
¤  e.g. a custom AJAX service or lib used by views
What is the Addons API in Tiki?
¨  To make sure that things that affect Tiki directly are
part of Tiki itself (avoid Drupal problem)
¤  To reduce duplication
¤  To make it easier for other add-ons to use “core-type”
functionality without reinventing the wheel
¤  E.g. Organic Groups API: The concept of organic groups is
core functionality but each addon is different
¤  E.g. Navbar API: Every addon might need a nav bar, but
every nav bar is different
¤  E.g. File Gallery API: Every addon might need its own File
Galleries - makes sense to have standard way to use them
Best practices
¨  Addons should be more about profiles and
templates than they are about code
¨  Component features should be in Tiki core and not
addons
¨  A good addon should interface to Tiki in
predictable ways (limit breakage on refactor)
¤  Addon APIs
¤  Directly extending classes in systematic, limited way
¤  Make limited direct calls to legacy Tiki functions
Why GITHUB?
¨  Distributed responsibilities need distributed
development environments
¨  Easy to fork and merge back from various forks
¤  Encourage innovation through variants of each addon
But need (currently missing) Tiki Addons directory
¤  Centralized hub, easily searchable, feedback/rating
¨  But need git-svn (unless other solution exists) sync
¤  Calculated in community commit stats
Potential (App store concept)
¨  The vision is to have one day an “app-store” of
different “ready-to-use” features that can be
installed à Expand user base
¨  Expand developer/power-user community
¤  Casual developers/power-users do not ever need to
touch Tiki core code if they are doing just profile +
template based addons
¤  More serious coders are encouraged to contribute to
Tiki core (in the Addons API and also in the lib/core/…
e.g. lib/core/Services)
Possible Tiki addons
¨  Knowledge repositories
¨  CRM / ERP
¨  Shopping carts
¨  Project management apps
¨  Social networking apps
¨  Activity streams
¨  Organic Groups
¨  Search UI
¨  Integration with 3rd party apps
¤  some key open source software can be integrated within Tiki
but of course impossible to have too many in core
What’s missing
¨  Tiki Addons directory
¤  Easily searchable
¤  Feedback and rating
¤  Code itself can be on GITHUB but linked here
¨  More developer documentation
¤  Improve existing
¤  More examples
¤  More webinars
What’s missing
¨  Display installed addons to users by default
somewhere
¤  Link to the specified homepage for each addon?
¨  Addons installer needs to record preferences
changed by addons
¤  Intelligently warn conflicts
¨  Expand pref. name limit to beyond 40 characters
¨  Non-console admin panel way to install addons

More Related Content

What's hot

Transitioning from SVN to GIT
Transitioning from SVN to GITTransitioning from SVN to GIT
Transitioning from SVN to GITAcquia
 
Natural Language UI Testing using Behavior Driven Development with Pavlov and...
Natural Language UI Testing using Behavior Driven Development with Pavlov and...Natural Language UI Testing using Behavior Driven Development with Pavlov and...
Natural Language UI Testing using Behavior Driven Development with Pavlov and...Eric DeLabar
 
MicroServices for Java Developers
MicroServices for Java Developers MicroServices for Java Developers
MicroServices for Java Developers Red Hat Developers
 
Azure App Service
Azure App ServiceAzure App Service
Azure App ServiceBizTalk360
 
Nuxeo & React Native
Nuxeo & React Native Nuxeo & React Native
Nuxeo & React Native Nuxeo
 
Building Salesforce1 Communities Apps with React Native and Flux
Building Salesforce1 Communities Apps with React Native and FluxBuilding Salesforce1 Communities Apps with React Native and Flux
Building Salesforce1 Communities Apps with React Native and FluxSalesforce Developers
 
Ingress? That’s So 2020! Introducing the Kubernetes Gateway API
Ingress? That’s So 2020! Introducing the Kubernetes Gateway APIIngress? That’s So 2020! Introducing the Kubernetes Gateway API
Ingress? That’s So 2020! Introducing the Kubernetes Gateway APIVMware Tanzu
 
API designing with WSO2 API Manager
API designing with WSO2 API ManagerAPI designing with WSO2 API Manager
API designing with WSO2 API ManagerWSO2
 
Drupal 8 Lessons From the Field: What is Continuous Delivery and Why it’s imp...
Drupal 8 Lessons From the Field: What is Continuous Delivery and Why it’s imp...Drupal 8 Lessons From the Field: What is Continuous Delivery and Why it’s imp...
Drupal 8 Lessons From the Field: What is Continuous Delivery and Why it’s imp...Acquia
 
React native - React(ive) Way To Build Native Mobile Apps
React native - React(ive) Way To Build Native Mobile AppsReact native - React(ive) Way To Build Native Mobile Apps
React native - React(ive) Way To Build Native Mobile AppsJimit Shah
 
Full-Stack Development with Spring Boot and VueJS
Full-Stack Development with Spring Boot and VueJSFull-Stack Development with Spring Boot and VueJS
Full-Stack Development with Spring Boot and VueJSVMware Tanzu
 
How to Write Alfresco Addons that Last Forever
How to Write Alfresco Addons that Last ForeverHow to Write Alfresco Addons that Last Forever
How to Write Alfresco Addons that Last ForeverAngel Borroy López
 
Experiences building apps with React Native @DomCode 2016
Experiences building apps with React Native @DomCode 2016Experiences building apps with React Native @DomCode 2016
Experiences building apps with React Native @DomCode 2016Adrian Philipp
 
Java and DevOps: Supercharge Your Delivery Pipeline with Containers
Java and DevOps: Supercharge Your Delivery Pipeline with ContainersJava and DevOps: Supercharge Your Delivery Pipeline with Containers
Java and DevOps: Supercharge Your Delivery Pipeline with ContainersRed Hat Developers
 
Cross-platform Mobile Development on Open Source
Cross-platform Mobile Development on Open SourceCross-platform Mobile Development on Open Source
Cross-platform Mobile Development on Open SourceAll Things Open
 
Deep Dive on Continuous Integration and Continuous Delivery in Anypoint Platf...
Deep Dive on Continuous Integration and Continuous Delivery in Anypoint Platf...Deep Dive on Continuous Integration and Continuous Delivery in Anypoint Platf...
Deep Dive on Continuous Integration and Continuous Delivery in Anypoint Platf...NaimishKakkad2
 

What's hot (20)

Transitioning from SVN to GIT
Transitioning from SVN to GITTransitioning from SVN to GIT
Transitioning from SVN to GIT
 
Natural Language UI Testing using Behavior Driven Development with Pavlov and...
Natural Language UI Testing using Behavior Driven Development with Pavlov and...Natural Language UI Testing using Behavior Driven Development with Pavlov and...
Natural Language UI Testing using Behavior Driven Development with Pavlov and...
 
MicroServices for Java Developers
MicroServices for Java Developers MicroServices for Java Developers
MicroServices for Java Developers
 
Azure App Service
Azure App ServiceAzure App Service
Azure App Service
 
Orion
OrionOrion
Orion
 
Nuxeo & React Native
Nuxeo & React Native Nuxeo & React Native
Nuxeo & React Native
 
Building Salesforce1 Communities Apps with React Native and Flux
Building Salesforce1 Communities Apps with React Native and FluxBuilding Salesforce1 Communities Apps with React Native and Flux
Building Salesforce1 Communities Apps with React Native and Flux
 
Ingress? That’s So 2020! Introducing the Kubernetes Gateway API
Ingress? That’s So 2020! Introducing the Kubernetes Gateway APIIngress? That’s So 2020! Introducing the Kubernetes Gateway API
Ingress? That’s So 2020! Introducing the Kubernetes Gateway API
 
API designing with WSO2 API Manager
API designing with WSO2 API ManagerAPI designing with WSO2 API Manager
API designing with WSO2 API Manager
 
Drupal 8 Lessons From the Field: What is Continuous Delivery and Why it’s imp...
Drupal 8 Lessons From the Field: What is Continuous Delivery and Why it’s imp...Drupal 8 Lessons From the Field: What is Continuous Delivery and Why it’s imp...
Drupal 8 Lessons From the Field: What is Continuous Delivery and Why it’s imp...
 
React native - React(ive) Way To Build Native Mobile Apps
React native - React(ive) Way To Build Native Mobile AppsReact native - React(ive) Way To Build Native Mobile Apps
React native - React(ive) Way To Build Native Mobile Apps
 
GitHub for partners
GitHub for partnersGitHub for partners
GitHub for partners
 
Full-Stack Development with Spring Boot and VueJS
Full-Stack Development with Spring Boot and VueJSFull-Stack Development with Spring Boot and VueJS
Full-Stack Development with Spring Boot and VueJS
 
How to Write Alfresco Addons that Last Forever
How to Write Alfresco Addons that Last ForeverHow to Write Alfresco Addons that Last Forever
How to Write Alfresco Addons that Last Forever
 
Experiences building apps with React Native @DomCode 2016
Experiences building apps with React Native @DomCode 2016Experiences building apps with React Native @DomCode 2016
Experiences building apps with React Native @DomCode 2016
 
Firebase
FirebaseFirebase
Firebase
 
Java and DevOps: Supercharge Your Delivery Pipeline with Containers
Java and DevOps: Supercharge Your Delivery Pipeline with ContainersJava and DevOps: Supercharge Your Delivery Pipeline with Containers
Java and DevOps: Supercharge Your Delivery Pipeline with Containers
 
React Native
React NativeReact Native
React Native
 
Cross-platform Mobile Development on Open Source
Cross-platform Mobile Development on Open SourceCross-platform Mobile Development on Open Source
Cross-platform Mobile Development on Open Source
 
Deep Dive on Continuous Integration and Continuous Delivery in Anypoint Platf...
Deep Dive on Continuous Integration and Continuous Delivery in Anypoint Platf...Deep Dive on Continuous Integration and Continuous Delivery in Anypoint Platf...
Deep Dive on Continuous Integration and Continuous Delivery in Anypoint Platf...
 

Similar to Tiki Addons

"Dude, where’s my boilerplate? ", Oleksii Makodzeba
"Dude, where’s my boilerplate? ", Oleksii Makodzeba"Dude, where’s my boilerplate? ", Oleksii Makodzeba
"Dude, where’s my boilerplate? ", Oleksii MakodzebaFwdays
 
Backstage at CNCF Madison.pptx
Backstage at CNCF Madison.pptxBackstage at CNCF Madison.pptx
Backstage at CNCF Madison.pptxBrandenTimm1
 
Developing for the Atlassian Ecosystem
Developing for the Atlassian EcosystemDeveloping for the Atlassian Ecosystem
Developing for the Atlassian EcosystemAlex Henderson
 
Strategies and Tips for Building Enterprise Drupal Applications - PNWDS 2013
Strategies and Tips for Building Enterprise Drupal Applications - PNWDS 2013Strategies and Tips for Building Enterprise Drupal Applications - PNWDS 2013
Strategies and Tips for Building Enterprise Drupal Applications - PNWDS 2013Mack Hardy
 
August OpenNTF Webinar - Git and GitHub Explained
August OpenNTF Webinar - Git and GitHub ExplainedAugust OpenNTF Webinar - Git and GitHub Explained
August OpenNTF Webinar - Git and GitHub ExplainedHoward Greenberg
 
RubyMotion Inspect Conference - 2013. (With speaker notes.)
RubyMotion Inspect Conference - 2013. (With speaker notes.)RubyMotion Inspect Conference - 2013. (With speaker notes.)
RubyMotion Inspect Conference - 2013. (With speaker notes.)alloy020
 
Creating and Maintaining an Open Source Library
Creating and Maintaining an Open Source LibraryCreating and Maintaining an Open Source Library
Creating and Maintaining an Open Source LibraryNicholas Schweitzer
 
Publishing strategies for API documentation
Publishing strategies for API documentationPublishing strategies for API documentation
Publishing strategies for API documentationTom Johnson
 
Light-up-your-out-of-the-box LightSwitch Application
Light-up-your-out-of-the-box LightSwitch ApplicationLight-up-your-out-of-the-box LightSwitch Application
Light-up-your-out-of-the-box LightSwitch ApplicationBoulos Dib
 
Creating a World-Class RESTful Web Services API
Creating a World-Class RESTful Web Services APICreating a World-Class RESTful Web Services API
Creating a World-Class RESTful Web Services APIDavid Keener
 
The happy developer - SharePoint Framework React and Mindfulness
The happy developer - SharePoint Framework React and MindfulnessThe happy developer - SharePoint Framework React and Mindfulness
The happy developer - SharePoint Framework React and MindfulnessOlli Jääskeläinen
 
33 Software Development Tools that Drive Dialexa’s Success
33 Software Development Tools that Drive Dialexa’s Success33 Software Development Tools that Drive Dialexa’s Success
33 Software Development Tools that Drive Dialexa’s SuccessDialexa
 
Boilerplates: Step up your Web Development Process
Boilerplates: Step up your Web Development ProcessBoilerplates: Step up your Web Development Process
Boilerplates: Step up your Web Development ProcessFibonalabs
 
Survival Strategies for API Documentation: Presentation to Southwestern Ontar...
Survival Strategies for API Documentation: Presentation to Southwestern Ontar...Survival Strategies for API Documentation: Presentation to Southwestern Ontar...
Survival Strategies for API Documentation: Presentation to Southwestern Ontar...Tom Johnson
 
Integrate Applications into IBM Connections Cloud and On Premises (AD 1632)
Integrate Applications into IBM Connections Cloud and On Premises (AD 1632)Integrate Applications into IBM Connections Cloud and On Premises (AD 1632)
Integrate Applications into IBM Connections Cloud and On Premises (AD 1632)TIMETOACT GROUP
 
How and Why you can and should Participate in Open Source Projects (AMIS, Sof...
How and Why you can and should Participate in Open Source Projects (AMIS, Sof...How and Why you can and should Participate in Open Source Projects (AMIS, Sof...
How and Why you can and should Participate in Open Source Projects (AMIS, Sof...Lucas Jellema
 
Streamlining Data Science Workflows with a Feature Catalog
Streamlining Data Science Workflows with a Feature CatalogStreamlining Data Science Workflows with a Feature Catalog
Streamlining Data Science Workflows with a Feature CatalogGoDataDriven
 
UKLUG 2012 - XPages, Beyond the basics
UKLUG 2012 - XPages, Beyond the basicsUKLUG 2012 - XPages, Beyond the basics
UKLUG 2012 - XPages, Beyond the basicsUlrich Krause
 
sopac : connecting koha and drupal
sopac : connecting koha and drupalsopac : connecting koha and drupal
sopac : connecting koha and drupalNicolas Morin
 
API Platform Cloud Service best practice - OOW17
API Platform Cloud Service best practice - OOW17API Platform Cloud Service best practice - OOW17
API Platform Cloud Service best practice - OOW17Phil Wilkins
 

Similar to Tiki Addons (20)

"Dude, where’s my boilerplate? ", Oleksii Makodzeba
"Dude, where’s my boilerplate? ", Oleksii Makodzeba"Dude, where’s my boilerplate? ", Oleksii Makodzeba
"Dude, where’s my boilerplate? ", Oleksii Makodzeba
 
Backstage at CNCF Madison.pptx
Backstage at CNCF Madison.pptxBackstage at CNCF Madison.pptx
Backstage at CNCF Madison.pptx
 
Developing for the Atlassian Ecosystem
Developing for the Atlassian EcosystemDeveloping for the Atlassian Ecosystem
Developing for the Atlassian Ecosystem
 
Strategies and Tips for Building Enterprise Drupal Applications - PNWDS 2013
Strategies and Tips for Building Enterprise Drupal Applications - PNWDS 2013Strategies and Tips for Building Enterprise Drupal Applications - PNWDS 2013
Strategies and Tips for Building Enterprise Drupal Applications - PNWDS 2013
 
August OpenNTF Webinar - Git and GitHub Explained
August OpenNTF Webinar - Git and GitHub ExplainedAugust OpenNTF Webinar - Git and GitHub Explained
August OpenNTF Webinar - Git and GitHub Explained
 
RubyMotion Inspect Conference - 2013. (With speaker notes.)
RubyMotion Inspect Conference - 2013. (With speaker notes.)RubyMotion Inspect Conference - 2013. (With speaker notes.)
RubyMotion Inspect Conference - 2013. (With speaker notes.)
 
Creating and Maintaining an Open Source Library
Creating and Maintaining an Open Source LibraryCreating and Maintaining an Open Source Library
Creating and Maintaining an Open Source Library
 
Publishing strategies for API documentation
Publishing strategies for API documentationPublishing strategies for API documentation
Publishing strategies for API documentation
 
Light-up-your-out-of-the-box LightSwitch Application
Light-up-your-out-of-the-box LightSwitch ApplicationLight-up-your-out-of-the-box LightSwitch Application
Light-up-your-out-of-the-box LightSwitch Application
 
Creating a World-Class RESTful Web Services API
Creating a World-Class RESTful Web Services APICreating a World-Class RESTful Web Services API
Creating a World-Class RESTful Web Services API
 
The happy developer - SharePoint Framework React and Mindfulness
The happy developer - SharePoint Framework React and MindfulnessThe happy developer - SharePoint Framework React and Mindfulness
The happy developer - SharePoint Framework React and Mindfulness
 
33 Software Development Tools that Drive Dialexa’s Success
33 Software Development Tools that Drive Dialexa’s Success33 Software Development Tools that Drive Dialexa’s Success
33 Software Development Tools that Drive Dialexa’s Success
 
Boilerplates: Step up your Web Development Process
Boilerplates: Step up your Web Development ProcessBoilerplates: Step up your Web Development Process
Boilerplates: Step up your Web Development Process
 
Survival Strategies for API Documentation: Presentation to Southwestern Ontar...
Survival Strategies for API Documentation: Presentation to Southwestern Ontar...Survival Strategies for API Documentation: Presentation to Southwestern Ontar...
Survival Strategies for API Documentation: Presentation to Southwestern Ontar...
 
Integrate Applications into IBM Connections Cloud and On Premises (AD 1632)
Integrate Applications into IBM Connections Cloud and On Premises (AD 1632)Integrate Applications into IBM Connections Cloud and On Premises (AD 1632)
Integrate Applications into IBM Connections Cloud and On Premises (AD 1632)
 
How and Why you can and should Participate in Open Source Projects (AMIS, Sof...
How and Why you can and should Participate in Open Source Projects (AMIS, Sof...How and Why you can and should Participate in Open Source Projects (AMIS, Sof...
How and Why you can and should Participate in Open Source Projects (AMIS, Sof...
 
Streamlining Data Science Workflows with a Feature Catalog
Streamlining Data Science Workflows with a Feature CatalogStreamlining Data Science Workflows with a Feature Catalog
Streamlining Data Science Workflows with a Feature Catalog
 
UKLUG 2012 - XPages, Beyond the basics
UKLUG 2012 - XPages, Beyond the basicsUKLUG 2012 - XPages, Beyond the basics
UKLUG 2012 - XPages, Beyond the basics
 
sopac : connecting koha and drupal
sopac : connecting koha and drupalsopac : connecting koha and drupal
sopac : connecting koha and drupal
 
API Platform Cloud Service best practice - OOW17
API Platform Cloud Service best practice - OOW17API Platform Cloud Service best practice - OOW17
API Platform Cloud Service best practice - OOW17
 

Tiki Addons

  • 2. Background ¨  It all started with Tiki Profiles ¨  We have a way to quickly install preferences and Tiki objects – great! ¨  Some issues faced: ¤  Too much work to write profiles from scratch, but we can now export profiles – great! ¤  Profiles useful for “demos” but so far not so good for “ready to use” features – why?
  • 3. “Ready to use” features ¨  Needs configurable preferences ¤  Variations of use cases (without forking profiles) ¨  Needs custom templates (and custom CSS), e.g. ¤  Pretty tracker templates ¤  List/CustomSearch plugin templates ¤  Activity stream/notification templates ¨  Needs versioning and dependency management ¤  Able to systematically install, upgrade, remove ¤  Able to specify what else is installed first
  • 4. Demo ¨  Event calendar version 0.1 ¨  Someone installs it ¨  Now added new field in the tracker, and added preferences to make some fields optional, released as version 0.2 ¨  Let’s upgrade from version 0.1 to 0.2
  • 5. Do Tiki addons support code? ¨  Views (thinking of changing name as it seems potentially confusing) ¤  Think of it as a wiki-plugin but it executes specifically through the Addon wiki-plugin ¤  Pretty much the same except it has its own namespace ¤  Views can also execute as a module ¨  Libs ¤  Introduced through standard (relatively new) Tiki custom.xml style dependency injection ¤  e.g. a custom AJAX service or lib used by views
  • 6. What is the Addons API in Tiki? ¨  To make sure that things that affect Tiki directly are part of Tiki itself (avoid Drupal problem) ¤  To reduce duplication ¤  To make it easier for other add-ons to use “core-type” functionality without reinventing the wheel ¤  E.g. Organic Groups API: The concept of organic groups is core functionality but each addon is different ¤  E.g. Navbar API: Every addon might need a nav bar, but every nav bar is different ¤  E.g. File Gallery API: Every addon might need its own File Galleries - makes sense to have standard way to use them
  • 7. Best practices ¨  Addons should be more about profiles and templates than they are about code ¨  Component features should be in Tiki core and not addons ¨  A good addon should interface to Tiki in predictable ways (limit breakage on refactor) ¤  Addon APIs ¤  Directly extending classes in systematic, limited way ¤  Make limited direct calls to legacy Tiki functions
  • 8. Why GITHUB? ¨  Distributed responsibilities need distributed development environments ¨  Easy to fork and merge back from various forks ¤  Encourage innovation through variants of each addon But need (currently missing) Tiki Addons directory ¤  Centralized hub, easily searchable, feedback/rating ¨  But need git-svn (unless other solution exists) sync ¤  Calculated in community commit stats
  • 9. Potential (App store concept) ¨  The vision is to have one day an “app-store” of different “ready-to-use” features that can be installed à Expand user base ¨  Expand developer/power-user community ¤  Casual developers/power-users do not ever need to touch Tiki core code if they are doing just profile + template based addons ¤  More serious coders are encouraged to contribute to Tiki core (in the Addons API and also in the lib/core/… e.g. lib/core/Services)
  • 10. Possible Tiki addons ¨  Knowledge repositories ¨  CRM / ERP ¨  Shopping carts ¨  Project management apps ¨  Social networking apps ¨  Activity streams ¨  Organic Groups ¨  Search UI ¨  Integration with 3rd party apps ¤  some key open source software can be integrated within Tiki but of course impossible to have too many in core
  • 11. What’s missing ¨  Tiki Addons directory ¤  Easily searchable ¤  Feedback and rating ¤  Code itself can be on GITHUB but linked here ¨  More developer documentation ¤  Improve existing ¤  More examples ¤  More webinars
  • 12. What’s missing ¨  Display installed addons to users by default somewhere ¤  Link to the specified homepage for each addon? ¨  Addons installer needs to record preferences changed by addons ¤  Intelligently warn conflicts ¨  Expand pref. name limit to beyond 40 characters ¨  Non-console admin panel way to install addons