Hello, 

I would like to give some news around this subject.

I have created a npm organisation called prometheus-io 
<https://www.npmjs.com/org/prometheus-io>. It will be used to publish the 
npm packages provided by Prometheus such as codemirror-promql.
It means for the next version of codemirror-promql, you will need to 
install the package "@prometheus-io/codemirror-promql" instead of 
codemirror-promql. Same rule applied for lezer-promql, it will be available 
under the npm package "@prometheus-io/lezer-promql"

I have opened a PR that defines how these packages are going to be 
published in Prometheus. Basically every time Prometheus is released, you 
will have a release for these packages regardless there is a change in them.

Note that these new packages are not yet available. They will be published 
with the next Prometheus release (end of June).

Cheers,
Augustin.

Le vendredi 1 avril 2022 à 15:13:27 UTC+2, [email protected] a écrit :

> I finally finished this work. It's available here: 
> https://github.com/prometheus/prometheus/pull/10517.
> With that we are able to update the dependencies with a script
>
> Le lun. 21 mars 2022 à 11:31, Julien Pivotto <[email protected]> a 
> écrit :
>
>> On 21 Mar 11:15, Augustin Husson wrote:
>> > Bumping the codemirror version / release can be simply done in the PR to
>> > the release branches with the command `npm version "v2.35" --workspaces 
>> &&
>> > npm install`.
>> > And then during the release CI, we just have to add somewhere `cd
>> > web/ui/module/codemirror-promql && npm publish`
>> > 
>> > Does it answer your questions ?
>>
>> Okay, from your first email, my understanding was that codemirror was
>> going to be a versioned dependency of the UI.
>>
>> I am fine with releasing both at the same time from the Prometheus
>> repository. I hope it will solve the package.json issues.
>>
>> > 
>> > Le lun. 21 mars 2022 à 11:01, Julien Pivotto <[email protected]> 
>> a
>> > écrit :
>> > 
>> > > On 21 Mar 10:57, Augustin Husson wrote:
>> > > > Hello Julien,
>> > > >
>> > > > I'm not sure I'm following what you would like.
>> > > > Do you mean you would like to fallback to the situation before we 
>> had
>> > > > codemirror into the upstream repo ? And so having only the 
>> react-app in
>> > > > Prometheus ? (which removes the requirement to use the nmp 
>> workspaces
>> > > > feature).
>> > > >
>> > > > That's another way yeah, but that would be a regression from my 
>> point of
>> > > > view since you will have to ensure again that codemirror-promql is
>> > > > correctly synchronized with the changes of PromQL.
>> > > >
>> > > > Probably releasing codemirror-promql with the same tag and same 
>> version
>> > > of
>> > > > Prometheus is the simplest way to release it and will allow us to 
>> put in
>> > > > common the different deps used between codemirror-promql and the
>> > > react-app.
>> > > > It will create many releases with no changes for codemirror-promql, 
>> but
>> > > > that would be the garantie that the version v2.35.0 of 
>> codemirror-promql
>> > > is
>> > > > compatible with the same version of Prometheus.
>> > > >
>> > > > Regards,
>> > > > Augustin.
>> > >
>> > > It means we will have to make the release CI release codemirror first,
>> > > then Prometheus. How do we commit the codemirror release hash in the
>> > > package.lock, in a single commit/tag?
>> > >
>> > > Regards,
>> > >
>> > > >
>> > > >
>> > > > Le lun. 21 mars 2022 à 10:26, Julien Pivotto <
>> [email protected]>
>> > > a
>> > > > écrit :
>> > > >
>> > > > > On 17 Mar 14:05, Augustin Husson wrote:
>> > > > > > Dear Prometheus developers,
>> > > > > >
>> > > > > > As you may know, since a couple months ago, we changed the way 
>> the
>> > > UI is
>> > > > > > organized to be able to include the project codemirror-promql
>> > > directly in
>> > > > > > Prometheus. The idea was when changing the PromQL syntax, we 
>> also
>> > > modify
>> > > > > > codemirror-promql so we don't have any desync between the UI 
>> and the
>> > > > > > backend.
>> > > > > >
>> > > > > > We are using the npm workspace feature which is the way with 
>> npm to
>> > > > > manage
>> > > > > > a mono-repo, and since this moment we have some troubles to 
>> upgrade
>> > > the
>> > > > > UI
>> > > > > > dependencies like:
>> > > > > >
>> > > > > >    - Not every files are correctly updated by dependabot
>> > > > > >    - There are some conflicts between the dependencies used in
>> > > > > >    codemirror-promql and in the react-app. Basically a 
>> dependency A
>> > > in
>> > > > > >    codemirror-promql could be upgraded, but cannot in the 
>> react-app
>> > > > > because
>> > > > > >    the react-app has some constraints that prevent this upgrade.
>> > > Which
>> > > > > leads
>> > > > > >    to not necessarily knowing which version of the dependency A 
>> is
>> > > used.
>> > > > > >
>> > > > > > With just these two points above, updating the UI dependencies
>> > > require
>> > > > > too
>> > > > > > much knowledge about how the npm workspaces are working and it 
>> is
>> > > hard to
>> > > > > > automatize.
>> > > > > >
>> > > > > > Since the last version where @Bjoern Rabenstein <
>> [email protected]>
>> > > > > faced
>> > > > > > some difficulties to upgrade the UI dependencies, I have been
>> > > thinking
>> > > > > > about how to improve the situation. I have compared the 
>> Prometheus
>> > > repo
>> > > > > > with what we are doing in Perses where it is working without any
>> > > issues
>> > > > > > (aka using a npm monorepo).
>> > > > > > And my conclusion is actually: we didn't embrace the way the
>> > > monorepo is
>> > > > > > supposed to work in the UI way.
>> > > > > >
>> > > > > > What we did is to put a side project (codemirror-promql) 
>> alongside
>> > > of the
>> > > > > > react-app without changing a thing. But instead we should 
>> actually
>> > > align
>> > > > > > and put in common a certain amount of dependencies used across 
>> the
>> > > > > > different UI modules.
>> > > > > > It wasn't possible to align the dependencies because we 
>> (actually I)
>> > > > > said,
>> > > > > > it will be cool to synchronize codemirror-promql to the repo
>> > > > > > prometheus/codemirror-promql where we will make the release.
>> > > > > > And for that, we need to build the repo which requires some
>> > > > > > dev-dependencies ...etc so that cannot be put in common with the
>> > > > > react-app.
>> > > > > >
>> > > > > > And like that we still have a tag associated with the release of
>> > > > > > codemirror-promql.
>> > > > > >
>> > > > > > So after this tentative to explain the situation, here what I 
>> would
>> > > like
>> > > > > to
>> > > > > > do, and where I would like your opinion on:
>> > > > > >
>> > > > > > I would like to stop the synchronization of the 
>> codemirror-promql.
>> > > So we
>> > > > > > need to find a new way to release codemirror-promql directly in 
>> the
>> > > > > > Prometheus repository.
>> > > > > >
>> > > > > > So we could say, it is released at the same time as Prometheus
>> > > itself.
>> > > > > And
>> > > > > > then:
>> > > > > >
>> > > > > >    - With the same version. So we will bump the version of 
>> codemirror
>> > > > > from
>> > > > > >    0.19.0 to 2.35.
>> > > > > >    - Its own version (with a sort of script to know if
>> > > codemirror-promql
>> > > > > >    has to be released since the Prometheus release or not).
>> > > > > >
>> > > > > > In both cases, the release of codemirror-promql will be behind 
>> the
>> > > unique
>> > > > > > tag of Prometheus. (i.e. v2.X.Y)
>> > > > > >
>> > > > > > Once we find the way, I will make the changes and after a 
>> couple of
>> > > PRs
>> > > > > we
>> > > > > > should be back to a situation where with a quick command we 
>> will be
>> > > able
>> > > > > to
>> > > > > > update or upgrade the UI dependencies. (The command is already 
>> known
>> > > and
>> > > > > I
>> > > > > > experimented in Perses).
>> > > > > >
>> > > > > > Sorry for the long email, I tried to explain why it's a bit 
>> hard to
>> > > > > upgrade
>> > > > > > the dependencies and it's actually quite hard to explain without
>> > > entering
>> > > > > > in too much detail.
>> > > > > >
>> > > > > > All the best,
>> > > > > > Augustin.
>> > > > >
>> > > > > Hello Augustin,
>> > > > >
>> > > > > I agree that the current way of working is painful. I'd be in 
>> favour of
>> > > > > having codemirror living its own lifecycle outside of the main
>> > > > > repository.
>> > > > >
>> > > > > It will also be easier for downstream builders. NPM workspaces 
>> are not
>> > > > > supported everywhere yet (see
>> > > > > https://github.com/NixOS/nixpkgs/pull/156078).
>> > > > >
>> > > > > As far as I am concerned, we could implement the change ASAP.
>> > > > >
>> > > > > Regards,
>> > > > >
>> > > > > --
>> > > > > Julien Pivotto
>> > > > > @roidelapluie
>> > > > >
>> > > >
>> > > > --
>> > > > You received this message because you are subscribed to the Google
>> > > Groups "Prometheus Developers" group.
>> > > > To unsubscribe from this group and stop receiving emails from it, 
>> send
>> > > an email to [email protected].
>> > > > To view this discussion on the web visit
>> > > 
>> https://groups.google.com/d/msgid/prometheus-developers/CAOJizGeX7aJ6k1-acEd264FT7m6txgU-N6_7gxGryOVoxqE2cQ%40mail.gmail.com
>> > > .
>> > >
>> > > --
>> > > Julien Pivotto
>> > > @roidelapluie
>> > >
>> > 
>> > -- 
>> > You received this message because you are subscribed to the Google 
>> Groups "Prometheus Developers" group.
>> > To unsubscribe from this group and stop receiving emails from it, send 
>> an email to [email protected].
>> > To view this discussion on the web visit 
>> https://groups.google.com/d/msgid/prometheus-developers/CAOJizGcxb_Hy0_45H4Pv2CLnEASkGxNU_j77p0yF0nHmq-whyQ%40mail.gmail.com
>> .
>>
>> -- 
>> Julien Pivotto
>> @roidelapluie
>>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Prometheus Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/prometheus-developers/03f8a580-eb59-424c-b091-d68bd414880an%40googlegroups.com.

Reply via email to