Session
- Track: Standardization Decisions
- Topic: Componentization and sharing with the open source community
Description
Existing efforts at componentization have focused on the technical work; little if any effort was put into making new components easy to discover and use by third parties. This session will focus on that missing part, and attempt to develop a better understanding of its impact, and a "product plan" for how technical work on componentization should be followed up by documentation, promotion, monitoring etc, with resource estimates.
Questions to answer and discuss
Question: What are the benefits of making components easily usable by the broader open source community? To what extent can we quantify them? Are there any disadvantages?
Question: How can we make our components discoverable and easy to use by the broader open source community? What resources are required?
Question: How can we monitor usage of our components outside Wikimedia? (Should we?) What resources are required?
Related Issues
Pre-reading for all Participants
Post-event summary:
- ...
Post-event action items:
- @Tgr to summarize the recommendations as v0.1 of a proposal for adding outreach steps to librarization activities, and link from here
- anyone interested to collaborate on turning it into a real proposal
Session Notes:
Notes:
- For our librarisation work we are not reaching out and documenting our efforts. To promise people that we will do this is committing resources to do it. What are the requirements in supporting people in actually using our libraries?
- Try to put together sort of action plan, what are benefits that can convince product owners to spend resources on this, and what are resources needed?
- While we don't expect to complete in this session, we are hoping to start a seed for a project we can continue and complete offline
- We want to plant the seed that it is a shared responsibility, and we want to do this incrementally. We will ask you as a collective intelligence for questions
- 1: What are the benefits of making components easily usable by the broader open source community? To what extent can we quantify them? Are there any disadvantages?
- 2: How can we make the components usable by the OSS community?
- 3: How can we makes these usable outside the community?
- 4: What components and tools are the most useful and unique to promote broadly
- Process
- 1 Self reflection -1 min
- 2 Generate ideas in pairs 2 mins
- 3 Share and develop ideas - 4 mins
- 4 All: "What is the idea that stood out in your conversation" - 5 mins
- [Splitting up room into groups; to discuss questions in phases: self reflection; then generate two or three ideas in pairs; then combine to bigger groups and share / develop ideas; then the "all people" phase]
- Try to stick to 2-3 maximum ideas
- Is this method clear?
- No objections
- When you break out please immediately select the person to report back
- Question/Statement: It might be good to put the questions on the screen
Shareback for questions:
- 1: What are the benefits of making components easily usable by the broader open source community? To what extent can we quantify them? Are there any disadvantages?
- There were 3 questions wrapped into one, benefits, quantification and disadvantages
- Spent a great deal of time talking about benefits
- Attraction to 3rd party developers
- Could pull in knowledge, especially given isolation of knowledge, other domain experts, more points of view
- Could build a brand and draw in candidates ("attractive employer")
- Could force to reuse to avoid redundancies
- Discrete dependencies could make the component or lib replaceable in the future, if a better component exists
- more clear boundaries, isolate domains from each other
- We'll be implementing standards, not MVPs
- Attraction to 3rd party developers
- Disadvantages
- There could be costs if the lib is not used or picked up (e.g. overengineered implementation as a library with features that will not be used)
- Could be seen as adding to the maintenance burden
- Potential dependency if there are many libs depending on diff version of a 3rd party
- Contributors could increase bug count (might not mean it is failing but just that bugs are found at a higher rate)
- The time for bugs to be fixed could be decreased
- 2: How can we make the components usable/discoverable by the OSS community?
- First step, is if we keep it for ourselves no one can use it, so package and release it to package managers (be part of the ecosystem)
- We need to make good software, README, docs, tutrorials, usecases - need to understand the purpose clearly
- have templates/guidelines on what our minimal README / docs / tutorials should look like for our components
- what is are appropriate dependencies for a component ?
- fix the feedback cycle, so people know where to go and the software can improve
- You need to be able to sell it - how do you sell it? We are the best!
- Be discoverable/SEO (via google and package manager)
- You need to highlight the problems it solves (document unique selling point)
- One page show case
- Videos with quick tutorials or demos
- Once you have the above, you are ready to reach out
- Stackoverflow....
- Promote at conferences
- Deployment on the International Space Station!
- Proper advocacy/marketing for components
- Need a project manager
- Triage backlog, set priorities
- Need developers, developers, developers
- Need users.
- 3: How can we monitor usage of our components outside Wikimedia? (Should we?) What resources are require
- If we figuring out if this is useful, we feel the resources will be useful
- Stars in github, proxy of usage
- Download numbers
- Heavily skewed by CI
- Opt in api wikipiary method, volun-tolds you
- Ping backs
- Ethically controversial
- Opt in/out
- Focused on Opt in
- Question of should we?
- Only if we really want to build a community and expend resources on this focus
- INFO: Dependecy tab as github as a means to quantify usage
- 4: What/Which software components inside MediaWiki/Wikimedia software landscape are unique and the most valuable to be promoted in the broader open source community?
- 4 s/ws, not necessarily the four most important
- Each of us had a sense of 1 or 2:
- Banana, pure js client for message localization system (i18n)
- Universal language selector
- UI for wikidata query service (data visualization)
- OGV.js, pure js webm reader, to make sure webm is read and displayed properly everywhere
- Question: I understood the question as what are the possible candidate "components" to be extracted as a library from MediaWiki/Wikimedia (i.e. not existing libraries/packages yet)
- Group understood it as elements that could already be componentised
- Thanks all for your contributions, Next we will package this into documentation, which will be v 0.1
- If you are interested in making this happen, there will be updates on the phab task with details so that it can be turned into a document for decision makers
