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

Web Development Framework ADR #368

Draft
wants to merge 9 commits into
base: main
Choose a base branch
from
Draft

Conversation

Ryan-Koch
Copy link

Changes proposed in this pull request:

  • Establish and ADR with opinions about the web development framework options we prefer when we have a choice.


### Express.js

#### Pros

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

One more pro - same language between backend and frontend.

- `-` Minimialist framework, so lacking in some batteries included features, leaving projects to choose other tools to add on with it.
- `-` If we're abdiding by prior ADRs it would mean using Typescript, which may have some learning curve for folks coming in without that background.

### Vue.js with Node.js
Copy link

@melissathai melissathai Dec 6, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The pros and cons listed here for Vue and React are nearly identical, and don't really distinguish the difference between them.

Also, within React folks have a number of web frameworks to choose from. I think the most popular nowadays are Next.js vs Remix vs the OG create-react-app. I'm probably missing a few more.

@@ -0,0 +1,130 @@
# 0006 - Preference for x as web development framework(s)
Copy link

@melissathai melissathai Dec 6, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we also want to compare other aspects of webdev, such as databases (MySQL vs Postgres vs all the flavors of noNQL), APIs (REST vs GraphQL), CI/CD (Jenkins, CircleCI, etc), cloud infrastructure (AWSvs Azure vs GCP)?

- `+` Uses Python, which is considered easy to learn and is now frequently taught in both college and bootcamp programs.
- `+` Strong community support
- `+` Built-in Admin interface is useful for having a UI to interact with project database

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

suggestion: Django also has a dedicated security team, which not all frameworks have.

- `-` Different languages between backend and frontend if Javascript is needed for client interactions.
- `-` May need to use additional tooling for asynchronous workload use cases (message queues and workers).
- `-` Python's dynamic typing may lead to more effort spent on unit tests. But this can be mitigated some through [type hinting](https://docs.python.org/3/library/typing.html)
- `-` Since Django is highly opinionated, if you're new to it it'll seem like there's a lot of "magic" under the hood. Compared to smaller frameworks like Flask the learning curve is can be steep.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

thought: I think I actually see the opinionated side of it as a pro. A new person going into flask has to figure out how to even set up the database connection properly, where everything should live to keep the main app file from becoming too large and unwieldy, and make more decisions about what tools should be used for different aspects of it. Django makes those decisions and gives you easy escape hatches in the settings to change that if you need to.

#### Microsoft Azure

- **Pros**: Robust offerings in AI and ML due to Microsoft’s partnership with OpenAI, integrates with Microsoft ecosystem.
- **Cons**: High learning curve, not as good customer service.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

security is also usually lacking, or at least, has been historically with Azure.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants