1 of 34

Open by Default

William Chong

@likecoin

Trying to run a startup with open source culture in mind

2 of 34

Who am I?

  • William Chong
  • (former) Game Developer
  • Fullstack developer of LikeCoin
  • Mainly contributes to crypto and web related oss project, e.g. Metamask, Nuxt.js, lunie

3 of 34

What does LikeCoin do?

  • Hong Kong based startup
  • Public blockchain for content monetization, attribution and distribution
  • Media partners include Standnews, Matters, HKcnews, Inmediahk
  • 69,000+ Likers, 247,000+ contents by 9,600+ creators on 1000+ media @June

4 of 34

5 of 34

  • “公司 d code open source 同放上 github” should be a more common practice

  • Not only opening source code, but open in culture and workflow.

6 of 34

Sharing in this presentation

  • what we did to be open
  • how we minimize extra overhead
  • what trouble we encountered

Some of these might not be best approach, welcome to share your knowledge!

7 of 34

(NOT) Sharing in this presentation

  • Making every single work or tool we use is open, without considering trade off
  • Suggesting any silver bullets solution

8 of 34

What contexts this fits best

  • Internet product startup
  • Crowdfunding projects
  • Blockchain/crypto projects �(requires extra trust from your users)

9 of 34

Why?

10 of 34

Why “open”?

  • Community
    • Gain trust
    • Gain loyalty (IKEA effect)
    • Get feedback from fans
  • Developer
    • Get technical feedback
    • Open source contribution
  • Brand
    • User, developer and employer brand

11 of 34

To whom should you be “open”?

Why should “open” be the default option?

  • Customers / user community
  • Technical and developer community
  • Also Internally!

  • Like technical debt, transforming from closed to open is costly
  • Your community might surprise you

12 of 34

13 of 34

Preview

  • Community update & sharing
    • Public internal knowledge sharing
  • Community participation
    • DAO - Decentralized Autonomous Organization
  • Open repository
    • Gitcoin bounties
  • Open API
  • Documentation and code samples
  • Hackathons

14 of 34

Progress update and community sharing

  • Keep community updated
  • Allow basis for community participation
  • Let people know you are still alive!

15 of 34

Progress update: How?

16 of 34

Progress update: Difficulties

  • Timezone
  • Language
  • Privacy
  • Be careful with your mouth!
  • Zoom is bad! How about Jitsi?

17 of 34

Extra: Make your internal sharing public!

  • Internal knowledge sharing is interesting to external too
  • Content marketing / brand building

18 of 34

Community participation

  • Engage in conversation with your community
  • Slack / discord / telegram or other online community
  • We have #likecoin on Matters
  • Governance system of LikeCoin chain

19 of 34

Community participation: Difficulties

20 of 34

Community participation: Difficulties

  • Not all comments will be supportive, some will be skeptical, some will be antagonistic
  • A good chance to clarify concepts, understand common misconception, and what the concerns of community are
  • Affected by how well did you update your community

21 of 34

Extra: DAO - Decentralized Autonomous Organization

  • LikeCoin ecosystem is not governed solely by LikeCoin Foundation, but a group of validators
  • Validators are public, assigned according to amount of LIKE delegated by users
  • They have power to propose and vote on the future of the ecosystem

22 of 34

Extra: DAO - proposal

23 of 34

Technical: Open Repository

  • Open Source repository allows user to read, understand and contribute your code
  • Forced good software engineering practice like decouple and proper git message usage
  • Open standard allow other parties to join: ISCN

24 of 34

Open Repository: How

  • We use GitHub
  • Use public Issue tracker for internal issue report, allow a unified flow for bug reporting
  • Use Github Project or Trello board to manage issues

25 of 34

Open Repository: Difficulties

  • Don’t leak your secret, consider GitGuardian to monitor secret leak (GCP has built in detector)
  • Timezone and communication overhead on issues, be async
  • Management and triage overhead
  • Make sure you have a good linter, tests and CI system to avoid unneeded time spent on reviewing minor code changes.

26 of 34

Extra: Bounties

  • https://gitcoin.co/explorer

27 of 34

Open API

  • Modern web/app development uses front/backend separation pattern
  • So your probably have Restful/GraphQL API ready anyway…
  • Why not open your API using open OAuth 2.0 standard?

28 of 34

Open API: How?

  • When designing your API, use JWT for authentication token
  • Try to classify your API into different scope and permissions
  • Build a OAuth 2.0 authentication server and authentication flow
  • Tada! You now have an open API
  • Write your API documentation properly, we use Postman for develop -> testing -> documentation cycle

29 of 34

Open API: Difficulties

  • Designing proper OAuth scope and developer console is hard
  • Reviewing sensitive scope is time consuming human process
  • Be careful not to make another Cambridge Analytica
  • Security audit

30 of 34

Documentation and Code Samples

  • We use Postman and documentor for API develop cycle
  • Sample codes are committed for future reference. We also use codepen & codesandbox.
  • User guide and developer documentation are written in Gitbook, PR can be made to the repo for correction
  • Translation would be possible in future using Github integration tool

31 of 34

Extra: Hackathons

32 of 34

Conclusion

  • This is just our experience, there may be many better ideas.
  • Ideas might not fit 100% to you, but do begin somewhere and try to be open!
  • Many of our methods are made possible via blockchain. Blockchain is not only about fintech, join LikeCoin in slack, telegram and facebook to know more!

33 of 34

More on LikeCoin & ISCN

34 of 34

Thank you & Q&A