Generator-jhipster: Roadmap to v7

Created on 16 Dec 2019  ·  53Comments  ·  Source: jhipster/generator-jhipster

Roadmap to v7

This ticket lists out ideas and plans for v7. Items here may or may not make to v7, but this ticket will help to provide an overview of what is being planned

Breaking changes

  • [x] Remove dirty keys in i18n JSON files and cleanup translation logic in libs(https://github.com/jhipster/react-jhipster/pull/38)
  • [x] JHipster sidecar app (https://github.com/jhipster/generator-jhipster/pull/10920 / https://github.com/jhipster/generator-jhipster/issues/12090)
  • [ ] Remove .yo-rc and .jhipster files and use JDL instead (https://github.com/jhipster/generator-jhipster/issues/8915) [need discussion]
  • [ ] Standardize JDL options to use 'none' rather than 'no' or 'false' (https://github.com/jhipster/generator-jhipster/issues/8608 / https://github.com/jhipster/jhipster-core/issues/283)
  • [ ] Deprecate applicationType option (monolith/microservice/gateway) in favor of better semantics (front-end only, back-end only, gateway, uaa) [need discussion]
  • [ ] Make front-end only apps first class citizen and supported out of the box by deployment subgenerators
  • [ ] Make serviceDiscovery=eureka non default for microservice type apps
  • [ ] [Modulith](https://github.com/odrotbohm/moduliths) support
  • [ ] Server-side packaging by feature [need discussion]
  • [x] Spring Cloud: migrate Zuul -> Spring Cloud Gateway - #11223
  • [ ] Spring Cloud: migrate Ribbon -> Spring Cloud Loadbalancer
  • [ ] migrate Hystrix -> Resilience4j (https://github.com/jhipster/generator-jhipster/issues/9543)
  • [x] Rename package io.github.jhispter -> tech.jhipster - done on #12866
  • [x] remove Java8 support #12021
  • [x] Migrate from springfox to springdoc (see index, faq and demo)
  • [x] Migrate to OpenApi v3 - #12125
  • [x] Remove getAllJhipsterConfig, not needed anymore with https://github.com/jhipster/generator-jhipster/pull/10664
  • [x] Run sub-generators in parallel (https://github.com/jhipster/generator-jhipster/pull/10554)
  • [x] Improve client/server generators workflow (https://github.com/jhipster/generator-jhipster/issues/10528)
  • [x] Remove audits
  • [ ] Replace old audits system by specific logs
  • [ ] Remove and deprecate the JHipster Console
  • [x] Remove DropWizard metrics dependency - #12878
  • [ ] Disable fake data by default
  • [ ] Cassandra: replace JDL field type Date by LocalDate (supported in Datastax driver java-driver 4)
  • [ ] Cassandra: change PersistentToken.tokenDate from Timestamp/Instant to LocalDate
  • [x] Remove yarn support https://github.com/jhipster/generator-jhipster/issues/12135
  • [x] Add Cypress to the main generator https://github.com/jhipster/generator-jhipster/issues/11961

New Features

  • [x] Vue.js (https://github.com/jhipster/generator-jhipster/issues/10575)
  • [ ] Side-by-Side sub-generator
  • [x] Change default database to Postgres (#11724)
  • [x] Format java code with Prettier (#10641)
  • [x] Jhipster Control Center (#12090)

Enhancement

area changes v7

Most helpful comment

I suggest a thing called side-by-side sub-generator. I'll give more details soon

All 53 comments

@jhipster/developers please update this ticket to add what you would like to see in v7

What would be the default serviceDiscovery?

@gmarziou I think it should still be no as a simple project shouldn't need service discovery

New features
Add ng material
Add Flutter

I suggest a thing called side-by-side sub-generator. I'll give more details soon

Thanks

Le lun. 16 déc. 2019 à 14:47, David Steiman notifications@github.com a
écrit :

I suggest a thing called side-by-side sub-generator. I'll give more
details soon


You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/jhipster/generator-jhipster/issues/10958?email_source=notifications&email_token=AARETXOU2YQ5KDTC7QENCEDQY6IH3A5CNFSM4J3H7UM2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEG66CXI#issuecomment-566092125,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AARETXLZRABR4SVUWLO3ROTQY6IH3ANCNFSM4J3H7UMQ
.

@begbegin anything else ? ☕️

@begbegin sorry but we won't be adding those as its not in our roadmap

I opened a discussion on SBS on our group. As soon there is consensus, there should be an RFC to the SBS-sub-gen (or the removal of my taks above)

Another topic I see is some development on our UAA support, such as:

  • moving most generated UAA code to the JHipster library, as it uncommonly changed in code, in detail:

    • the @AuthorizedXXXFeignClient annotation with their configurations

    • the abstract classes / interfaces under package.security.oauth2 for UAA microservices and gateways, maybe even the concrete implementations

  • standardizing name conventions for the feign clients

    • @AuthorizedUserFeignClient for token forwarding clients

    • @AuthorizedServiceFeignCleint for service-to-service calls using the internal OAuth2 client

  • offer analog implementations for RestTemplate, as there are use-cases where RestTemplates give more options than feign cleints
  • migrate to spring-security-oauth

If this list is okay, I'll update the roadmap

I think we have a lot of ideas here, but we should focus on:

  • if it's a breaking change, it should go to v7
  • if it's a big feature without breaking change, it could be done during v6 or v7
  • there is no ETA but we tried to do a major release each year, so we can try to publish a release between february to june 2020

And if a feature can go into module, I'd prefer this solution, instead of integrating the feature directly to JHipster, unless it is totally mandatory
Less features inside JHipster, less tickets, less work to maintain it...

Agree 100% with Pascal

Thanks & Regards,
Deepu

On Mon, Dec 16, 2019 at 4:49 PM Pascal Grimaud notifications@github.com
wrote:

I think we have a lot of ideas here, but we should focus on:

  • if it's a breaking change, it should go to v7
  • if it's a big feature without breaking change, it could be done
    during v6 or v7
  • there is no ETA but we tried to do a major release each year, so we
    can try to publish a release between february to june 2020

And if a feature can go into module, I'd prefer this solution, instead of
integrating the feature directly to JHipster, unless it is totally
mandatory

Less features inside JHipster, less tickets, less work to maintain it...


You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/jhipster/generator-jhipster/issues/10958?email_source=notifications&email_token=AAIOKFZ2GCHBL6BLZSUDNWDQY6PQ7A5CNFSM4J3H7UM2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEG7ER3A#issuecomment-566118636,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAIOKF3FTDY57TCEKQJ3KJDQY6PQ7ANCNFSM4J3H7UMQ
.

Making elasticsearch as primary database

Making elasticsearch as primary database

I would not do that. Elastic is a searchengine and therefore not suited to be primary datastore imho.

My points I would like to see:

  • Neo4j support (which can be done in the 6.x release when we have boot 2.2 support)
  • Having a modular package structure in the backend which follows modulith approach
  • Using debezium for writing into multiple datastore (e.g. when using elasticsearch) but that might be a module too
  • havin at least the micronaut blueprint ready to use

Having a modular package structure in the backend which follows modulith approach

+1

havin at least the micronaut blueprint ready to use

+1

I have added modulith and "server side packaging by feature" to the list.

@atomfrede Maybe we could also introduce more arch-unit tests ?

@pascalgrimaud Maybe some more would be nice, but when we have full moduliths support we will have automated tests for the package structure out of box (based in arch unit rules under the hood).

  • Using debezium for writing into multiple datastore (e.g. when using elasticsearch) but that might be a module too

Thanks

And of course we should decide and maybe implement a microfrontend solution which helps to scale teams building a Microservice environment such that the teams stay as independent as possible

I believe it's important to simplify what we generate, both for our users and ourselves:

  • +1 for having just one type of application (no more microservice/monoliths), and having a clearer front/back separation (to me it's already good, but this is where we have the more complaints)
  • I would like to remove a lot of our generated code in the "initial generation" and push it to our lib and Spring Boot Starter. This will make upgrading easier, and the initial generation will be less frightening
  • The "side car" is part of my two previous points: let's simplify what we generate
  • We should also remove less-used options. Session-based authentication should be removed: it costs a lot, and I don't think anybody uses this anymore. We need to do some stats from start.jhipster.tech, we have all the data there.
  • We need Vue badly, and we should vote on which should be the default front end framework. Because I'm liking Vue the way I liked AngularJS... much better than Angular and React!

Since this is roadmap discussion I'm locking this to contributors

It's a simple one, but a breaking one: we should rename our package from "io.github.jhispter" to "tech.jhipster"

+1 @jdubois, also rename the jhipster.github.io repo to jhipster.tech

Session-based authentication should be removed: it costs a lot, and I don't think anybody uses this anymore.

What do you mean by "it costs a lot"?

From a security standpoint, session-based authentication has some advantages over our JWT implementation for monoliths: secured cookies, revocation. It also consumes less network bandwidth.

I'd like to have prettier for java, and I know a lot of people want it too :)

But I'm not sure if it's a breaking change or a feature ?

I would consider it a feature

On Wed, 18 Dec 2019, 7:14 am Pascal Grimaud, notifications@github.com
wrote:

I'd like to have prettier for java, and I know a lot of people want it too
:)

But I'm not sure if it's a breaking change or a feature ?


You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/jhipster/generator-jhipster/issues/10958?email_source=notifications&email_token=AAIOKF6AIYHW5PSEL2RAVSDQZG5TBA5CNFSM4J3H7UM2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEHE7NLI#issuecomment-566884013,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAIOKF4Z3NEBY3EDHVMNHH3QZG5TBANCNFSM4J3H7UMQ
.

I would like to provide an out of box solution with spring cloud gateway as the default gateway over zuul, and an initial support of svelte (I still need to look deeply into this, but, it looks promising).

In addition, it would be good to integrate with angular cli build ecosystem (I know there is a PR in progress) and create custom builders to abstract JHipster specific webpack customization.

Yep I agree with @vishal423 on the angular part. We can easily integrate Angular CLI and build a custom builder on top of it to fit our needs.
I struggle to find time currently but I think it should be ok for v7

@wmarques let me know if you need help here.

Cheers,
Vishal

On Thu, Dec 19, 2019 at 7:22 PM William Marques notifications@github.com
wrote:

Yep I agree with @vishal423 https://github.com/vishal423 on the angular
part. We can easily integrate Angular CLI and build a custom builder on top
of it to fit our needs.
I struggle to find time currently but I think it should be ok for v7


You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/jhipster/generator-jhipster/issues/10958?email_source=notifications&email_token=AD2BV4I5UWTVXZLSVNJ63B3QZN4CDA5CNFSM4J3H7UM2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEHJVLTI#issuecomment-567498189,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AD2BV4KZYTUCBT2SP6T5J4TQZN4CDANCNFSM4J3H7UMQ
.

--
Thanks & Regards,

I have a feature request on my mind for some time which would be best for an internship. It would be to implement two factor authentication for our JWT option.

Starting keycloak v8, WebAuthn support is available. It would be
interesting to enable this in JHipster.

On Thu, Dec 19, 2019 at 11:22 PM Pierre Besson notifications@github.com
wrote:

I have a feature request on my mind for some time which would be best for
an internship. It would be to implement two factor authentication for our
JWT option.


You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/jhipster/generator-jhipster/issues/10958?email_source=notifications&email_token=AD2BV4PAVPWH63THWL2TSWLQZOYHBA5CNFSM4J3H7UM2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEHKM5EI#issuecomment-567594641,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AD2BV4LGRZDTRFUY5XLDGJTQZOYHBANCNFSM4J3H7UMQ
.

--
Thanks & Regards,

Unless you disagree, I'm adding:

  • remove Java8 support

:+1: let's put var everywhere !

Migrate from springfox to springdoc (https://github.com/springdoc/springdoc-openapi/issues/292)

What about making psql the default SQL database? And maybe remove h2 for unit tests when selecting same db for production and leverage testcontainers for that?

+1 for psql by default

About testcontainer, I'm not sure. You can have some issue for CI, which uses build inside Docker. It means you need to config DinD service (Docker in Docker), which is for avdanced users

Yes not sure about testcontainers but maybe make it an option.

If I remember well, @cbornet you wanted to switch back to Tomcat, instead of staying with Undertow. Am I correct ? If yes, we could add it to the list.

Any specific reason to switch from Undertow?

Concerning Tomcat vs Undertow, it's initially my decision so let me recap:

  • Undertow starts a bit faster and we never had any issue with it. I didn't check, but I also guess it's lighter.
  • BUT it looks like nobody uses it outside of us. This means we need to configure it specifically, and that we sometime loose monitoring data (on Azure Spring Cloud, you get automatic monitoring of Tomcat, but not Undertow). Also, it looks like activity on GitHub is low ( https://github.com/undertow-io/undertow/pulse/monthly ) and that Red Hat doesn't use it on Quarkus (it's an extension that can be used for supporting Servlets), which doesn't look good for the future of the project.

I thought we used Undertow because it has HTTP/2 support.

On Jan 14, 2020, at 12:32 PM, Julien Dubois notifications@github.com wrote:

Concerning Tomcat vs Undertow, it's initially my decision so let me recap:

Undertow starts a bit faster and we never had any issue with it. I didn't check, but I also guess it's lighter.
BUT it looks like nobody uses it outside of us. This means we need to configure it specifically, and that we sometime loose monitoring data (on Azure Spring Cloud, you get automatic monitoring of Tomcat, but not Undertow). Also, it looks like activity on GitHub is low ( https://github.com/undertow-io/undertow/pulse/monthly https://github.com/undertow-io/undertow/pulse/monthly ) and that Red Hat doesn't use it on Quarkus (it's an extension that can be used for supporting Servlets), which doesn't look good for the future of the project.

You are receiving this because you are on a team that was mentioned.
Reply to this email directly, view it on GitHub https://github.com/jhipster/generator-jhipster/issues/10958?email_source=notifications&email_token=AAAELZDBPX6N6Y5GVSIII7DQ5YHLRA5CNFSM4J3H7UM2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEI52SSY#issuecomment-574335307, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAAELZACC3K5EFUEWRPRSULQ5YHLRANCNFSM4J3H7UMQ.

@mraible I had no idea about this, so if this was an argument then it didn't come from me! Anyway, Spring Boot should support Tomcat with HTTP2 now.

While this is not a feature but can't we just replace all the string literals used everywhere with constants?
For eg,

if (authenticationType === 'oauth2') -> if (authenticationType === AuthType.OAuth)
if (prodDatabaseType === 'mssql') -> if (prodDatabaseType === DB.Mssql) 
and many others

There are so many of them everywhere!

Hi Mohan,

yes, we could, but would require some considerable refactoring. Feel free
to attempt if you have the time

Thanks & Regards,
Deepu

On Thu, Jan 23, 2020 at 2:00 PM P. Mohan notifications@github.com wrote:

While this is not a feature but can't we just replace all the string
literals used everywhere with constants?
For eg,

if (authenticationType === 'oauth2') -> === if (authenticationType === AuthType.OAuth)
if (prodDatabaseType === 'mssql') -> if (prodDatabaseType === DB.Mssql)
and many others

There are so many of them everywhere!


You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/jhipster/generator-jhipster/issues/10958?email_source=notifications&email_token=AAIOKF7BFHNSQQRVD3JKOVDQ7GIHLA5CNFSM4J3H7UM2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEJXJDEA#issuecomment-577671568,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAIOKFYWFSSFYAA6MXNFOU3Q7GIHLANCNFSM4J3H7UMQ
.

Thanks @deepu105 , I will give a try as soon as I have some free time.

Could we remove dependency on DropWizard ?

I think the dependency on dropwizard is only to output the metrics in the logs so yes it can be removed.

I would like to deprecate the JHipster Console for JHipster 7. It can be replaced by documentation on how to integrate with ELK and Prometheus.

Do we have any available statistics for npm vs yarn?
I think it is better to remove yarn if its usage is very less.

@PierreBesson yes exporting metrics through logback/logstash is no longer relevant with Prometheus Let's drop JHipster Console. This way we can also drop DropWizard metrics dependency.

I think documentation could be light because most likely users looking for a production ready centralized logging and metrics may opt for dedicated cloud solutions or for solutions integrated in their cloud provider offer.

For those who may want to manage their own infrastructure (for instance for regulation compliance like PCI-DSS) they will probably not use jhipster-console;

I would like to have a look at changed package structure for the backend. So package by feature and not by layer along with integrating modulith to enforce these constraints or did someone else already started something?

Added jdl centric to needs discussion.
Reason:
.yo-rc.json is a crucial part of yeoman-generator, it provides inter generator config synchronisation.
JDL centric can be implemented by creating a custom Storage once the config workflow is improved.

For side-by-side, there's a dedicated ticket: #12497

Was this page helpful?
0 / 5 - 0 ratings

Related issues

jdubois picture jdubois  ·  339Comments

abhinav910 picture abhinav910  ·  50Comments

yelhouti picture yelhouti  ·  123Comments

deepu105 picture deepu105  ·  50Comments

pochadri picture pochadri  ·  61Comments