Skip to content

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.

5 participants