开源软件名称(OpenSource Name):ec500-software-engineering/case-study-BrefCool开源软件地址(OpenSource Url):https://github.com/ec500-software-engineering/case-study-BrefCool开源编程语言(OpenSource Language):开源软件介绍(OpenSource Introduction):Case study - Mastodon1. Technology and PlatformMastodon is a free, open-source social network server based on ActivityPub. Follow friends and discover new ones. Publish anything you want: links, pictures, text, video. All servers of Mastodon are interoperable as a federated network, i.e. users on one server can seamlessly communicate with users from another one. This includes non-Mastodon software that also implements ActivityPub! a. Coding languageThe project is using different coding language for different modules: Ruby on Rails powers the REST API and other web pages, React.js and Redux are used for the dynamic parts of the interface and Node.js powers the streaming API. b. Building systemThis project mainly use Bundle and Yarn to build all the Ruby and JavaScript dependencies. Before building this whole project, you need to set up Ruby and Node.js environments. Also you need to set up PostgreSQL, Redis and Nginx. c. Frameworks or libraries usedRuby
JavaScript
2. TestingThis project is using the circleci as their CI platforms. The circleci will start 4 jobs for every commits. One job is doing the i18n checks and other jobs check the instalation of Ruby and Node.js dependencies and build the whole project. 3. Software architecturea. How would you add/edit functionality to this project? How would one use this project from external projects?Here's an overview of the whole code structure. I can edit or add functionality to this project based on description below: Ruby
JavaScript
CSS and other assets
b. What part of the softwares are asynchronous?Ruby on Rails is actually using sidekiq to run most of the jobs in the background. Then most of the services this project provide to users is asynchronous. Sidekiq is a simple, efficient background processing for Ruby. Sidekiq uses threads to handle many jobs at the same time in the same process. c. System diagramHere's an overview of the Mastodon Instance: e. What architectural patterns are used?For a single Mastodon instance, the project is using the simpel client-server architecture. For the whole federated network, the project is actually a peer-to-peer network architecture or server-server architecture. 4. Analyze two defects in the projectissue #9435 mentions that once a certain threshold of HTTP 405 responses is reached (~5-10), Mastodon should remove the end-point from its list of federated end-points. HTTP response 405 means that the end-point is signaling that it's not federated - in accordance with the ActivityPub spec. The actual behaviour should be that Mastodon keeps pushing new Activities to end-points that are replying with HTTP 405 Method not Allowed responses. This issue requires adding functions in handling the HTTP 405 response. 5. DemoI successfully install my own Mastodon Instance on a AWS EC2 VM. In order to let people visit my own Mastodon instance, I set up a domain for the AWS EC2 and then people can visit this instance by url: https://www.brefcube.com. |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论