Comments (37)
I think we have twins here 😄
from generator.
@derberg i saw we need to implement the monorepo for this i would like to work on this. Please let know how should i go about this.
from generator.
@ayushnau for now it is proposal and a discussion
from generator.
ok @derberg
from generator.
@jonaslagoni @magicmatatjahu wdyt
from generator.
Sounds good to me 🤙
from generator.
Hey! would like to work on this issue, can i get it assigned? @derberg
Thanks!
from generator.
@ayushnau @Aryann15 are you folks still interested with helping here? did you have experience with introducing monorepo in the past?
first step would be project refactor and migration of first package from https://github.com/asyncapi/generator-filters
if you are interested working on it, please first share your plan before opening a PR
from generator.
Hi I would love to work on this issue.
from generator.
added to bounty:
- generator will be now a monorepo,
- main readme should still be focused on generator and there will just need to be a section where we explain that there are other projects included - short sentence intro and link to dedicated readme
- we need short development guide that will explain the setup of the repo
- filters are the first things we move
- filters repo will be archived
- we still release
@asyncapi/generator
and we still release@asyncapi/filters
, just from one repo. Release can have the same number, we do not need separate versioning
any other questions?
from generator.
Questions:
- Is turborepo final for migrating generator repos to it.
- So Generally we put all the functions and miscellaneous stuff like common scripts in. packages. (package containing all the shared stuff of all the apps.) which can be used so will we take some of shared stuff of the repos and put that into packages.
- And do we want to put all the ci/cd flows in their own repos or will unite them into one.
- We want to maintain git history of each app ?
from generator.
from generator.
Bounty Issue's service comment
Text labels: bounty/2024-Q2
, bounty/advanced
, bounty/coding
First assignment to third-party contributors: 2024-03-22 00:00:00 UTC+12:00
End Of Life: 2024-08-31 23:59:59 UTC-12:00
@asyncapi/bounty_team
from generator.
Is turborepo final for migrating generator repos to it.
tbh I don't have any preference on what tool we choose. If we do npm workspaces, lerna or turborepo. Afaik you have experience with monorepo, so if you think turborepo is good investment, lets do it.
So Generally we put all the functions and miscellaneous stuff like common scripts in. packages. (package containing all the shared stuff of all the apps.) which can be used so will we take some of shared stuff of the repos and put that into packages.
we still need to release @asyncapi/generator
and we will still have to release @asyncapi/filters
. If there will be some common code then definitely we should have shared commons.
Filters technically are a feature only for generator templates that run on Nunjucks engine. So template developer uses it in the way that they add filters package to dependencies and then adds module name to filters
in the config. So in theory, your job is a simple as move filters in, make sure they are released and that is it. But would be super nice if you can come up with an idea how to make sure @asyncapi/filters
are included in asyncapi/generator
by default, so nobody have to enable them by configuration.
And do we want to put all the ci/cd flows in their own repos or will unite them into one.
afaik workflows from https://github.com/asyncapi/generator-filters can be dropped as they are all anyway pulled from .github
repo (so are the same that also in generator
) repo. You just need to make sure that whatever workflows we have here, for release or bump - will still work
We want to maintain git history of each app
Not a strong requirement - just lemme know what options we have.
The plan is that basically this https://github.com/asyncapi/generator-filters will be archived and moved to https://github.com/asyncapi-archived-repos so history will still be there. But if there is some cool git magic available so we can preserve history of filters in generator, lets see. I admit I'm not such a git expert
Please also work closely with people from asyncapi/parser-js#963 as might be that best would be to have the same solution in both
from generator.
@AyushNautiyalDeveloper so, still interested?
from generator.
yeah Sure @derberg once you answer those question I will add short development guide. as required.
from generator.
btw, my answers are above
from generator.
@ayushnau ok, please go ahead, the issue is yours
from generator.
ok thanks will start working on this then.
from generator.
Bounty Issue's Timeline
Complexity Level | Assignment date (by GitHub) | Start date (by BP rules) | End date (by BP rules) | Draft PR submission | Final PR submission | Final PR merge |
---|---|---|---|---|---|---|
Advanced | 2024-03-21 | 2024-04-01 | 2024-05-24 | 2024-04-19 | 2024-05-10 | 2024-05-24 |
Please note that the dates given represent deadlines, not specific dates, so if the goal is reached sooner, it's better.
Keep in mind the responsibility for violations of the Timeline.
from generator.
Comparison of Repository Management Tools
- So I have Decided to go with Turborepo. Here is a comparision for different options we had. though Nx was also good.
Feature | TurboRepo | Lerna | Yarn Workspaces | Nx |
---|---|---|---|---|
Performance | High performance with caching and parallelization | Decent performance, may slow down with large repos | Decent performance, can suffer with large repos | High performance with advanced caching and builders |
Dependency Management | Integrated dependency resolution | Basic dependency management | Integrated with Yarn, follows Yarn's resolution | Integrated dependency graph for efficient builds |
Versioning | Integrated version management | Incremental versioning with fixed or independent | Integrated with Yarn, follows SemVer | Semantic versioning with versioning strategies |
Language Support | Primarily JavaScript and TypeScript | Primarily JavaScript and TypeScript | JavaScript, TypeScript, and more | JavaScript, TypeScript, and more |
Community Support | Growing community support | Large and established community | Strong community support | Strong community support |
Ease of Setup | Straightforward setup and configuration | Moderate setup with configuration options | Integrated with Yarn, relatively easy to set up | Straightforward setup and integration |
Integration with CI/CD | Supports various CI/CD pipelines | Compatible with common CI/CD tools | Compatible with common CI/CD tools | Integrated CI/CD support and workflows |
Adding a single repo will look like this
-
Install and do basic setup of TurboRepo. Note: We will be using npm as a package manager as we have used npm in every package.
-
Add the
@asyncapi/filter
code to theapps
directory of the turborepo. -
Add the configuration for the
@asyncapi/filter
to theTurbo.json
file in the root directory. -
Add all the required scripts in the
package.json
file for the@asyncapi/filter
. (To run appspackage.json
scripts from root)
Question:
- What should be the name of the repo? It can't be "Generator" as we are going to use it for its own repo.
from generator.
https://github.com/ayushnau/generator
Added the @asyncapi/generator-filters repo
And For git history It is possible to maintain the history of every repo merged into one. As i have done with this current repo. @derberg
from generator.
can you specify what is the goal of https://github.com/ayushnau/generator ? just for testing?
The changes that you introduce should be done in a typical way through a fork
What should be the name of the repo? It can't be "Generator" as we are going to use it for its own repo.
we keep the name for now, is that a blocker? all additional stuff we will move to generator
are considered plugins/extensions - apps is probably a good name too
So I have Decided to go with Turborepo. Here is a comparision for different options we had
thanks for great comparizon. Turborepo indeed looks interesting. Also notices even nodejs started using it https://github.com/nodejs/nodejs.org
from generator.
- The purpose of that repository is solely for testing and demonstration purposes.Other apps will also be included inside the apps directory (including the generator itself.)
- No, it is not a blocker, just asking for clarity.
- 👍
from generator.
awesome, feel free to DM me whenever you need help or there is something new I should look at - I'm a bit under water with notifications, so DM is working very well for me atm
from generator.
from generator.
@ayushnau I noticed you closed the PR, all good? what's the plan?
from generator.
@derberg I am getting an issue with running test command.
This is coming due to the test trying to access the nims from node_modules. but turborepo have installed it in base node_modules. where all the internal and shared dependencies packages are installed.
Solution:
I think what we can do is just change the directory
'^nimma/legacy$': '<rootDir>/node_modules/nimma/dist/legacy/cjs/index.js',
'^nimma/(.*)': '<rootDir>/node_modules/nimma/dist/cjs/$1',
to correct directory.
from generator.
yup, go ahead 😀
from generator.
@ayushnau, please provide an update to the PR.
from generator.
@aeworxet adding
from generator.
@ayushnau, please provide an update to the PR.
from generator.
fyi, the implementation of the issue is delayed a bit as I was out for a couple of weeks for conference and holidays - so could not review, and there was noone else who could
from generator.
not yet completed, we need new release pipeline and move into project one more app
from generator.
@derberg can we mark this issue completed
from generator.
@aeworxet bounty scope completed. I'm not closing the issue as there is still a need to move hooks into generator - but that was not part of bounty scope
from generator.
After a delay that was beyond the control of the Bounty Program Participant
#1044 (comment)
Bounty Issue Completed 🎉
@ayushnau, please go to the AsyncAPI page on Open Collective and submit an invoice for USD 400.00
with the expense title Bounty generator#1044
, tag bounty
, and full URL of this Bounty Issue in the description.
from generator.
Related Issues (20)
- [Docs Bug 🐞 report]: The `template-constant` link is broken at the generator docs HOT 6
- [Docs Bug 🐞 report]: The `AsyncAPI document` button is broken at the generator docs HOT 3
- [📑 Docs]: Improve documentation related to `File templates` feature HOT 10
- `conditionalFiles` feature is broken when template uses `server` special parameter HOT 1
- Incoming changes for generator HOT 3
- Support platform generator type templates to infrastructure as code HOT 4
- [BUG] Docker container html template is not compatible with generator HOT 3
- Figure out what development flow will be without cli.js HOT 5
- Add Post-installation script for Cli.js deprecation and migration
- Migration Guide to md & post-installation script to deprecate `cli.js` HOT 4
- create our own changeset bot HOT 1
- Provide a development.md or **Development Guide** in readme where you explain how to start project locally and do some basic manual tests and how to run existing tests in isolated docker env HOT 1
- Put all (most) templates into the generator together for better developers' experience HOT 9
- Deprecate Nunjucks and Create Migration Guide to React HOT 3
- [BUG] Generation failing with `Generator Error: Installation failed` HOT 7
- [FEATURE]: Make `compile` option default to `false` in future major release HOT 1
- Title HOT 2
- docs no longer pushed to website HOT 8
- Proof of concept of templates as part of generator monorepo HOT 7
- Move hooks inside monorepo HOT 8
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from generator.