Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Preparing Mandarine.ts Framework for production environments #57

Open
14 of 15 tasks
andreespirela opened this issue Jun 23, 2020 · 3 comments
Open
14 of 15 tasks

Preparing Mandarine.ts Framework for production environments #57

andreespirela opened this issue Jun 23, 2020 · 3 comments
Labels
documentation Improvements or additions to documentation

Comments

@andreespirela
Copy link
Contributor

andreespirela commented Jun 23, 2020

Hello Community,
Today, I am writing this issue to inform a bit about the next steps in order for Mandarine to be production ready.

MandarineTS framework has grown over the past months not only in community but also in functionalities and stability. Our community is still fairly small but that does not mean Mandarine is not moving forward in order to reach its main objective: A all-in-one solution for enterprises.

MandarineTS already has a reliable Dependency Injection System, Components, Middleware, Sessions, Template engine & other modules. We also could say that Mandarine has a reliable ORM system along with MQL (Mandarine Query Language), although this is yet to be improved but it can perfectly be used for large applications.

Case

With that said, I have to admit, I do not consider MandarineTS Framework production ready and I do not recommend it for large applications, it is perfectly fine to use it in small projects or projects with limited traffic but when it comes to the scalability of MandarineTS for production solutions, there are two things that do not make me feel well about MandarineTS in running in large scales:

  • Deno
    • We can't measure the impact of Deno in production environments because Deno is really new. Deno is only in its 1.1.1 version (2020-06-23) and it is yet to be widely used, for instance widely tested.
    • Among other things, Deno still has a lot of questions to be addressed like the multiple modules issue: What if a module goes down, what if the module of a module of a module goes down. Since Deno does not have a package manager like NPM and imports are cached but they are not directly related to our application, it is hard to define or track when a module breaks another module and ends up breaking your application too as well as many other issues you can think of related to this concept.
    • The fact that Deno is very new and its in early versions gives Mandarine a lot of impediments such as working with reliable Database modules, only if the Deno community grows to enterprise levels then Mandarine will be able to support multiple database systems.
  • Mandarine
    • Mandarine has a lot of functionalities and we can say it works in a reliable way, although, the amount of work required to make Mandarine production ready goes along with the amount of collaborators, as of right now (2020-06-23) Mandarine has 0 collaborators but me. This can be a problem as the project grows because the larger it gets the more issues will be submitted and requested.
    • In the same way as Deno, Mandarine is fairly new, it is only in its 1.1.1 version (2020-06-23) which makes measuring the impact it can have on a production environment almost impossible.
      • The fact that Mandarine is in its early versions & it is not as widely used as we would desire makes adding features and solving bugs hard since we, the collaborators, have no reports/issues to work on but our imagination which makes the process of making Mandarine grow slower than expected.
    • Many of the code Mandarine currently uses needs to be better documented and refactored.
      • This includes the creation of Unit tests.

Steps to be Production Ready

  • The creation of a Testing Framework for Mandarine. It must be able to be not only used for Mandarine internals but also for people using Mandarine.
    • Every core module in Mandarine such as Dependency Injection, Routes... must be unit-tested with this framework.
    • Integration tests should be available for core functionalities
  • MandarineTS repository must have continuous integration
  • Refactoring the code that needs to be refactored such as locating every mandarine-native module (SessionContainer, Default Web configurer, and others) in one folder.
    • Cleaning code
    • Everything in Mandarine should be a factory or a proxy, this way we can perform tests in an easier & cleaner way.
  • Add copyright header to all files
  • Add Benchmarks to documentation in order to be able to measure how good the changes we are making really are.
  • Find collaborators and impulse the use of Mandarine among both communities (JS & Typescript).
  • Evaluate and see how things evolve and develop with the use of Deno across the globe.
  • Document the life cycles of Mandarine Starter and try to make it a flexible life cycle so the user can give it a behavior.
  • Creation of an official website to offer more detailed documentation and things related to Mandarine
  • Define Standards of Mandarine not only for the collaborators but for whoever uses Mandarine out there.
  • Cache folder should be available per every release.

...

In order to achieve a Production Ready status, we need to work on the steps mentioned before, not a few of them, not only two of them, but ALL of them. All the steps mentioned are a top-priority.

Anything you would like to add? Feel free.

@andreespirela andreespirela pinned this issue Jun 23, 2020
@andreespirela andreespirela added the good first issue Good for newcomers label Jun 23, 2020
@andreespirela
Copy link
Contributor Author

Orange is now the official testing library for Mandarine.

@andreespirela
Copy link
Contributor Author

Many of the fundamental codes of Mandarine have been transformed into proxys. #66 See more here

@andreespirela
Copy link
Contributor Author

Mandarine official website : https://www.mandarinets.org/

@andreespirela andreespirela added documentation Improvements or additions to documentation and removed good first issue Good for newcomers labels Oct 7, 2020
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
documentation Improvements or additions to documentation
Projects
None yet
Development

No branches or pull requests

1 participant