Skip to content

Latest commit

 

History

History
144 lines (101 loc) · 9.52 KB

CS02-React&Redux.md

File metadata and controls

144 lines (101 loc) · 9.52 KB

React / Redux

1. Describe what the project is. Does it have a mission statement?

React is a JavaScript library for building user interfaces.

  • Declarative: React makes it painless to create interactive UIs. Design simple views for each state in your application, and React will efficiently update and render just the right components when your data changes. Declarative views make your code more predictable, simpler to understand, and easier to debug.

  • Component-Based: Build encapsulated components that manage their own state, then compose them to make complex UIs. Since component logic is written in JavaScript instead of templates, you can easily pass rich data through your app and keep state out of the DOM.

  • Learn Once, Write Anywhere: We don't make assumptions about the rest of your technology stack, so you can develop new features in React without rewriting existing code. React can also render on the server using Node and power mobile apps using React Native.

Redux is a predictable state container for JavaScript apps.

  • It helps you write applications that behave consistently, run in different environments (client, server, and native), and are easy to test.

2. Describe the history of the project -- when / how did it start? Has it grown?

  • React was created by Jordan Walke, a software engineer at Facebook. He was influenced by XHP, an HTML component framework for PHP. It was first deployed on Facebook's newsfeed in 2011 and later on Instagram.com in 2012. It was open-sourced at JSConf US in May 2013.'s React.js Conf in February 2015 and open-sourced in March 2015.

  • Redux was created by Dan Abramov and Andrew Clark in 2015. Abramov began writing the first Redux implementation while preparing for a conference talk at React Europe on hot reloading. Abramov remarks, "I was trying to make a proof of concept of Flux where I could change the logic. And it would let me time travel. And it would let me reapply the future actions on the code change."

3. Who are the contributors to the project?

  • Facebook
  • Community
    • React: 1240 Contributors

    • Around 30% of the contributors are from Facebook

    • Redux: 613 Contributors

    • Around 11% of the contributors are from Facebook

    • Note: All the data are from Github and Github API

4. Describe the project's funding. Is it funded? What kinds of support does it get?

Facebook Open Source

  • Fundings
  • Labours
  • Tech Supports
  • Beer 🍺 & Coffee ☕️

5. Describe the project's community. Are there separate developer / user communities?

6. Where are the primary places they interact?

  • React:
    • Facebook -> Github
  • Redux:
    • Github

7. Does the project have a Code of Conduct? What does it consist of? If it does not, why?

  • Yes
  • Facebook Opensource CoD
  • Contents:
    • Be friendly and patient.
    • Be welcoming.
    • Be considerat.
    • Be respectful.
    • Be careful in the words that you choose.
    • We encourage everyone to participate and are committed to building a community for all. (Diversity Statement)
    • Reporting Issues

8. Does the project have a license? Why was the license chosen?

  • The initial public release of React in May 2013 used a standard Apache License 2.0.

  • In October 2014, React 0.12.0 replaced this with a 3-clause BSD license and added a separate PATENTS text file that permits usage of any Facebook patents related to the software.

    • Detail of the patent texts:

      • "The license granted hereunder will terminate, automatically and without notice, for anyone that makes any claim (including by filing any lawsuit, assertion or other action) alleging (a) direct, indirect, or contributory infringement or inducement to infringe any patent: (i) by Facebook or any of its subsidiaries or affiliates, whether or not such claim is related to the Software, (ii) by any party if such claim arises in whole or in part from any software, product or service of Facebook or any of its subsidiaries or affiliates, whether or not such claim is related to the Software, or (iii) by any party relating to the Software; or (b) that any right in any patent claim of Facebook is invalid or unenforceable."
    • Based on community feedback, Facebook updated the patent grant in April 2015 to be less ambiguous and more permissive:

      • "The license granted hereunder will terminate, automatically and without notice, if you (or any of your subsidiaries, corporate affiliates or agents) initiate directly or indirectly, or take a direct financial interest in, any Patent Assertion: (i) against Facebook or any of its subsidiaries or corporate affiliates, (ii) against any party if such Patent Assertion arises in whole or in part from any software, technology, product or service of Facebook or any of its subsidiaries or corporate affiliates, or (iii) against any party relating to the Software. [...] A "Patent Assertion" is any lawsuit or other action alleging direct, indirect, or contributory infringement or inducement to infringe any patent, including a cross-claim or counterclaim."
  • Finally, on September 23, 2017, Facebook replaced with MIT (Be free and opened to everyone and every project whether it is commercial or not)

    • What we can get from MIT License:
      • To be an universally popular frontend framework.
      • To be engaged by everyone.
      • [Redux] To convey the stateful concept to everyone. (Such as for Angular(NgRx), Vue(Vuex), etc.
  • Besides, the License, all contributor need to sign a Facebook CLA(Contributor Lcense Agreement)

  • For more detail, refer to Wiki

9. Evaluate the project's approach to equity, diversity, and inclusion in its community.

  • Since the React became open source, it has become a holistic framework. There is not so many features developpers can contribute to. And there is little offical endorsed or third party translation ongoing. Even the offical tutorial is very clear from a newbie aspect.
  • But due to the high volumn of useages, there are alot of friendly communities that help popularize them. In this case, we can see that the third-party communities and developers are relatively diversive. In addition, they also have diversity groups like ReactJS Girls showing the diversity of the third-party community.
  • From another point, the diversity I understand for React is that React actually brings web development to the whole stack of hybrid development. It highlights the concept of ES6 Class to embrace the combination of OOP programming, which is a breakthrough for it connects Native App concept with Web. This promotion is largely welcomed by both Web Community and Native App Community as it simplifies (or more accurately standardizes) the program standard in Web. And this is also a very important reason why it has larger community than most of other JS Library communities.

10. Is the project still active? Why or why not?

  • Yes
  • It becomes one of the most popular frontend frameworks:
    • MVC(Module - View - Controller) Concept
      • [React] To seperate frontend logics from frontend design.
      • [React] To tear web project into components would be easy to manage and maintain.
      • [Redux] To manage project-based states / actions easily.
    • Faster render speed.
    • Strong / Large / Friendly Community
    • Powerful Backbone Supported by Facebook
    • Great / Simple Codes which are ES7 friendly ✌️

11. What is the future of the project?

  • React

    • Project status can be tracked via the core team discussion forum. However, major changes to React go through the Future of React repository issues and pull requests.This enables the React community to provide feedback on new potential features, experimental APIs and JavaScript syntax improvements.

      1. React Fiber To render some particular compoments instead of the whole page.

      2. Facebook CLA (Contributor License Agreement) Link Facebook requires contributors to React to sign the Facebook CLA.

      3. PWA(Progessive Web Application)

  • Redux

    • Longlast Idea but Replaced by some other projects. ☠️

      1. Good Concept to use stateful store to control and manage all data / changes upon a website / webbased app.
      2. Structure is not pretty well-designed.
      3. Not friendly for newbies, so there are lots of alternatives:
        • Relay
        • Hydux
        • Rxjs
        • Mobx