* [FFmpeg-devel] [RFC] Issue tracker
@ 2025-09-14 21:23 Michael Niedermayer via ffmpeg-devel
2025-09-15 11:09 ` [FFmpeg-devel] " Michael Niedermayer via ffmpeg-devel
2025-09-28 7:54 ` Rémi Denis-Courmont via ffmpeg-devel
0 siblings, 2 replies; 25+ messages in thread
From: Michael Niedermayer via ffmpeg-devel @ 2025-09-14 21:23 UTC (permalink / raw)
To: FFmpeg development discussions and patches; +Cc: Michael Niedermayer
[-- Attachment #1.1: Type: text/plain, Size: 987 bytes --]
Hi everyone
trac supports, custom search queries, customly formated results
People can vote on tickets, we can have custom ticket states and custom
workflow on tickets.
Are these things possible in forgejo ?
For example, what we use in trac:
Open Tickets ordered by number of votes colored based on priorty
https://trac.ffmpeg.org/report/11
Non Developer tickets:
https://trac.ffmpeg.org/report/15
Open and New tickets sorted by priority:
https://trac.ffmpeg.org/report/1
Closed Tickts showing the resolution (needs_more_info, fixed, invalid, wontfix) sorted by last modification:
https://trac.ffmpeg.org/query?status=closed&order=changetime&desc=1&col=id&col=summary&col=type&col=component&col=resolution&col=changetime
thx
--
Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB
Some people wanted to paint the bikeshed green, some blue and some pink.
People argued and fought, when they finally agreed, only rust was left.
[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 195 bytes --]
[-- Attachment #2: Type: text/plain, Size: 163 bytes --]
_______________________________________________
ffmpeg-devel mailing list -- ffmpeg-devel@ffmpeg.org
To unsubscribe send an email to ffmpeg-devel-leave@ffmpeg.org
^ permalink raw reply [flat|nested] 25+ messages in thread
* [FFmpeg-devel] Re: [RFC] Issue tracker
2025-09-14 21:23 [FFmpeg-devel] [RFC] Issue tracker Michael Niedermayer via ffmpeg-devel
@ 2025-09-15 11:09 ` Michael Niedermayer via ffmpeg-devel
2025-09-15 11:37 ` Michael Niedermayer via ffmpeg-devel
2025-09-15 12:06 ` Timo Rothenpieler via ffmpeg-devel
2025-09-28 7:54 ` Rémi Denis-Courmont via ffmpeg-devel
1 sibling, 2 replies; 25+ messages in thread
From: Michael Niedermayer via ffmpeg-devel @ 2025-09-15 11:09 UTC (permalink / raw)
To: FFmpeg development discussions and patches; +Cc: Michael Niedermayer
[-- Attachment #1.1: Type: text/plain, Size: 3086 bytes --]
Hi all
ATM the bug reporting guidlines point to trac
and https://trac.ffmpeg.org/newticket redirects to forgejo
So if a user found a bug, now what does she do?
1. First she (maybe) looks at the bug reporting guidlines (which point to trac)
2. and she registers on trac
3. she maybe searches for existing tickets on trac, and maybe adds her info there
4. she tries to open a new ticket on trac and gets redirected to forgejo
5a. she refuses to register on a 2nd tracker and leaves
5b. she registers on forgejo
6. she searches for an existing report on forgejo and maybe adds her bug info there
7. she opens a new ticket on forgejo
lets summarize, what is wrong here
0. I think many people are/where unaware of the newticket redirect (I was unaware until very recently)
1. I think some of the consequences of this regirect where missed
2. the bug tracker was half switched to forgejo
3. users have to register on 2 trackers (they may need to add comments on either)
4. users have to search bugs on 2 trackers (both if they want to open a new one and also
if they are just looking for one)
5. forgejo lacks some nice features like searching per number of votes
So what are we going to do now ?
T. Undo the half move and stay with trac, move or loose 61+32 tickets from forgejo to trac
F. Fully move from trac to forgejo, move 3176+8501 tickets from trac to forgejo
D. have some tickets in trac and some in forgejo, require users to register and search both
?. something else ?
Ideas, Comments ?
thx
On Sun, Sep 14, 2025 at 11:23:17PM +0200, Michael Niedermayer via ffmpeg-devel wrote:
> Hi everyone
>
> trac supports, custom search queries, customly formated results
>
> People can vote on tickets, we can have custom ticket states and custom
> workflow on tickets.
>
> Are these things possible in forgejo ?
>
> For example, what we use in trac:
>
> Open Tickets ordered by number of votes colored based on priorty
> https://trac.ffmpeg.org/report/11
>
> Non Developer tickets:
> https://trac.ffmpeg.org/report/15
>
> Open and New tickets sorted by priority:
> https://trac.ffmpeg.org/report/1
>
> Closed Tickts showing the resolution (needs_more_info, fixed, invalid, wontfix) sorted by last modification:
> https://trac.ffmpeg.org/query?status=closed&order=changetime&desc=1&col=id&col=summary&col=type&col=component&col=resolution&col=changetime
>
> thx
>
> --
> Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB
>
> Some people wanted to paint the bikeshed green, some blue and some pink.
> People argued and fought, when they finally agreed, only rust was left.
> _______________________________________________
> ffmpeg-devel mailing list -- ffmpeg-devel@ffmpeg.org
> To unsubscribe send an email to ffmpeg-devel-leave@ffmpeg.org
--
Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB
Complexity theory is the science of finding the exact solution to an
approximation. Benchmarking OTOH is finding an approximation of the exact
[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 195 bytes --]
[-- Attachment #2: Type: text/plain, Size: 163 bytes --]
_______________________________________________
ffmpeg-devel mailing list -- ffmpeg-devel@ffmpeg.org
To unsubscribe send an email to ffmpeg-devel-leave@ffmpeg.org
^ permalink raw reply [flat|nested] 25+ messages in thread
* [FFmpeg-devel] Re: [RFC] Issue tracker
2025-09-15 11:09 ` [FFmpeg-devel] " Michael Niedermayer via ffmpeg-devel
@ 2025-09-15 11:37 ` Michael Niedermayer via ffmpeg-devel
2025-09-15 12:06 ` Timo Rothenpieler via ffmpeg-devel
1 sibling, 0 replies; 25+ messages in thread
From: Michael Niedermayer via ffmpeg-devel @ 2025-09-15 11:37 UTC (permalink / raw)
To: FFmpeg development discussions and patches; +Cc: Michael Niedermayer
[-- Attachment #1.1: Type: text/plain, Size: 4188 bytes --]
On Mon, Sep 15, 2025 at 01:09:47PM +0200, Michael Niedermayer via ffmpeg-devel wrote:
> Hi all
>
> ATM the bug reporting guidlines point to trac
> and https://trac.ffmpeg.org/newticket redirects to forgejo
>
> So if a user found a bug, now what does she do?
> 1. First she (maybe) looks at the bug reporting guidlines (which point to trac)
> 2. and she registers on trac
> 3. she maybe searches for existing tickets on trac, and maybe adds her info there
> 4. she tries to open a new ticket on trac and gets redirected to forgejo
> 5a. she refuses to register on a 2nd tracker and leaves
> 5b. she registers on forgejo
> 6. she searches for an existing report on forgejo and maybe adds her bug info there
> 7. she opens a new ticket on forgejo
>
> lets summarize, what is wrong here
> 0. I think many people are/where unaware of the newticket redirect (I was unaware until very recently)
> 1. I think some of the consequences of this regirect where missed
> 2. the bug tracker was half switched to forgejo
> 3. users have to register on 2 trackers (they may need to add comments on either)
> 4. users have to search bugs on 2 trackers (both if they want to open a new one and also
> if they are just looking for one)
> 5. forgejo lacks some nice features like searching per number of votes
>
> So what are we going to do now ?
> T. Undo the half move and stay with trac, move or loose 61+32 tickets from forgejo to trac
> F. Fully move from trac to forgejo, move 3176+8501 tickets from trac to forgejo
> D. have some tickets in trac and some in forgejo, require users to register and search both
> ?. something else ?
>
>
> Ideas, Comments ?
Some brainstorming, potential steps that someone may need to do
for T,
phase 0:
+ forgejos new ticket page should redirect to trac instead of trac to forgejo
or the page should explain the use of forgejo vs trac
phase 1
+ some or all of the 93 tickets should be moved to trac
(if all then forgejos issue tracker can be disabled)
phase 2:
+ we need to investigate some scalability issues. We have one admin page
that takes a really long time to load. It sometimes times out but seems
working ATM. But as users, tickets and sessions grow we will likely at
some point become unable to load this page without increasing timeouts
at webserver and browser. Timo has already spend time on
updating things, switching database and so on. So really solving this,
may involve becoming active in development on trac itself
for F,
phase 0:
+ bugreporting guide needs update
+ tracs new ticket page should explain the transition and link to forgejo
not just redirect (it confuses users especially if the bugreporting guide just
pointed them to trac)
phase 1:
+ 11696 tickets need to be moved into forgejo with their metadata (creation
date, authors, comments, state, resolution, number, keywords, html and git links,
CC, attachments) or we need to accept to loose this data in a searchable way
+ keywords -> labels ?
+ per ticket redirects to forgejo
phase 2:
+ wiki needs to be transitioned to forgejo, ideally with history or we need
to keep the wiki in trac and disable in forgejo
+ per wiki page redirects to forgejo
phase 3:
+ trac shutdown
+ landing page (register & new) redirect to forgejo
note, we also serve trac.mplayerhq.hu
for D,
+ bugreporting guide needs update
+ both trackers search and register pages need to point to the other too
so the users know that they need to search both trackers
+ or hire some web UI developer and have her write a meta search
that searches both trakers
thx
[...]
--
Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB
Dictatorship: All citizens are under surveillance, all their steps and
actions recorded, for the politicians to enforce control.
Democracy: All politicians are under surveillance, all their steps and
actions recorded, for the citizens to enforce control.
[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 195 bytes --]
[-- Attachment #2: Type: text/plain, Size: 163 bytes --]
_______________________________________________
ffmpeg-devel mailing list -- ffmpeg-devel@ffmpeg.org
To unsubscribe send an email to ffmpeg-devel-leave@ffmpeg.org
^ permalink raw reply [flat|nested] 25+ messages in thread
* [FFmpeg-devel] Re: [RFC] Issue tracker
2025-09-15 11:09 ` [FFmpeg-devel] " Michael Niedermayer via ffmpeg-devel
2025-09-15 11:37 ` Michael Niedermayer via ffmpeg-devel
@ 2025-09-15 12:06 ` Timo Rothenpieler via ffmpeg-devel
2025-09-15 12:30 ` Michael Niedermayer via ffmpeg-devel
2025-09-15 12:57 ` Michael Niedermayer via ffmpeg-devel
1 sibling, 2 replies; 25+ messages in thread
From: Timo Rothenpieler via ffmpeg-devel @ 2025-09-15 12:06 UTC (permalink / raw)
To: ffmpeg-devel; +Cc: Timo Rothenpieler
On 15/09/2025 13:09, Michael Niedermayer via ffmpeg-devel wrote:
> Hi all
>
> ATM the bug reporting guidlines point to trac
> and https://trac.ffmpeg.org/newticket redirects to forgejo
>
> So if a user found a bug, now what does she do?
> 1. First she (maybe) looks at the bug reporting guidlines (which point to trac)
> 2. and she registers on trac
> 3. she maybe searches for existing tickets on trac, and maybe adds her info there
> 4. she tries to open a new ticket on trac and gets redirected to forgejo
> 5a. she refuses to register on a 2nd tracker and leaves
> 5b. she registers on forgejo
> 6. she searches for an existing report on forgejo and maybe adds her bug info there
> 7. she opens a new ticket on forgejo
>
> lets summarize, what is wrong here
> 0. I think many people are/where unaware of the newticket redirect (I was unaware until very recently)
> 1. I think some of the consequences of this regirect where missed
> 2. the bug tracker was half switched to forgejo
> 3. users have to register on 2 trackers (they may need to add comments on either)
> 4. users have to search bugs on 2 trackers (both if they want to open a new one and also
> if they are just looking for one)
> 5. forgejo lacks some nice features like searching per number of votes
>
> So what are we going to do now ?
> T. Undo the half move and stay with trac, move or loose 61+32 tickets from forgejo to trac
> F. Fully move from trac to forgejo, move 3176+8501 tickets from trac to forgejo
> D. have some tickets in trac and some in forgejo, require users to register and search both
> ?. something else ?
>
>
> Ideas, Comments ?
I do think trac is a dead end software, and we want to eventually retire it.
It can stick around in read-only mode indefinitely, eventually turned
into a dump of static HTML pages. But it's not a software that we can
keep supporting forever.
I thought Forgejo had votes as well, but I can't find them anymore, so I
might be misremembering that.
But the usual issue conclusions are represented via labels, and they do
exist. And have been used for that purpose already.
Not sure I'd really want to stick with hard to maintain trac just for
voting on issues. If we really want that, it'd probably easier to
contribute that feature to Forgejo.
I'm also not a fan of migrating issues, since the migrates one are
always going to be horribly ugly, basically just consisting of one big
quote posted by a bot account.
It is possible to do though, so if that's desired instead of keeping
trac itself around, I can look into it.
So my preferred solution is to just keep the two separated, disable new
tickets on trac, and at some point in the distant future make trac fully
read-only/turn it into static HTML pages.
Forgejo already back-references trac issues when they're tagged
somewhere on the FFmpeg/FFmpeg repo, hence all the new issues/PRs start
at 20000.
If we really kept using trac that would also eventually clash and then
really make a huge mess.
_______________________________________________
ffmpeg-devel mailing list -- ffmpeg-devel@ffmpeg.org
To unsubscribe send an email to ffmpeg-devel-leave@ffmpeg.org
^ permalink raw reply [flat|nested] 25+ messages in thread
* [FFmpeg-devel] Re: [RFC] Issue tracker
2025-09-15 12:06 ` Timo Rothenpieler via ffmpeg-devel
@ 2025-09-15 12:30 ` Michael Niedermayer via ffmpeg-devel
2025-09-15 12:47 ` Timo Rothenpieler via ffmpeg-devel
2025-09-15 12:57 ` Michael Niedermayer via ffmpeg-devel
1 sibling, 1 reply; 25+ messages in thread
From: Michael Niedermayer via ffmpeg-devel @ 2025-09-15 12:30 UTC (permalink / raw)
To: FFmpeg development discussions and patches; +Cc: Michael Niedermayer
[-- Attachment #1.1: Type: text/plain, Size: 1897 bytes --]
Hi
On Mon, Sep 15, 2025 at 02:06:07PM +0200, Timo Rothenpieler via ffmpeg-devel wrote:
[...]
>
> I thought Forgejo had votes as well, but I can't find them anymore, so I
> might be misremembering that.
One can add thumbs up and down to individual messages of an issue but they
are not shown in the search results or searchable as far as i can see
In fact the whole search capability in Forgejo is disappointing
even searching for open (not new) tickets doesnt work as documented
(one cannot disable "new" lables by alt + mouse click it works by
alt + keyboard click)
> But the usual issue conclusions are represented via labels, and they do
> exist. And have been used for that purpose already.
> Not sure I'd really want to stick with hard to maintain trac just for voting
> on issues. If we really want that, it'd probably easier to contribute that
> feature to Forgejo.
>
> I'm also not a fan of migrating issues, since the migrates one are always
> going to be horribly ugly, basically just consisting of one big quote posted
> by a bot account.
> It is possible to do though, so if that's desired instead of keeping trac
> itself around, I can look into it.
Naively, i would have thought that issue migration would be done by a
Database -> Database thing
but there are many shades of this
one could leave issues in trac and instead extend Forgejos search so it
simply in addition to what it does also have it run a sql querry
in the trac db and simply return links to the trac tickets
this actually feels like quite doable for someone knowing Forgejo
and also the trac db layout. (that is not me)
thx
[...]
--
Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB
If a bugfix only changes things apparently unrelated to the bug with no
further explanation, that is a good sign that the bugfix is wrong.
[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 195 bytes --]
[-- Attachment #2: Type: text/plain, Size: 163 bytes --]
_______________________________________________
ffmpeg-devel mailing list -- ffmpeg-devel@ffmpeg.org
To unsubscribe send an email to ffmpeg-devel-leave@ffmpeg.org
^ permalink raw reply [flat|nested] 25+ messages in thread
* [FFmpeg-devel] Re: [RFC] Issue tracker
2025-09-15 12:30 ` Michael Niedermayer via ffmpeg-devel
@ 2025-09-15 12:47 ` Timo Rothenpieler via ffmpeg-devel
0 siblings, 0 replies; 25+ messages in thread
From: Timo Rothenpieler via ffmpeg-devel @ 2025-09-15 12:47 UTC (permalink / raw)
To: ffmpeg-devel; +Cc: Timo Rothenpieler
On 15/09/2025 14:30, Michael Niedermayer via ffmpeg-devel wrote:
> Hi
>
> On Mon, Sep 15, 2025 at 02:06:07PM +0200, Timo Rothenpieler via ffmpeg-devel wrote:
> [...]
>
>>
>> I thought Forgejo had votes as well, but I can't find them anymore, so I
>> might be misremembering that.
>
> One can add thumbs up and down to individual messages of an issue but they
> are not shown in the search results or searchable as far as i can see
>
> In fact the whole search capability in Forgejo is disappointing
> even searching for open (not new) tickets doesnt work as documented
> (one cannot disable "new" lables by alt + mouse click it works by
> alt + keyboard click)
>
>
>> But the usual issue conclusions are represented via labels, and they do
>> exist. And have been used for that purpose already.
>> Not sure I'd really want to stick with hard to maintain trac just for voting
>> on issues. If we really want that, it'd probably easier to contribute that
>> feature to Forgejo.
>>
>
>> I'm also not a fan of migrating issues, since the migrates one are always
>> going to be horribly ugly, basically just consisting of one big quote posted
>> by a bot account.
>> It is possible to do though, so if that's desired instead of keeping trac
>> itself around, I can look into it.
>
> Naively, i would have thought that issue migration would be done by a
> Database -> Database thing
Yeah, that's how I'd do it as well. But every actual reply to an issue
needs to be associated to a user, and spamming our user DB with
thousands of users just for the migration isn't great.
> but there are many shades of this
>
> one could leave issues in trac and instead extend Forgejos search so it
> simply in addition to what it does also have it run a sql querry
> in the trac db and simply return links to the trac tickets
I doubt Forgejo would accept that as a contribution, and I do not really
want to start maintaining a fork of Forgejo for our instance.
> this actually feels like quite doable for someone knowing Forgejo
> and also the trac db layout. (that is not me)
It'd need to be done in some generic way so that any arbitrary issue
tracker can be hooked up like that. So it's quite a bit of work.
> thx
>
> [...]
>
>
> _______________________________________________
> ffmpeg-devel mailing list -- ffmpeg-devel@ffmpeg.org
> To unsubscribe send an email to ffmpeg-devel-leave@ffmpeg.org
_______________________________________________
ffmpeg-devel mailing list -- ffmpeg-devel@ffmpeg.org
To unsubscribe send an email to ffmpeg-devel-leave@ffmpeg.org
^ permalink raw reply [flat|nested] 25+ messages in thread
* [FFmpeg-devel] Re: [RFC] Issue tracker
2025-09-15 12:06 ` Timo Rothenpieler via ffmpeg-devel
2025-09-15 12:30 ` Michael Niedermayer via ffmpeg-devel
@ 2025-09-15 12:57 ` Michael Niedermayer via ffmpeg-devel
2025-09-15 13:05 ` Michael Niedermayer via ffmpeg-devel
2025-09-15 17:19 ` Timo Rothenpieler via ffmpeg-devel
1 sibling, 2 replies; 25+ messages in thread
From: Michael Niedermayer via ffmpeg-devel @ 2025-09-15 12:57 UTC (permalink / raw)
To: FFmpeg development discussions and patches; +Cc: Michael Niedermayer
[-- Attachment #1.1: Type: text/plain, Size: 812 bytes --]
Hi
On Mon, Sep 15, 2025 at 02:06:07PM +0200, Timo Rothenpieler via ffmpeg-devel wrote:
> On 15/09/2025 13:09, Michael Niedermayer via ffmpeg-devel wrote:
[...]
> > Ideas, Comments ?
>
> I do think trac is a dead end software, and we want to eventually retire it.
btw, anyone knows why the trac project seems dieing / dead ?
Its a quite capable issue tracker ...
also how is it related to redmine, which seems to have some support
for importing trac ?
Have we considered redmine as alternative ?
If we could do a full import of trac, this may be a smoother
thx
[...]
--
Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB
When you are offended at any man's fault, turn to yourself and study your
own failings. Then you will forget your anger. -- Epictetus
[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 195 bytes --]
[-- Attachment #2: Type: text/plain, Size: 163 bytes --]
_______________________________________________
ffmpeg-devel mailing list -- ffmpeg-devel@ffmpeg.org
To unsubscribe send an email to ffmpeg-devel-leave@ffmpeg.org
^ permalink raw reply [flat|nested] 25+ messages in thread
* [FFmpeg-devel] Re: [RFC] Issue tracker
2025-09-15 12:57 ` Michael Niedermayer via ffmpeg-devel
@ 2025-09-15 13:05 ` Michael Niedermayer via ffmpeg-devel
2025-09-15 17:19 ` Timo Rothenpieler via ffmpeg-devel
1 sibling, 0 replies; 25+ messages in thread
From: Michael Niedermayer via ffmpeg-devel @ 2025-09-15 13:05 UTC (permalink / raw)
To: FFmpeg development discussions and patches; +Cc: Michael Niedermayer
[-- Attachment #1.1: Type: text/plain, Size: 1042 bytes --]
On Mon, Sep 15, 2025 at 02:57:53PM +0200, Michael Niedermayer via ffmpeg-devel wrote:
> Hi
>
> On Mon, Sep 15, 2025 at 02:06:07PM +0200, Timo Rothenpieler via ffmpeg-devel wrote:
> > On 15/09/2025 13:09, Michael Niedermayer via ffmpeg-devel wrote:
> [...]
> > > Ideas, Comments ?
> >
> > I do think trac is a dead end software, and we want to eventually retire it.
>
> btw, anyone knows why the trac project seems dieing / dead ?
> Its a quite capable issue tracker ...
>
> also how is it related to redmine, which seems to have some support
> for importing trac ?
>
> Have we considered redmine as alternative ?
> If we could do a full import of trac, this may be a smoother
smoother solution (iam missing words in my sentances)
[...]
--
Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB
Concerning the gods, I have no means of knowing whether they exist or not
or of what sort they may be, because of the obscurity of the subject, and
the brevity of human life -- Protagoras
[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 195 bytes --]
[-- Attachment #2: Type: text/plain, Size: 163 bytes --]
_______________________________________________
ffmpeg-devel mailing list -- ffmpeg-devel@ffmpeg.org
To unsubscribe send an email to ffmpeg-devel-leave@ffmpeg.org
^ permalink raw reply [flat|nested] 25+ messages in thread
* [FFmpeg-devel] Re: [RFC] Issue tracker
2025-09-15 12:57 ` Michael Niedermayer via ffmpeg-devel
2025-09-15 13:05 ` Michael Niedermayer via ffmpeg-devel
@ 2025-09-15 17:19 ` Timo Rothenpieler via ffmpeg-devel
2025-09-15 18:26 ` Michael Niedermayer via ffmpeg-devel
1 sibling, 1 reply; 25+ messages in thread
From: Timo Rothenpieler via ffmpeg-devel @ 2025-09-15 17:19 UTC (permalink / raw)
To: ffmpeg-devel; +Cc: Timo Rothenpieler
[-- Attachment #1.1: Type: text/plain, Size: 1210 bytes --]
On 9/15/2025 2:57 PM, Michael Niedermayer via ffmpeg-devel wrote:
> Hi
>
> On Mon, Sep 15, 2025 at 02:06:07PM +0200, Timo Rothenpieler via ffmpeg-devel wrote:
>> On 15/09/2025 13:09, Michael Niedermayer via ffmpeg-devel wrote:
> [...]
>>> Ideas, Comments ?
>>
>> I do think trac is a dead end software, and we want to eventually retire it.
>
> btw, anyone knows why the trac project seems dieing / dead ?
> Its a quite capable issue tracker ...
>
> also how is it related to redmine, which seems to have some support
> for importing trac ?
>
> Have we considered redmine as alternative ?
> If we could do a full import of trac, this may be a smoother
redmine is apparently a "trac clone written in ruby".
No idea if it's database-compatible, or just similar idea but full
re-implementation.
But really, I don't see how in the long run a separate issue tracker
from Forgejo makes sense.
The issue IDs will eventually clash, and integration and linking between
them will be a right mess.
Plus the multi-account issue you mentioned.
I never had issues with the Forgejo Issue search. What exactly is
broken/missing? Fixing/enhancing those things is usually pretty easy.
[-- Attachment #1.2: S/MIME Cryptographic Signature --]
[-- Type: application/pkcs7-signature, Size: 4742 bytes --]
[-- Attachment #2: Type: text/plain, Size: 163 bytes --]
_______________________________________________
ffmpeg-devel mailing list -- ffmpeg-devel@ffmpeg.org
To unsubscribe send an email to ffmpeg-devel-leave@ffmpeg.org
^ permalink raw reply [flat|nested] 25+ messages in thread
* [FFmpeg-devel] Re: [RFC] Issue tracker
2025-09-15 17:19 ` Timo Rothenpieler via ffmpeg-devel
@ 2025-09-15 18:26 ` Michael Niedermayer via ffmpeg-devel
2025-09-15 18:35 ` Timo Rothenpieler via ffmpeg-devel
0 siblings, 1 reply; 25+ messages in thread
From: Michael Niedermayer via ffmpeg-devel @ 2025-09-15 18:26 UTC (permalink / raw)
To: FFmpeg development discussions and patches; +Cc: Michael Niedermayer
[-- Attachment #1.1: Type: text/plain, Size: 2696 bytes --]
Hi Timo
On Mon, Sep 15, 2025 at 07:19:17PM +0200, Timo Rothenpieler via ffmpeg-devel wrote:
> On 9/15/2025 2:57 PM, Michael Niedermayer via ffmpeg-devel wrote:
> > Hi
> >
> > On Mon, Sep 15, 2025 at 02:06:07PM +0200, Timo Rothenpieler via ffmpeg-devel wrote:
> > > On 15/09/2025 13:09, Michael Niedermayer via ffmpeg-devel wrote:
> > [...]
> > > > Ideas, Comments ?
> > >
> > > I do think trac is a dead end software, and we want to eventually retire it.
> >
> > btw, anyone knows why the trac project seems dieing / dead ?
> > Its a quite capable issue tracker ...
> >
> > also how is it related to redmine, which seems to have some support
> > for importing trac ?
> >
> > Have we considered redmine as alternative ?
> > If we could do a full import of trac, this may be a smoother
>
> redmine is apparently a "trac clone written in ruby".
> No idea if it's database-compatible, or just similar idea but full
> re-implementation.
>
> But really, I don't see how in the long run a separate issue tracker from
> Forgejo makes sense.
> The issue IDs will eventually clash, and integration and linking between
> them will be a right mess.
the mix of trac and Forgejo is already a mess if theres no _clean_
way to import the tickets
We would always have 15 years of ticket history outside our issue tracker
if you really want to have pull requests and issues have distinct positive numbers
well, make one even and the other odd above the value where they would clash
so it would be
0..20k Trac
20k-25k Forgejo
25k+ even Forgejo
25k+ odd redmine
>
> Plus the multi-account issue you mentioned.
redmine can accept OAuth2/OIDC logins via plugins IIUC
would need to be tested in a test setup but there seems support for shared
accounts in principle
>
> I never had issues with the Forgejo Issue search. What exactly is
> broken/missing? Fixing/enhancing those things is usually pretty easy.
1. It doesnt show the number of thumbs up / down in the search result
2. I cannot sort based on the thumbs up / down
3. on the labels it says "Use Alt + Click to exclude labels", this does not work
alt-shift-click works, alt click doesnt, alt-enter works
it may be that alt-click is interpreted by browser or by some other component
but either way it doesnt work, the user will not care why it doesnt work, its
bad UI
4. it does not search in the 15 years of tickets from trac
thx
[...]
--
Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB
The smallest minority on earth is the individual. Those who deny
individual rights cannot claim to be defenders of minorities. - Ayn Rand
[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 195 bytes --]
[-- Attachment #2: Type: text/plain, Size: 163 bytes --]
_______________________________________________
ffmpeg-devel mailing list -- ffmpeg-devel@ffmpeg.org
To unsubscribe send an email to ffmpeg-devel-leave@ffmpeg.org
^ permalink raw reply [flat|nested] 25+ messages in thread
* [FFmpeg-devel] Re: [RFC] Issue tracker
2025-09-15 18:26 ` Michael Niedermayer via ffmpeg-devel
@ 2025-09-15 18:35 ` Timo Rothenpieler via ffmpeg-devel
2025-09-15 19:09 ` Gyan Doshi via ffmpeg-devel
2025-09-15 22:36 ` Michael Niedermayer via ffmpeg-devel
0 siblings, 2 replies; 25+ messages in thread
From: Timo Rothenpieler via ffmpeg-devel @ 2025-09-15 18:35 UTC (permalink / raw)
To: ffmpeg-devel; +Cc: Timo Rothenpieler
[-- Attachment #1.1: Type: text/plain, Size: 2538 bytes --]
On 9/15/2025 8:26 PM, Michael Niedermayer via ffmpeg-devel wrote:
> Hi Timo
>
> On Mon, Sep 15, 2025 at 07:19:17PM +0200, Timo Rothenpieler via ffmpeg-devel wrote:
>> On 9/15/2025 2:57 PM, Michael Niedermayer via ffmpeg-devel wrote:
>>> Hi
>>>
>>> On Mon, Sep 15, 2025 at 02:06:07PM +0200, Timo Rothenpieler via ffmpeg-devel wrote:
>>>> On 15/09/2025 13:09, Michael Niedermayer via ffmpeg-devel wrote:
>>> [...]
>>>>> Ideas, Comments ?
>>>>
>>>> I do think trac is a dead end software, and we want to eventually retire it.
>>>
>>> btw, anyone knows why the trac project seems dieing / dead ?
>>> Its a quite capable issue tracker ...
>>>
>>> also how is it related to redmine, which seems to have some support
>>> for importing trac ?
>>>
>>> Have we considered redmine as alternative ?
>>> If we could do a full import of trac, this may be a smoother
>>
>> redmine is apparently a "trac clone written in ruby".
>> No idea if it's database-compatible, or just similar idea but full
>> re-implementation.
>>
>
>> But really, I don't see how in the long run a separate issue tracker from
>> Forgejo makes sense.
>> The issue IDs will eventually clash, and integration and linking between
>> them will be a right mess.
>
> the mix of trac and Forgejo is already a mess if theres no _clean_
> way to import the tickets
> We would always have 15 years of ticket history outside our issue tracker
>
> if you really want to have pull requests and issues have distinct positive numbers
> well, make one even and the other odd above the value where they would clash
> so it would be
> 0..20k Trac
> 20k-25k Forgejo
> 25k+ even Forgejo
> 25k+ odd redmine
That is not something that can be done, and honestly seems a bit silly
to me.
>
>>
>> Plus the multi-account issue you mentioned.
>
> redmine can accept OAuth2/OIDC logins via plugins IIUC
> would need to be tested in a test setup but there seems support for shared
> accounts in principle
I honestly don't understand the insistence on an external issue tracker.
That just makes things more complex for no real reason.
And I also firmly disagree about the current setup being "a mess".
With no new tickets being allowed on trac, its quite the opposite of that.
If issues/tickets could be opened on both, then it'd be a mess.
This way it's just a migration.
And the tickets on trac won't go away, so no history will be lost.
If you really want, I can import them all into Forgejo, but _that_ will
be horribly messy.
[-- Attachment #1.2: S/MIME Cryptographic Signature --]
[-- Type: application/pkcs7-signature, Size: 4742 bytes --]
[-- Attachment #2: Type: text/plain, Size: 163 bytes --]
_______________________________________________
ffmpeg-devel mailing list -- ffmpeg-devel@ffmpeg.org
To unsubscribe send an email to ffmpeg-devel-leave@ffmpeg.org
^ permalink raw reply [flat|nested] 25+ messages in thread
* [FFmpeg-devel] Re: [RFC] Issue tracker
2025-09-15 18:35 ` Timo Rothenpieler via ffmpeg-devel
@ 2025-09-15 19:09 ` Gyan Doshi via ffmpeg-devel
2025-09-15 21:46 ` Michael Niedermayer via ffmpeg-devel
2025-09-15 22:36 ` Michael Niedermayer via ffmpeg-devel
1 sibling, 1 reply; 25+ messages in thread
From: Gyan Doshi via ffmpeg-devel @ 2025-09-15 19:09 UTC (permalink / raw)
To: ffmpeg-devel; +Cc: Gyan Doshi
On 2025-09-16 12:05 am, Timo Rothenpieler via ffmpeg-devel wrote:
> On 9/15/2025 8:26 PM, Michael Niedermayer via ffmpeg-devel wrote:
>> Hi Timo
>>
>> On Mon, Sep 15, 2025 at 07:19:17PM +0200, Timo Rothenpieler via
>> ffmpeg-devel wrote:
>>> On 9/15/2025 2:57 PM, Michael Niedermayer via ffmpeg-devel wrote:
>>>> Hi
>>>>
>>>> On Mon, Sep 15, 2025 at 02:06:07PM +0200, Timo Rothenpieler via
>>>> ffmpeg-devel wrote:
>>>>> On 15/09/2025 13:09, Michael Niedermayer via ffmpeg-devel wrote:
>>>> [...]
>>>>>> Ideas, Comments ?
>>>>>
>>>>> I do think trac is a dead end software, and we want to eventually
>>>>> retire it.
>>>>
>>>> btw, anyone knows why the trac project seems dieing / dead ?
>>>> Its a quite capable issue tracker ...
>>>>
>>>> also how is it related to redmine, which seems to have some support
>>>> for importing trac ?
>>>>
>>>> Have we considered redmine as alternative ?
>>>> If we could do a full import of trac, this may be a smoother
>>>
>>> redmine is apparently a "trac clone written in ruby".
>>> No idea if it's database-compatible, or just similar idea but full
>>> re-implementation.
>>>
>>
>>> But really, I don't see how in the long run a separate issue tracker
>>> from
>>> Forgejo makes sense.
>>> The issue IDs will eventually clash, and integration and linking
>>> between
>>> them will be a right mess.
>>
>> the mix of trac and Forgejo is already a mess if theres no _clean_
>> way to import the tickets
>> We would always have 15 years of ticket history outside our issue
>> tracker
>>
>> if you really want to have pull requests and issues have distinct
>> positive numbers
>> well, make one even and the other odd above the value where they
>> would clash
>> so it would be
>> 0..20k Trac
>> 20k-25k Forgejo
>> 25k+ even Forgejo
>> 25k+ odd redmine
>
> That is not something that can be done, and honestly seems a bit silly
> to me.
>
>>
>>>
>>> Plus the multi-account issue you mentioned.
>>
>> redmine can accept OAuth2/OIDC logins via plugins IIUC
>> would need to be tested in a test setup but there seems support for
>> shared
>> accounts in principle
> I honestly don't understand the insistence on an external issue tracker.
> That just makes things more complex for no real reason.
>
> And I also firmly disagree about the current setup being "a mess".
> With no new tickets being allowed on trac, its quite the opposite of
> that.
> If issues/tickets could be opened on both, then it'd be a mess.
> This way it's just a migration.
>
> And the tickets on trac won't go away, so no history will be lost.
> If you really want, I can import them all into Forgejo, but _that_
> will be horribly messy.
It's best to have a single issue tracker.
It's best for the issue tracker to be integrated with the code workflow.
What can happen is that if an existing open trac issue is taken up for
active resolution, then a new issue at Forgejo can be opened, with a
reference to the trac issue. A comment can be left at trac linking to
this new Forge issue, so all further activity occurs at code.ffmpeg.
This would avoid any wholesale migration or duplication.
Regards,
Gyan
_______________________________________________
ffmpeg-devel mailing list -- ffmpeg-devel@ffmpeg.org
To unsubscribe send an email to ffmpeg-devel-leave@ffmpeg.org
^ permalink raw reply [flat|nested] 25+ messages in thread
* [FFmpeg-devel] Re: [RFC] Issue tracker
2025-09-15 19:09 ` Gyan Doshi via ffmpeg-devel
@ 2025-09-15 21:46 ` Michael Niedermayer via ffmpeg-devel
2025-09-16 4:39 ` Gyan Doshi via ffmpeg-devel
0 siblings, 1 reply; 25+ messages in thread
From: Michael Niedermayer via ffmpeg-devel @ 2025-09-15 21:46 UTC (permalink / raw)
To: FFmpeg development discussions and patches; +Cc: Michael Niedermayer
[-- Attachment #1.1: Type: text/plain, Size: 971 bytes --]
Hi Gyan
On Tue, Sep 16, 2025 at 12:39:37AM +0530, Gyan Doshi via ffmpeg-devel wrote:
> It's best to have a single issue tracker.
+1
> It's best for the issue tracker to be integrated with the code workflow.
+1
>
> What can happen is that if an existing open trac issue is taken up for
> active resolution, then a new issue at Forgejo can be opened, with a
> reference to the trac issue. A comment can be left at trac linking to this
> new Forge issue, so all further activity occurs at code.ffmpeg. This would
> avoid any wholesale migration or duplication.
It can _IF_ someone spends the extra time and work.
How many people want to do that ?
And how many will do it ?
And what do we gain by avoiding "wholesale migration" ?
thx
[...]
--
Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB
Those who are too smart to engage in politics are punished by being
governed by those who are dumber. -- Plato
[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 195 bytes --]
[-- Attachment #2: Type: text/plain, Size: 163 bytes --]
_______________________________________________
ffmpeg-devel mailing list -- ffmpeg-devel@ffmpeg.org
To unsubscribe send an email to ffmpeg-devel-leave@ffmpeg.org
^ permalink raw reply [flat|nested] 25+ messages in thread
* [FFmpeg-devel] Re: [RFC] Issue tracker
2025-09-15 18:35 ` Timo Rothenpieler via ffmpeg-devel
2025-09-15 19:09 ` Gyan Doshi via ffmpeg-devel
@ 2025-09-15 22:36 ` Michael Niedermayer via ffmpeg-devel
1 sibling, 0 replies; 25+ messages in thread
From: Michael Niedermayer via ffmpeg-devel @ 2025-09-15 22:36 UTC (permalink / raw)
To: FFmpeg development discussions and patches; +Cc: Michael Niedermayer
[-- Attachment #1.1: Type: text/plain, Size: 3435 bytes --]
On Mon, Sep 15, 2025 at 08:35:21PM +0200, Timo Rothenpieler via ffmpeg-devel wrote:
> On 9/15/2025 8:26 PM, Michael Niedermayer via ffmpeg-devel wrote:
[...]
>
> >
> > >
> > > Plus the multi-account issue you mentioned.
> >
> > redmine can accept OAuth2/OIDC logins via plugins IIUC
> > would need to be tested in a test setup but there seems support for shared
> > accounts in principle
> I honestly don't understand the insistence on an external issue tracker.
> That just makes things more complex for no real reason.
It makes things more complex for the admin if there is an external tracker
It makes things easier for the user if there is one tracker instead of 2
>
> And I also firmly disagree about the current setup being "a mess".
> With no new tickets being allowed on trac, its quite the opposite of that.
> If issues/tickets could be opened on both, then it'd be a mess.
> This way it's just a migration.
simple example. To show a few things that could happen
A user found 2 bugs in the svq1 decoder, what does she do now ?
Before she has to
1. search trac for bugs in the svq1 decoder, she finds the first bug there with two
proposed patches but no sample
2. she registers on trac
3. she uploads the sample and confirms that the first patch fixes it
4. she opens a new report for bug #2
But now after trac->forgejo she has to
1. search trac for bugs in the svq1 decoder, she finds the first bug there with a
proposed patch but no sample
2. she registers on trac
3. she uploads the sample and confirms that the patch fixes it
4. she tries to open a new ticket, but she is redirected to Forgejo
5. she registers on forgejo
6. she searches for the 2 bugs on forgejo, she finds a duplicate of #1
it links to a unrelated issue on trac or links to none and has been closed and a patch
which doesnt fix the issue was applied already. A mistake that happened because
the earlier patch in trac was missed
7. she uploads the sample to forgejo too
8. she reopens the duplicate issue and adds a link to trac explaining that
the fix in trac was correct. People are confused and just ignore the ticket
the wrong fix also isnt reverted as noone realized that a wrong fix was applied
already
9. she searches for the 2nd issue and also doesnt find it on forgejo
10.she opens a issue on forgejo for the 2nd issue
11. she is being asked to please check for duplicates on trac
12. she repeatedly searched trac for the issue and
13. she replies explaining she checked twice and thats a new issue
Its a constructed example but its quite a bit of extra work for everyone
and the outcome in the example is worse, as confusion and mistakes
have lead to the application of a wrong patch
>
> And the tickets on trac won't go away, so no history will be lost.
> If you really want, I can import them all into Forgejo, but _that_ will be
> horribly messy.
It is largely just basic text with minimal formating, why does this
become messy ?
can we do something about the messyness and have this "not messy" ?
thx
[...]
--
Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB
The day soldiers stop bringing you their problems is the day you have stopped
leading them. They have either lost confidence that you can help or concluded
you do not care. Either case is a failure of leadership. - Colin Powell
[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 195 bytes --]
[-- Attachment #2: Type: text/plain, Size: 163 bytes --]
_______________________________________________
ffmpeg-devel mailing list -- ffmpeg-devel@ffmpeg.org
To unsubscribe send an email to ffmpeg-devel-leave@ffmpeg.org
^ permalink raw reply [flat|nested] 25+ messages in thread
* [FFmpeg-devel] Re: [RFC] Issue tracker
2025-09-15 21:46 ` Michael Niedermayer via ffmpeg-devel
@ 2025-09-16 4:39 ` Gyan Doshi via ffmpeg-devel
2025-09-23 21:50 ` [FFmpeg-devel] trac ticket statistics Was: " Michael Niedermayer via ffmpeg-devel
2025-09-23 22:33 ` [FFmpeg-devel] " Michael Niedermayer via ffmpeg-devel
0 siblings, 2 replies; 25+ messages in thread
From: Gyan Doshi via ffmpeg-devel @ 2025-09-16 4:39 UTC (permalink / raw)
To: ffmpeg-devel; +Cc: Gyan Doshi
On 2025-09-16 03:16 am, Michael Niedermayer via ffmpeg-devel wrote:
>> What can happen is that if an existing open trac issue is taken up for
>> active resolution, then a new issue at Forgejo can be opened, with a
>> reference to the trac issue. A comment can be left at trac linking to this
>> new Forge issue, so all further activity occurs at code.ffmpeg. This would
>> avoid any wholesale migration or duplication.
> It can _IF_ someone spends the extra time and work.
> How many people want to do that ?
> And how many will do it ?
There's hardly any extra work.
Open a single issue at forge where the title says, "trac 1234:
regression in ..."
Add a link to the trac issue in the body.
Post a comment at the trac issue: "continued at
https://code.ffmpeg.org/FFmpeg/FFmpeg/issues/12345"
Only do this for issues where someone is actively handling the ticket.
> And what do we gain by avoiding "wholesale migration" ?
Added bloat of thousands of dormant issues marked as open, many of which
are invalid after these many years.
Regards,
Gyan
_______________________________________________
ffmpeg-devel mailing list -- ffmpeg-devel@ffmpeg.org
To unsubscribe send an email to ffmpeg-devel-leave@ffmpeg.org
^ permalink raw reply [flat|nested] 25+ messages in thread
* [FFmpeg-devel] trac ticket statistics Was: Re: Re: [RFC] Issue tracker
2025-09-16 4:39 ` Gyan Doshi via ffmpeg-devel
@ 2025-09-23 21:50 ` Michael Niedermayer via ffmpeg-devel
2025-09-24 10:56 ` [FFmpeg-devel] " Gyan Doshi via ffmpeg-devel
2025-09-23 22:33 ` [FFmpeg-devel] " Michael Niedermayer via ffmpeg-devel
1 sibling, 1 reply; 25+ messages in thread
From: Michael Niedermayer via ffmpeg-devel @ 2025-09-23 21:50 UTC (permalink / raw)
To: FFmpeg development discussions and patches; +Cc: Michael Niedermayer
[-- Attachment #1.1: Type: text/plain, Size: 1906 bytes --]
Hi Gyan
On Tue, Sep 16, 2025 at 10:09:14AM +0530, Gyan Doshi via ffmpeg-devel wrote:
>
>
> On 2025-09-16 03:16 am, Michael Niedermayer via ffmpeg-devel wrote:
[...]
> > And what do we gain by avoiding "wholesale migration" ?
>
> Added bloat of thousands of dormant issues marked as open, many of which are
> invalid after these many years.
This is not an accurate description of the situation
If you look at trac, there are
690 open tickets
176 reopened tickets
2307 new tickets
5033 fixed tickets
1751 invalid tickets
280 wont fix tickets
565 duplicate tickets
266 non reproduceable tickets
593 tickets waiting for user input
What you can see here, is there are only 690 open tickets, that is not thousands
there are also 593 Tickets marked as needs_more_input,
these should not end on a read only system
We can also look at the last modified dates on tickets
last modified:
new (re)open
337 104 in 2024-09-23 to 2025-09-23
353 80 in 2023-09-23 to 2024-09-23
328 93 in 2022-09-23 to 2023-09-23
159 59 in 2021-09-23 to 2022-09-23
162 66 in 2020-09-23 to 2021-09-23
141 74 in 2019-09-23 to 2020-09-23
145 36 in 2018-09-23 to 2019-09-23
132 35 in 2017-09-23 to 2018-09-23
139 61 in 2016-09-23 to 2017-09-23
130 75 in 2015-09-23 to 2016-09-23
we have ATM 2307 new tickets, 1018 of these are
from the last 3 years.
I dont think droping all this, achieves anything positive.
You will have the same number of new tickets within 2-3 years, and
loss of past analysis/work on these issues.
thx
--
Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB
Complexity theory is the science of finding the exact solution to an
approximation. Benchmarking OTOH is finding an approximation of the exact
[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 195 bytes --]
[-- Attachment #2: Type: text/plain, Size: 163 bytes --]
_______________________________________________
ffmpeg-devel mailing list -- ffmpeg-devel@ffmpeg.org
To unsubscribe send an email to ffmpeg-devel-leave@ffmpeg.org
^ permalink raw reply [flat|nested] 25+ messages in thread
* [FFmpeg-devel] Re: [RFC] Issue tracker
2025-09-16 4:39 ` Gyan Doshi via ffmpeg-devel
2025-09-23 21:50 ` [FFmpeg-devel] trac ticket statistics Was: " Michael Niedermayer via ffmpeg-devel
@ 2025-09-23 22:33 ` Michael Niedermayer via ffmpeg-devel
1 sibling, 0 replies; 25+ messages in thread
From: Michael Niedermayer via ffmpeg-devel @ 2025-09-23 22:33 UTC (permalink / raw)
To: FFmpeg development discussions and patches; +Cc: Michael Niedermayer
[-- Attachment #1.1: Type: text/plain, Size: 1282 bytes --]
Hi Gyan
On Tue, Sep 16, 2025 at 10:09:14AM +0530, Gyan Doshi via ffmpeg-devel wrote:
>
>
> On 2025-09-16 03:16 am, Michael Niedermayer via ffmpeg-devel wrote:
> > > What can happen is that if an existing open trac issue is taken up for
> > > active resolution, then a new issue at Forgejo can be opened, with a
> > > reference to the trac issue. A comment can be left at trac linking to this
> > > new Forge issue, so all further activity occurs at code.ffmpeg. This would
> > > avoid any wholesale migration or duplication.
> > It can _IF_ someone spends the extra time and work.
> > How many people want to do that ?
> > And how many will do it ?
>
> There's hardly any extra work.
> Open a single issue at forge where the title says, "trac 1234: regression in
> ..."
> Add a link to the trac issue in the body.
> Post a comment at the trac issue: "continued at
> https://code.ffmpeg.org/FFmpeg/FFmpeg/issues/12345"
Can you show me 10 cases where this has been done ?
Or even just one ?
Or even just tell me how one could reliably search for issues that continue a trac ticket ?
thx
[...]
--
Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB
Those who are best at talking, realize last or never when they are wrong.
[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 195 bytes --]
[-- Attachment #2: Type: text/plain, Size: 163 bytes --]
_______________________________________________
ffmpeg-devel mailing list -- ffmpeg-devel@ffmpeg.org
To unsubscribe send an email to ffmpeg-devel-leave@ffmpeg.org
^ permalink raw reply [flat|nested] 25+ messages in thread
* [FFmpeg-devel] Re: trac ticket statistics Was: Re: Re: [RFC] Issue tracker
2025-09-23 21:50 ` [FFmpeg-devel] trac ticket statistics Was: " Michael Niedermayer via ffmpeg-devel
@ 2025-09-24 10:56 ` Gyan Doshi via ffmpeg-devel
2025-09-28 0:44 ` Michael Niedermayer via ffmpeg-devel
0 siblings, 1 reply; 25+ messages in thread
From: Gyan Doshi via ffmpeg-devel @ 2025-09-24 10:56 UTC (permalink / raw)
To: ffmpeg-devel; +Cc: Gyan Doshi
On 2025-09-24 03:20 am, Michael Niedermayer via ffmpeg-devel wrote:
> Hi Gyan
>
> On Tue, Sep 16, 2025 at 10:09:14AM +0530, Gyan Doshi via ffmpeg-devel wrote:
>>
>> On 2025-09-16 03:16 am, Michael Niedermayer via ffmpeg-devel wrote:
> [...]
>
>>> And what do we gain by avoiding "wholesale migration" ?
>> Added bloat of thousands of dormant issues marked as open, many of which are
>> invalid after these many years.
> This is not an accurate description of the situation
>
> If you look at trac, there are
> 690 open tickets
> 176 reopened tickets
> 2307 new tickets
> 5033 fixed tickets
> 1751 invalid tickets
> 280 wont fix tickets
> 565 duplicate tickets
> 266 non reproduceable tickets
> 593 tickets waiting for user input
>
> What you can see here, is there are only 690 open tickets, that is not thousands
The oldest 'new' ticket is from 2013, so that label is misleading. By
open, I meant unresolved tickets so that includes open + reopened + new
+ waiting for user input = 690 + 176 + 2307 + 593 = 3766 tickets.
> there are also 593 Tickets marked as needs_more_input,
> these should not end on a read only system
It should be possible to revive them but on a case-by-case basis. The
oldest 'needs_more_info' ticket #228 has its last activity in Dec 2013.
There's no point in blindly migrating such tickets wholesale. Maybe it's
possible to add a banner on trac so that when someone lands on a ticket,
the banner tells them where they can open a new issue (on F) to report a
brand-new issue or continue a trac ticket. A few of us can have
permissions to update trac so that we can add a link to F if a ticket is
revived. trac can then become read-only for the rest.
Regards,
Gyan
_______________________________________________
ffmpeg-devel mailing list -- ffmpeg-devel@ffmpeg.org
To unsubscribe send an email to ffmpeg-devel-leave@ffmpeg.org
^ permalink raw reply [flat|nested] 25+ messages in thread
* [FFmpeg-devel] Re: trac ticket statistics Was: Re: Re: [RFC] Issue tracker
2025-09-24 10:56 ` [FFmpeg-devel] " Gyan Doshi via ffmpeg-devel
@ 2025-09-28 0:44 ` Michael Niedermayer via ffmpeg-devel
2025-09-28 6:13 ` Gyan Doshi via ffmpeg-devel
0 siblings, 1 reply; 25+ messages in thread
From: Michael Niedermayer via ffmpeg-devel @ 2025-09-28 0:44 UTC (permalink / raw)
To: FFmpeg development discussions and patches; +Cc: Michael Niedermayer
[-- Attachment #1.1: Type: text/plain, Size: 2938 bytes --]
Hi Gyan
On Wed, Sep 24, 2025 at 04:26:53PM +0530, Gyan Doshi via ffmpeg-devel wrote:
>
>
> On 2025-09-24 03:20 am, Michael Niedermayer via ffmpeg-devel wrote:
> > Hi Gyan
> >
> > On Tue, Sep 16, 2025 at 10:09:14AM +0530, Gyan Doshi via ffmpeg-devel wrote:
> > >
> > > On 2025-09-16 03:16 am, Michael Niedermayer via ffmpeg-devel wrote:
> > [...]
> >
> > > > And what do we gain by avoiding "wholesale migration" ?
> > > Added bloat of thousands of dormant issues marked as open, many of which are
> > > invalid after these many years.
> > This is not an accurate description of the situation
> >
> > If you look at trac, there are
> > 690 open tickets
> > 176 reopened tickets
> > 2307 new tickets
> > 5033 fixed tickets
> > 1751 invalid tickets
> > 280 wont fix tickets
> > 565 duplicate tickets
> > 266 non reproduceable tickets
> > 593 tickets waiting for user input
> >
> > What you can see here, is there are only 690 open tickets, that is not thousands
>
> The oldest 'new' ticket is from 2013, so that label is misleading.
They are "new" in the sense that they have not been categorized between
valid+open and invalid+closed
We can categorize them, we can also automatically change their status/resolution
But they should be migrated to the new tracker if we choose a new tracker IMO
> By open,
> I meant unresolved tickets so that includes open + reopened + new + waiting
> for user input = 690 + 176 + 2307 + 593 = 3766 tickets.
> > there are also 593 Tickets marked as needs_more_input,
> > these should not end on a read only system
>
> It should be possible to revive them but on a case-by-case basis.
That is only possible, if we have a volunteer to do that. Iam not sure
who that would be.
> The oldest
> 'needs_more_info' ticket #228 has its last activity in Dec 2013. There's no
> point in blindly migrating such tickets wholesale.
#228 closed
are there other tickets which have incorrect status or resoluton ?
if so, we should fix that.
There is value in going over these old tickets. And cleaning it up
> Maybe it's possible to
> add a banner on trac so that when someone lands on a ticket, the banner
> tells them where they can open a new issue (on F) to report a brand-new
> issue or continue a trac ticket. A few of us can have permissions to update
> trac so that we can add a link to F if a ticket is revived. trac can then
> become read-only for the rest.
Again, we have no volunteer to do any of this.
If we do then she can already now go over new tickets and change them to
open or closed. Similar for other tickets that have the wrong status/resolution
thx
[...]
--
Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB
Good people do not need laws to tell them to act responsibly, while bad
people will find a way around the laws. -- Plato
[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 195 bytes --]
[-- Attachment #2: Type: text/plain, Size: 163 bytes --]
_______________________________________________
ffmpeg-devel mailing list -- ffmpeg-devel@ffmpeg.org
To unsubscribe send an email to ffmpeg-devel-leave@ffmpeg.org
^ permalink raw reply [flat|nested] 25+ messages in thread
* [FFmpeg-devel] Re: trac ticket statistics Was: Re: Re: [RFC] Issue tracker
2025-09-28 0:44 ` Michael Niedermayer via ffmpeg-devel
@ 2025-09-28 6:13 ` Gyan Doshi via ffmpeg-devel
0 siblings, 0 replies; 25+ messages in thread
From: Gyan Doshi via ffmpeg-devel @ 2025-09-28 6:13 UTC (permalink / raw)
To: ffmpeg-devel; +Cc: Gyan Doshi
On 2025-09-28 06:14 am, Michael Niedermayer via ffmpeg-devel wrote:
>>> What you can see here, is there are only 690 open tickets, that is not thousands
>> The oldest 'new' ticket is from 2013, so that label is misleading.
> They are "new" in the sense that they have not been categorized between
> valid+open and invalid+closed
>
>> It should be possible to revive them but on a case-by-case basis.
> That is only possible, if we have a volunteer to do that. Iam not sure
> who that would be.
If there is a volunteer, they can categorize tickets on trac and then we
migrate the open & valid tickets and avoid bloat.
If there is no volunteer, then after migration, they will still remain
dormant on the new tracker and become bloat.
As long as human attention is the bottleneck, I don't see the value in
adding jetsam to the new tracker.
Regards,
Gyan
_______________________________________________
ffmpeg-devel mailing list -- ffmpeg-devel@ffmpeg.org
To unsubscribe send an email to ffmpeg-devel-leave@ffmpeg.org
^ permalink raw reply [flat|nested] 25+ messages in thread
* [FFmpeg-devel] Re: [RFC] Issue tracker
2025-09-14 21:23 [FFmpeg-devel] [RFC] Issue tracker Michael Niedermayer via ffmpeg-devel
2025-09-15 11:09 ` [FFmpeg-devel] " Michael Niedermayer via ffmpeg-devel
@ 2025-09-28 7:54 ` Rémi Denis-Courmont via ffmpeg-devel
2025-09-28 8:51 ` Michael Niedermayer via ffmpeg-devel
2025-09-28 9:18 ` Michael Niedermayer via ffmpeg-devel
1 sibling, 2 replies; 25+ messages in thread
From: Rémi Denis-Courmont via ffmpeg-devel @ 2025-09-28 7:54 UTC (permalink / raw)
To: FFmpeg development discussions and patches; +Cc: Rémi Denis-Courmont
Le maanantaina 15. syyskuuta 2025, 0.23.17 Itä-Euroopan kesäaika Michael
Niedermayer via ffmpeg-devel a écrit :
> Hi everyone
>
> trac supports, custom search queries, customly formated results
>
> People can vote on tickets,
I don't see much value in voting on tickets. It would be useful to know how
many people are able and not able to reproduce a problem, but that's not how
votes are used.
With that said, you can assign thumbs-up, thumbs-down and other emojis in
Forgejo, if you want to vote on something.
> we can have custom ticket states and custom
> workflow on tickets.
We can have custom labels for tickets and MRs.
However before FFmpeg can consider migrating from Trac to Forgejo, we have to
consider the (anti)spam implications. I suppose there is not much spam yet
because Gitlab is vastly more popular, but that's probably only a matter of
time.
If code.ffmpeg.org needs to be locked down with manual approval like
FreeDesktop and VideoLAN's Gitlab instances, then migrating the bug reporting
there may not be such a great idea. Unless we specifically want to restrict bug
reporting to trusted community members.
Otherwise, I don't really see any benefit to Trac. Forgejo would allow us to
link issues and MRs, and presumably also automatically close issues. We just
need to agree whether to migrate existing issues or not (and if we do, find
someone to do the SQL wizardry).
--
德尼-库尔蒙‧雷米
Tapio's place new town, former Finnish Republic of Uusimaa
_______________________________________________
ffmpeg-devel mailing list -- ffmpeg-devel@ffmpeg.org
To unsubscribe send an email to ffmpeg-devel-leave@ffmpeg.org
^ permalink raw reply [flat|nested] 25+ messages in thread
* [FFmpeg-devel] Re: [RFC] Issue tracker
2025-09-28 7:54 ` Rémi Denis-Courmont via ffmpeg-devel
@ 2025-09-28 8:51 ` Michael Niedermayer via ffmpeg-devel
2025-09-28 11:32 ` Rémi Denis-Courmont via ffmpeg-devel
2025-09-28 9:18 ` Michael Niedermayer via ffmpeg-devel
1 sibling, 1 reply; 25+ messages in thread
From: Michael Niedermayer via ffmpeg-devel @ 2025-09-28 8:51 UTC (permalink / raw)
To: FFmpeg development discussions and patches; +Cc: Michael Niedermayer
[-- Attachment #1.1: Type: text/plain, Size: 951 bytes --]
Hi Remi
On Sun, Sep 28, 2025 at 10:54:14AM +0300, Rémi Denis-Courmont via ffmpeg-devel wrote:
> Le maanantaina 15. syyskuuta 2025, 0.23.17 Itä-Euroopan kesäaika Michael
> Niedermayer via ffmpeg-devel a écrit :
[...]
> With that said, you can assign thumbs-up, thumbs-down and other emojis in
> Forgejo, if you want to vote on something.
The problem is, these are not displayed in search and cannot be sorted on.
So while in trac one can simply sort for tickets with most votes, in Forgejo
one cannot search for tickets with most of "some emoji"
So we can vote in a ticket but not accross tickets.
thx
[...]
--
Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB
The day soldiers stop bringing you their problems is the day you have stopped
leading them. They have either lost confidence that you can help or concluded
you do not care. Either case is a failure of leadership. - Colin Powell
[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 195 bytes --]
[-- Attachment #2: Type: text/plain, Size: 163 bytes --]
_______________________________________________
ffmpeg-devel mailing list -- ffmpeg-devel@ffmpeg.org
To unsubscribe send an email to ffmpeg-devel-leave@ffmpeg.org
^ permalink raw reply [flat|nested] 25+ messages in thread
* [FFmpeg-devel] Re: [RFC] Issue tracker
2025-09-28 7:54 ` Rémi Denis-Courmont via ffmpeg-devel
2025-09-28 8:51 ` Michael Niedermayer via ffmpeg-devel
@ 2025-09-28 9:18 ` Michael Niedermayer via ffmpeg-devel
2025-09-28 9:59 ` Jacob Lifshay via ffmpeg-devel
1 sibling, 1 reply; 25+ messages in thread
From: Michael Niedermayer via ffmpeg-devel @ 2025-09-28 9:18 UTC (permalink / raw)
To: FFmpeg development discussions and patches; +Cc: Michael Niedermayer
[-- Attachment #1.1.1: Type: text/plain, Size: 1644 bytes --]
Hi Remi
On Sun, Sep 28, 2025 at 10:54:14AM +0300, Rémi Denis-Courmont via ffmpeg-devel wrote:
> Le maanantaina 15. syyskuuta 2025, 0.23.17 Itä-Euroopan kesäaika Michael
> Niedermayer via ffmpeg-devel a écrit :
[...]
> > we can have custom ticket states and custom
> > workflow on tickets.
>
> We can have custom labels for tickets and MRs.
>
> However before FFmpeg can consider migrating from Trac to Forgejo, we have to
> consider the (anti)spam implications. I suppose there is not much spam yet
> because Gitlab is vastly more popular, but that's probably only a matter of
> time.
>
> If code.ffmpeg.org needs to be locked down with manual approval like
> FreeDesktop and VideoLAN's Gitlab instances, then migrating the bug reporting
> there may not be such a great idea. Unless we specifically want to restrict bug
> reporting to trusted community members.
I agree, anti-spam is a big deal. trac has quite extensive anti spam capabilities.
>
> Otherwise, I don't really see any benefit to Trac. Forgejo would allow us to
> link issues and MRs, and presumably also automatically close issues. We just
> need to agree whether to migrate existing issues or not (and if we do, find
> someone to do the SQL wizardry).
AI generated migration script attacht.
This is untested and is very unlikely to work as is, but parts of it could
be usefull i guess or it could serve as a starting point.
thx
[...]
--
Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB
During times of universal deceit, telling the truth becomes a
revolutionary act. -- George Orwell
[-- Attachment #1.1.2: trac_to_forgejo_migrator.py --]
[-- Type: text/x-python, Size: 24662 bytes --]
#!/usr/bin/env python3
"""
Trac → Forgejo issue migrator (tickets, comments, labels, milestones, attachments-as-links)
✅ Features
- Migrates Trac tickets (title, body, metadata) to Forgejo issues
- Preserves reporter/owner via user mapping
- Converts common Trac wiki markup → Markdown (lightweight, optional)
- Replays comments with original author & timestamp banners
- Recreates labels (component, type, priority, status/resolution) if missing
- Recreates milestones (by name) if missing and assigns to issues
- Closes issues that were closed in Trac and adds a resolution label
- Adds links for attachments (keeps them downloadable from your Trac site)
- Idempotent: keeps a trac_id ↔ forgejo_issue index mapping file
- Dry‑run mode
⚙️ Requirements
- Python 3.8+
- pip install requests pyyaml
🧰 Usage
1) Create a config YAML (example below) as config.yaml
2) Run:
python3 trac_to_forgejo_migrator.py --config config.yaml --dry-run # preview
python3 trac_to_forgejo_migrator.py --config config.yaml # migrate
Example config.yaml
-------------------
forgejo:
base_url: "https://forgejo.example.org" # no trailing slash
owner: "your-org"
repo: "your-repo"
token: "<personal-access-token>" # needs repo:write, admin:repo_hook for labels/milestones
rate_limit_sleep_sec: 0.2 # politeness pause between API calls
trac:
# SQLite DB path of your Trac instance (read-only). For MySQL/PostgreSQL, see notes below.
sqlite_path: "/var/lib/trac/project/db/trac.db"
# Base URL of your Trac site (used to link back to original ticket & attachments)
base_url: "https://trac.example.org"
migrate:
# restrict to a subset (omit or set to [] for all)
include_ticket_ids: []
exclude_ticket_ids: []
# when True, prefix titles with "[Trac #ID]" for easy cross-reference
prefix_trac_id_in_title: true
# If a Forgejo issue already exists for a Trac id (mapping file), it will be skipped
dry_run: false
mapping_files:
# JSON file created/updated by this script to remember Trac→Forgejo mapping
id_map_path: "./trac_forgejo_id_map.json"
users:
# Map Trac usernames → Forgejo usernames (for assignees); reporter shown in body regardless
# Unmapped users are left as plain text.
"michael": "michael-niedermayer"
"alice": "alice"
labels:
# Optional color overrides (6-hex without #). Missing labels get a stable hash color.
colors:
"component/avcodec": "0366d6"
"resolution/fixed": "2ea043"
markdown:
# If you have pandoc installed and want better conversion, set to path like "/usr/bin/pandoc"
pandoc_path: null
# Or use the built-in lightweight converter (recommended default)
use_lightweight_converter: true
notes:
# For MySQL/PostgreSQL backends, you can export SQLite first (or extend the code to use PyMySQL/psycopg2)
# Attachments: this script links to Trac's attachment URLs; to *upload* into Forgejo later, see TODOs in code.
"""
from __future__ import annotations
import argparse
import dataclasses
import datetime as dt
import hashlib
import json
import os
import re
import sqlite3
import subprocess
import sys
import time
from typing import Any, Dict, Iterable, List, Optional, Tuple
import requests
try:
import yaml # type: ignore
except Exception: # pragma: no cover
print("ERROR: pyyaml is required. pip install pyyaml", file=sys.stderr)
sys.exit(2)
ISO = "%Y-%m-%d %H:%M:%S%z"
# ---------------------------- Utilities ----------------------------
def ts_from_trac(microseconds_since_epoch: int) -> dt.datetime:
"""Trac stores timestamps as microseconds since epoch."""
# Trac uses microseconds epoch (int). Interpret as UTC.
sec = microseconds_since_epoch / 1_000_000.0
return dt.datetime.fromtimestamp(sec, tz=dt.timezone.utc)
def banner(author: str, when: dt.datetime) -> str:
return f"_Originally posted by **{author or 'unknown'}** on {when.strftime('%Y-%m-%d %H:%M:%S %Z')}_\n\n"
def stable_color(name: str) -> str:
"""Derive a 6-hex color from a name (no leading '#')."""
h = hashlib.sha1(name.encode("utf-8")).hexdigest()
return h[:6]
# ----------------------- Lightweight Trac→MD -----------------------
TRIPLE_SINGLE = re.compile(r"'''(.*?)'''", re.DOTALL)
DOUBLE_SINGLE = re.compile(r"''(.*?)''", re.DOTALL)
HEADING = re.compile(r"^(=+)[ \t]*(.*?)[ \t]*=+$", re.MULTILINE)
WIKI_LINK = re.compile(r"\[(?:wiki:)?([^\] ]+)(?:\s+([^\]]+))?\]")
HTTP_LINK = re.compile(r"\[(https?://[^\] ]+)(?:\s+([^\]]+))?\]")
BR = re.compile(r"\[\[BR\]\]")
def trac_to_markdown(text: str) -> str:
"""Very small subset of Trac wiki → Markdown conversions.
Keeps unknown markup as-is to avoid data loss.
"""
if not text:
return ""
out = text
# line breaks
out = BR.sub(" \n", out)
# bold/italic
out = TRIPLE_SINGLE.sub(r"**\1**", out)
out = DOUBLE_SINGLE.sub(r"*\1*", out)
# headings: '== Title ==' → '## Title'
def _h(m: re.Match) -> str:
level = len(m.group(1))
level = min(max(level, 1), 6)
return f"{'#' * level} {m.group(2).strip()}"
out = HEADING.sub(_h, out)
# external links [http://url label]
out = HTTP_LINK.sub(lambda m: f"[{m.group(2) or m.group(1)}]({m.group(1)})", out)
# wiki-ish links [wiki:Page Label] or [Page Label] → [Label](Page)
def _wiki(m: re.Match) -> str:
target = m.group(1)
label = m.group(2) or target
# naive: leave as code-ish if it looks like CamelCase wiki page
return f"[{label}]({target})"
out = WIKI_LINK.sub(_wiki, out)
return out
def maybe_pandoc(text: str, pandoc_path: Optional[str]) -> str:
if not text:
return ""
if not pandoc_path:
return text
try:
p = subprocess.run(
[pandoc_path, "-f", "trac", "-t", "gfm"],
input=text.encode("utf-8"),
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
check=True,
)
return p.stdout.decode("utf-8")
except Exception as e:
# fall back silently
return text
# ----------------------------- Trac DB -----------------------------
@dataclasses.dataclass
class TracTicket:
id: int
type: str
time: dt.datetime
changetime: dt.datetime
component: Optional[str]
severity: Optional[str]
priority: Optional[str]
owner: Optional[str]
reporter: Optional[str]
cc: Optional[str]
version: Optional[str]
milestone: Optional[str]
status: str
resolution: Optional[str]
summary: str
description: str
@dataclasses.dataclass
class TracChange:
ticket: int
time: dt.datetime
author: Optional[str]
field: str
oldvalue: Optional[str]
newvalue: Optional[str]
@dataclasses.dataclass
class TracAttachment:
ticket: int
filename: str
author: Optional[str]
time: dt.datetime
description: Optional[str]
size: Optional[int]
class Trac:
def __init__(self, sqlite_path: str):
self.sqlite_path = sqlite_path
self.conn = sqlite3.connect(sqlite_path)
self.conn.row_factory = sqlite3.Row
def fetch_ticket_ids(self) -> List[int]:
cur = self.conn.execute("SELECT id FROM ticket ORDER BY id ASC")
return [row[0] for row in cur.fetchall()]
def fetch_ticket(self, tid: int) -> TracTicket:
row = self.conn.execute(
"SELECT id, type, time, changetime, component, severity, priority, owner, reporter, cc, version, milestone, status, resolution, summary, description FROM ticket WHERE id=?",
(tid,),
).fetchone()
if not row:
raise KeyError(f"Ticket {tid} not found")
return TracTicket(
id=row["id"],
type=row["type"] or "",
time=ts_from_trac(row["time"]),
changetime=ts_from_trac(row["changetime"]),
component=row["component"],
severity=row["severity"],
priority=row["priority"],
owner=row["owner"],
reporter=row["reporter"],
cc=row["cc"],
version=row["version"],
milestone=row["milestone"],
status=row["status"] or "new",
resolution=row["resolution"],
summary=row["summary"] or "",
description=row["description"] or "",
)
def fetch_changes(self, tid: int) -> List[TracChange]:
cur = self.conn.execute(
"SELECT ticket, time, author, field, oldvalue, newvalue FROM ticket_change WHERE ticket=? ORDER BY time ASC, rowid ASC",
(tid,),
)
out: List[TracChange] = []
for r in cur.fetchall():
out.append(
TracChange(
ticket=r["ticket"],
time=ts_from_trac(r["time"]),
author=r["author"],
field=r["field"],
oldvalue=r["oldvalue"],
newvalue=r["newvalue"],
)
)
return out
def fetch_attachments(self, tid: int) -> List[TracAttachment]:
# Trac 'attachment' table schema: type, id, filename, size, time, description, author, ipnr
cur = self.conn.execute(
"SELECT filename, size, time, description, author FROM attachment WHERE type='ticket' AND id=? ORDER BY time ASC",
(str(tid),),
)
out: List[TracAttachment] = []
for r in cur.fetchall():
out.append(
TracAttachment(
ticket=tid,
filename=r["filename"],
author=r["author"],
time=ts_from_trac(r["time"]),
description=r["description"],
size=r["size"],
)
)
return out
# --------------------------- Forgejo Client ---------------------------
class Forgejo:
def __init__(self, base_url: str, owner: str, repo: str, token: str, rate_sleep: float = 0.0):
self.base = base_url.rstrip('/')
self.owner = owner
self.repo = repo
self.session = requests.Session()
self.session.headers.update({
'Authorization': f'token {token}',
'Accept': 'application/json',
})
self.rate_sleep = rate_sleep
# ---- helpers ----
def _url(self, path: str) -> str:
return f"{self.base}/api/v1/repos/{self.owner}/{self.repo}{path}"
def _req(self, method: str, url: str, **kw) -> requests.Response:
r = self.session.request(method, url, timeout=60, **kw)
if self.rate_sleep:
time.sleep(self.rate_sleep)
if r.status_code >= 400:
raise RuntimeError(f"HTTP {r.status_code} for {url}: {r.text[:400]}")
return r
# ---- labels ----
def list_labels(self) -> Dict[str, Dict[str, Any]]:
url = self._url("/labels")
r = self._req('GET', url)
items = r.json()
return {it['name']: it for it in items}
def ensure_label(self, name: str, color: Optional[str] = None, description: str = "") -> int:
existing = self.list_labels()
if name in existing:
return existing[name]['id']
url = self._url("/labels")
payload = {
'name': name,
'color': f"#{(color or stable_color(name)).lstrip('#')}",
'description': description,
}
r = self._req('POST', url, json=payload)
return r.json()['id']
# ---- milestones ----
def list_milestones(self) -> Dict[str, Dict[str, Any]]:
url = self._url("/milestones")
r = self._req('GET', url)
items = r.json()
return {it['title']: it for it in items}
def ensure_milestone(self, title: str) -> Optional[int]:
if not title:
return None
existing = self.list_milestones()
if title in existing:
return existing[title]['id']
url = self._url("/milestones")
r = self._req('POST', url, json={'title': title})
return r.json()['id']
# ---- issues ----
def create_issue(self, title: str, body: str, labels: List[str], assignees: List[str], milestone_id: Optional[int]) -> Dict[str, Any]:
# Ensure labels exist and collect ids
label_ids: List[int] = []
for ln in labels:
if not ln:
continue
lid = self.ensure_label(ln)
label_ids.append(lid)
payload: Dict[str, Any] = {
'title': title,
'body': body,
'assignees': assignees or [],
'labels': label_ids,
}
if milestone_id:
payload['milestone'] = milestone_id
url = self._url('/issues')
r = self._req('POST', url, json=payload)
return r.json()
def close_issue(self, index: int) -> None:
url = self._url(f'/issues/{index}')
self._req('PATCH', url, json={'state': 'closed'})
def comment(self, index: int, body: str) -> Dict[str, Any]:
url = self._url(f'/issues/{index}/comments')
r = self._req('POST', url, json={'body': body})
return r.json()
# ----------------------------- Migration -----------------------------
@dataclasses.dataclass
class Config:
forgejo_base: str
forgejo_owner: str
forgejo_repo: str
forgejo_token: str
rate_sleep: float
trac_sqlite: str
trac_base_url: str
include_ids: List[int]
exclude_ids: List[int]
prefix_trac_id_in_title: bool
id_map_path: str
user_map: Dict[str, str]
label_colors: Dict[str, str]
pandoc_path: Optional[str]
use_light_conv: bool
dry_run: bool
@staticmethod
def from_yaml(d: Dict[str, Any]) -> 'Config':
forgejo = d.get('forgejo', {})
trac = d.get('trac', {})
migrate = d.get('migrate', {})
mapping_files = d.get('mapping_files', {})
users = d.get('users', {})
labels = d.get('labels', {})
markdown = d.get('markdown', {})
return Config(
forgejo_base=forgejo['base_url'],
forgejo_owner=forgejo['owner'],
forgejo_repo=forgejo['repo'],
forgejo_token=forgejo['token'],
rate_sleep=float(forgejo.get('rate_limit_sleep_sec', 0) or 0),
trac_sqlite=trac['sqlite_path'],
trac_base_url=trac['base_url'].rstrip('/'),
include_ids=list(migrate.get('include_ticket_ids') or []),
exclude_ids=list(migrate.get('exclude_ticket_ids') or []),
prefix_trac_id_in_title=bool(migrate.get('prefix_trac_id_in_title', True)),
id_map_path=mapping_files.get('id_map_path', './trac_forgejo_id_map.json'),
user_map={str(k): str(v) for k, v in (users or {}).items()},
label_colors=labels.get('colors', {}),
pandoc_path=markdown.get('pandoc_path'),
use_light_conv=bool(markdown.get('use_lightweight_converter', True)),
dry_run=bool(migrate.get('dry_run', False)),
)
class Migrator:
def __init__(self, cfg: Config):
self.cfg = cfg
self.trac = Trac(cfg.trac_sqlite)
self.forge = Forgejo(cfg.forgejo_base, cfg.forgejo_owner, cfg.forgejo_repo, cfg.forgejo_token, rate_sleep=cfg.rate_sleep)
self.id_map = self._load_id_map(cfg.id_map_path)
# ---------- mapping persistence ----------
def _load_id_map(self, path: str) -> Dict[str, Any]:
if os.path.exists(path):
with open(path, 'r', encoding='utf-8') as f:
return json.load(f)
return {}
def _save_id_map(self) -> None:
tmp = self.cfg.id_map_path + ".tmp"
with open(tmp, 'w', encoding='utf-8') as f:
json.dump(self.id_map, f, indent=2, ensure_ascii=False)
os.replace(tmp, self.cfg.id_map_path)
def _map_set(self, trac_id: int, issue_index: int) -> None:
self.id_map[str(trac_id)] = {'issue_index': issue_index}
self._save_id_map()
def _map_get(self, trac_id: int) -> Optional[int]:
entry = self.id_map.get(str(trac_id))
if entry:
return int(entry['issue_index'])
return None
# ---------- conversion helpers ----------
def _convert_body(self, t: TracTicket) -> str:
header = [
f"**Trac ticket #{t.id}**",
f"Reporter: `{t.reporter or ''}`",
f"Owner: `{t.owner or ''}`",
f"Created: {t.time.strftime('%Y-%m-%d %H:%M:%S %Z')}",
f"Last change: {t.changetime.strftime('%Y-%m-%d %H:%M:%S %Z')}",
f"Status: {t.status}"
+ (f" ({t.resolution})" if t.resolution else ""),
f"Original: {self.cfg.trac_base_url}/ticket/{t.id}",
"",
"---",
"",
]
body_raw = t.description or ""
if self.cfg.pandoc_path:
body_md = maybe_pandoc(body_raw, self.cfg.pandoc_path)
elif self.cfg.use_light_conv:
body_md = trac_to_markdown(body_raw)
else:
body_md = body_raw
return "\n".join(header) + body_md
def _labels_for(self, t: TracTicket) -> List[str]:
labs: List[str] = []
if t.component:
labs.append(f"component/{t.component}")
if t.type:
labs.append(f"type/{t.type}")
if t.priority:
labs.append(f"priority/{t.priority}")
if t.severity:
labs.append(f"severity/{t.severity}")
if t.version:
labs.append(f"version/{t.version}")
for kw in (t.keywords or '').replace(',', ' ').split():
labs.append(f"keyword/{kw}")
# status/resolution as labels (state handled separately)
labs.append(f"status/{t.status}")
if t.resolution:
labs.append(f"resolution/{t.resolution}")
return labs
def _ensure_labels(self, labels: Iterable[str]) -> None:
for ln in labels:
if not ln:
continue
color = self.cfg.label_colors.get(ln)
desc = "Imported from Trac"
if self.cfg.dry_run:
print(f"DRY-RUN: ensure label {ln} ({color or stable_color(ln)})")
else:
self.forge.ensure_label(ln, color=color, description=desc)
def _ensure_milestone(self, t: TracTicket) -> Optional[int]:
if not t.milestone:
return None
if self.cfg.dry_run:
print(f"DRY-RUN: ensure milestone {t.milestone}")
return None
return self.forge.ensure_milestone(t.milestone)
def _assignees(self, t: TracTicket) -> List[str]:
owner = (t.owner or '').strip()
if not owner:
return []
mapped = self.cfg.user_map.get(owner)
return [mapped] if mapped else []
# ---------- comments & attachments ----------
def _emit_comments(self, idx: int, t: TracTicket, changes: List[TracChange]) -> None:
# Only 'comment' field entries produce issue comments; other changes are summarized.
# We'll also emit non-empty status/owner changes to preserve history.
for ch in changes:
if ch.field == 'comment' and (ch.newvalue or '').strip():
text = ch.newvalue or ''
if self.cfg.pandoc_path:
text_md = maybe_pandoc(text, self.cfg.pandoc_path)
elif self.cfg.use_light_conv:
text_md = trac_to_markdown(text)
else:
text_md = text
body = banner(ch.author or 'unknown', ch.time) + text_md
if self.cfg.dry_run:
print(f"DRY-RUN: add comment to #{idx}: {body[:80]!r}...")
else:
self.forge.comment(idx, body)
elif ch.field in {"status", "owner", "milestone", "priority", "component", "resolution"}:
# summarize as small audit trail comment
oldv = ch.oldvalue or ""
newv = ch.newvalue or ""
if oldv == newv:
continue
body = banner(ch.author or 'unknown', ch.time) + f"**Change**: `{ch.field}` → `{newv}` (was `{oldv}`)"
if self.cfg.dry_run:
print(f"DRY-RUN: add audit comment to #{idx}: {body[:80]!r}...")
else:
self.forge.comment(idx, body)
def _emit_attachments(self, idx: int, t: TracTicket, atts: List[TracAttachment]) -> None:
if not atts:
return
for a in atts:
url = f"{self.cfg.trac_base_url}/attachment/ticket/{t.id}/{a.filename}"
meta = f"Attachment: **{a.filename}** ({a.size or '?'} bytes) — {url}"
body = banner(a.author or 'unknown', a.time) + meta
if self.cfg.dry_run:
print(f"DRY-RUN: add attachment note to #{idx}: {body}")
else:
self.forge.comment(idx, body)
# ---------- main unit of work ----------
def migrate_one(self, tid: int) -> None:
if self.cfg.exclude_ids and tid in self.cfg.exclude_ids:
print(f"Skip ticket {tid} (excluded)")
return
mapped = self._map_get(tid)
if mapped:
print(f"Ticket {tid} already migrated as issue #{mapped}")
return
t = self.trac.fetch_ticket(tid)
labels = self._labels_for(t)
self._ensure_labels(labels)
ms_id = self._ensure_milestone(t)
title = t.summary
if self.cfg.prefix_trac_id_in_title:
title = f"[Trac #{t.id}] {title}"
body = self._convert_body(t)
assignees = self._assignees(t)
if self.cfg.dry_run:
print(f"DRY-RUN: would create issue for Trac {tid}: title={title!r}, labels={labels}, assignees={assignees}, milestone={ms_id}")
idx = -1
else:
issue = self.forge.create_issue(title, body, labels, assignees, ms_id)
idx = int(issue['number']) if 'number' in issue else int(issue['index'])
self._map_set(tid, idx)
print(f"Created Forgejo issue #{idx} for Trac {tid}")
# comments & attachments
changes = self.trac.fetch_changes(tid)
atts = self.trac.fetch_attachments(tid)
if self.cfg.dry_run:
print(f"DRY-RUN: would add {sum(1 for c in changes if c.field=='comment' and (c.newvalue or '').strip())} comments and {len(atts)} attachments to issue #{idx}")
else:
self._emit_comments(idx, t, changes)
self._emit_attachments(idx, t, atts)
# close if needed
if t.status.lower() == 'closed':
if self.cfg.dry_run:
print(f"DRY-RUN: would close issue #{idx}")
else:
self.forge.close_issue(idx)
print(f"Closed issue #{idx} (resolution={t.resolution})")
def run(self) -> None:
if self.cfg.include_ids:
ids = self.cfg.include_ids
else:
ids = self.trac.fetch_ticket_ids()
for tid in ids:
try:
self.migrate_one(tid)
except Exception as e:
print(f"ERROR migrating ticket {tid}: {e}", file=sys.stderr)
# ----------------------------- CLI entry -----------------------------
def load_config(path: str) -> Config:
with open(path, 'r', encoding='utf-8') as f:
d = yaml.safe_load(f)
return Config.from_yaml(d)
def main() -> None:
ap = argparse.ArgumentParser(description="Migrate Trac tickets to Forgejo issues")
ap.add_argument('--config', required=True, help='Path to YAML config')
ap.add_argument('--dry-run', action='store_true', help='Force dry-run (overrides config)')
args = ap.parse_args()
cfg = load_config(args.config)
if args.dry_run:
cfg.dry_run = True
mig = Migrator(cfg)
mig.run()
if __name__ == '__main__':
main()
[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 195 bytes --]
[-- Attachment #2: Type: text/plain, Size: 163 bytes --]
_______________________________________________
ffmpeg-devel mailing list -- ffmpeg-devel@ffmpeg.org
To unsubscribe send an email to ffmpeg-devel-leave@ffmpeg.org
^ permalink raw reply [flat|nested] 25+ messages in thread
* [FFmpeg-devel] Re: [RFC] Issue tracker
2025-09-28 9:18 ` Michael Niedermayer via ffmpeg-devel
@ 2025-09-28 9:59 ` Jacob Lifshay via ffmpeg-devel
0 siblings, 0 replies; 25+ messages in thread
From: Jacob Lifshay via ffmpeg-devel @ 2025-09-28 9:59 UTC (permalink / raw)
To: FFmpeg development discussions and patches; +Cc: Jacob Lifshay
On September 28, 2025 2:18:40 AM PDT, Michael Niedermayer via ffmpeg-devel <ffmpeg-devel@ffmpeg.org> wrote:
> On Sun, Sep 28, 2025 at 10:54:14AM +0300, Rémi Denis-Courmont via ffmpeg-devel wrote:
> > Otherwise, I don't really see any benefit to Trac. Forgejo would allow us to
> > link issues and MRs, and presumably also automatically close issues. We just
> > need to agree whether to migrate existing issues or not (and if we do, find
> > someone to do the SQL wizardry).
>
> AI generated migration script attacht.
> This is untested and is very unlikely to work as is, but parts of it could
> be usefull i guess or it could serve as a starting point.
something that's much more likely than AI to work is trac2gitea, I found some people working on their trac to forgejo migration that were talking about using that, maybe collaborate and/or copy them?
https://tahoe-lafs.org/trac/tahoe-lafs/ticket/4161
Jacob
_______________________________________________
ffmpeg-devel mailing list -- ffmpeg-devel@ffmpeg.org
To unsubscribe send an email to ffmpeg-devel-leave@ffmpeg.org
^ permalink raw reply [flat|nested] 25+ messages in thread
* [FFmpeg-devel] Re: [RFC] Issue tracker
2025-09-28 8:51 ` Michael Niedermayer via ffmpeg-devel
@ 2025-09-28 11:32 ` Rémi Denis-Courmont via ffmpeg-devel
0 siblings, 0 replies; 25+ messages in thread
From: Rémi Denis-Courmont via ffmpeg-devel @ 2025-09-28 11:32 UTC (permalink / raw)
To: FFmpeg development discussions and patches; +Cc: Rémi Denis-Courmont
Le sunnuntai 28. syyskuuta 2025, 11.51.13 Itä-Euroopan kesäaika Michael
Niedermayer via ffmpeg-devel a écrit :
> Hi Remi
>
> On Sun, Sep 28, 2025 at 10:54:14AM +0300, Rémi Denis-Courmont via ffmpeg-
devel wrote:
> > Le maanantaina 15. syyskuuta 2025, 0.23.17 Itä-Euroopan kesäaika Michael
>
> > Niedermayer via ffmpeg-devel a écrit :
> [...]
>
> > With that said, you can assign thumbs-up, thumbs-down and other emojis in
> > Forgejo, if you want to vote on something.
>
> The problem is, these are not displayed in search and cannot be sorted on.
I fail to see a "problem". Most if not all developers won't fix bugs based on
popularity votes. And even if you or one other developer does look for votes,
over time the most voted issues would be difficult or questionable feature
requests that are left at the top of the list indefinitely.
Not very helpful.
> So we can vote in a ticket but not accross tickets.
IMO, that's actually much more relevant - it tells us if many people have
opinions one way or the other on the bug / comment / MR.
It's not like anyone except maybe you and a few other devs scour through all
bug reports to vote on them, so relative bug scores are pretty meaningless.
--
ヅニ-クーモン・レミ
Villeneuve de Tapiola, ex-République finlandaise d´Uusimaa
_______________________________________________
ffmpeg-devel mailing list -- ffmpeg-devel@ffmpeg.org
To unsubscribe send an email to ffmpeg-devel-leave@ffmpeg.org
^ permalink raw reply [flat|nested] 25+ messages in thread
end of thread, other threads:[~2025-09-28 11:32 UTC | newest]
Thread overview: 25+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2025-09-14 21:23 [FFmpeg-devel] [RFC] Issue tracker Michael Niedermayer via ffmpeg-devel
2025-09-15 11:09 ` [FFmpeg-devel] " Michael Niedermayer via ffmpeg-devel
2025-09-15 11:37 ` Michael Niedermayer via ffmpeg-devel
2025-09-15 12:06 ` Timo Rothenpieler via ffmpeg-devel
2025-09-15 12:30 ` Michael Niedermayer via ffmpeg-devel
2025-09-15 12:47 ` Timo Rothenpieler via ffmpeg-devel
2025-09-15 12:57 ` Michael Niedermayer via ffmpeg-devel
2025-09-15 13:05 ` Michael Niedermayer via ffmpeg-devel
2025-09-15 17:19 ` Timo Rothenpieler via ffmpeg-devel
2025-09-15 18:26 ` Michael Niedermayer via ffmpeg-devel
2025-09-15 18:35 ` Timo Rothenpieler via ffmpeg-devel
2025-09-15 19:09 ` Gyan Doshi via ffmpeg-devel
2025-09-15 21:46 ` Michael Niedermayer via ffmpeg-devel
2025-09-16 4:39 ` Gyan Doshi via ffmpeg-devel
2025-09-23 21:50 ` [FFmpeg-devel] trac ticket statistics Was: " Michael Niedermayer via ffmpeg-devel
2025-09-24 10:56 ` [FFmpeg-devel] " Gyan Doshi via ffmpeg-devel
2025-09-28 0:44 ` Michael Niedermayer via ffmpeg-devel
2025-09-28 6:13 ` Gyan Doshi via ffmpeg-devel
2025-09-23 22:33 ` [FFmpeg-devel] " Michael Niedermayer via ffmpeg-devel
2025-09-15 22:36 ` Michael Niedermayer via ffmpeg-devel
2025-09-28 7:54 ` Rémi Denis-Courmont via ffmpeg-devel
2025-09-28 8:51 ` Michael Niedermayer via ffmpeg-devel
2025-09-28 11:32 ` Rémi Denis-Courmont via ffmpeg-devel
2025-09-28 9:18 ` Michael Niedermayer via ffmpeg-devel
2025-09-28 9:59 ` Jacob Lifshay via ffmpeg-devel
Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
This inbox may be cloned and mirrored by anyone:
git clone --mirror http://master.gitmailbox.com/ffmpegdev/0 ffmpegdev/git/0.git
# If you have public-inbox 1.1+ installed, you may
# initialize and index your mirror using the following commands:
public-inbox-init -V2 ffmpegdev ffmpegdev/ http://master.gitmailbox.com/ffmpegdev \
ffmpegdev@gitmailbox.com
public-inbox-index ffmpegdev
Example config snippet for mirrors.
AGPL code for this site: git clone https://public-inbox.org/public-inbox.git