Different technology approaches to support more experimentation / variation
P2PU offers a set of features through a production instance of Lernanta. We have limited resources to develop new feature, which limits the amount of experimentation and prototyping we can do ourselves. What are some of the underlying technical mechanisms that would allow more experimentation?
- Embed
- Embed can work both ways (we embed other peoples features, or others embed ours)
- Code runs on a central server
- Allows us to display parts of our site inside other websites (distribute features to other sites), e.g. a P2PU hosted course could be embedded on the wiki for school of maths
- Or display parts of other sites inside p2pu.org pages (add functionality we don't have)
- Integration is superficial - there are limits to what the embedded code can change on the host site, for example the embedded features can't talk to the server or change CSS.
- Concrete:
- Easier to embed p2pu through using Oembed (user only needs to know the URL from p2pu.org to automatically get the code they need to put on their site / not required to copy the embed code)
- Opportunity to try out a different forum style e.g. embed http://disqus.com/
- API
- Allows development of separate front-ends
- e.g. lighthouse api
- Plug-in architecture
- Lernanta supports the installation of plugins (they can be enabled / disabled like browser extensions or wordpress plugins)
- Plugins can offer new functionality or modify the core functionality (depending on what the plugin infraestructure allows them to do)
- Plug-in runs on thes same server as Lernanta
- Security issues, plug-ins may have access to data
- Reliability questions, what if something breaks? how do we recove?
- Clarify risk in terms of service
- Control who can install plug-ins on our server
- Modular architecture / Reusable Django apps
- Build features as semi-independent apps
- Makes it easier for others to re-use our code and include in their projects
- High barrier to contribute apps that get included in lernanta or re-use apps we have developed
- Instances
- Separate instance of lernanta
- Allows high level of customization
- Requires significant resources to maintain / coordinate
- Concrete:
- sandbox.p2pu.org and p2pu.org are separate instances of lernanta - they can have different looks, security restrictions, feature sets, etc.
- Feature Flags