abolishing Whonix phabricator issue tracker, moving issue tracking to forums, migrating phabricator.whonix.org to forums.whonix.org

Redirections would be even better!

How many tickets we got approximately? 1000(s)? Can nginx handle such a large number of redirections without performance penalty? Any experience with that? I guess if it is an issue a separate nginx instance could be run?

Just under 1000. 950ish. Cant remember the exact number.

The more I think about it, this is the simplest solution I can come up with

  1. Query the mediawiki API and search for all occurrences of phabricator links.
  2. Use the mediawiki api to programatically change all phabricator links to discourse links to the same issue.
  3. Delete phabricator

It seems logical to me. Way better than fuckin with 1000 nginx redirects.

Although, there may be a clever way to send phabricator links to discourse with a single nginx regex. Which would be the simplest solution.

1 Like

That is also nice. However there’s also links in the forums to phabricator or external links.

That would be super cool.

https://phabricator.whonix.org/T941 for example trying to guess the forums URL:
https://forums.whonix.org/t/lock_down_interpreters_/_compilers_(interpreter_lock)_(compiler_lock)

But might be different due to special characters, / and (. Even if the forums URL could be predicted I don’t see how T941 has any resemblance to the forums URL. Except…

If originally the forum topic is gets title T941.

Discourse will make this complicated:

  • rejects too short titles
  • does not allow all uppercase even T123456678901234567890 was rejected

This could be solved by reconfigure discourse if possible or using compliant topic titles instead.

T941 phabricator migrated ticket

But aren’t these horrible topic titels? Yes. But these can be renamed in a second step. Discourse internally creates reliable redirects. We’d have a double redirect but that is not so bad.

With that such a regex would be possible. Because there is a pattern here:

https://phabricator.whonix.org/T941
https://forums.whonix.org/t/T941_phabricator_migrated_ticket

But not sure it’s worth all of this extra complexity. Create topic + rename might be extensive development effort.

Rename topics sounds annoying. What if we put the ticket ID in the discourse topic

Then we created a rewrite rule to send the ticket id in the url to a discourse search query

phabrictor.whonix.org/t941
https://forums.whonix.org/search?context=topic&context_id=7112&q=t941&skip_context=true

This seems like a simple enough rewrite. It should come up with the right ticket presuming it exists. If something is wrong, still a valid link

Not sure what context id means in the search. Also dont know whether or not we can assume it will never change

1 Like

Another possibility is a simple ruby program that does dynamic redirects.

Have a k:v map,

{
  "T941": " forum link to topic",
  "T325": " another link",
   # etc etc
}

Then just reroute. Pass everything that matches phabricator.* upstream to the ruby app

1 Like

True.

That is okish.

Also really good!

Did you ever redirect nginx to a ruby app?

Yes. Usually just proxypass it to the port ruby is running on

1 Like

@Patrick for the Discourse API key, here is how you can send it to me

Almost ready to migrate

-----BEGIN PGP PUBLIC KEY BLOCK-----

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
=Tx7V
-----END PGP PUBLIC KEY BLOCK-----
1 Like

Done.

Sent by e-mail.

(Had to use gpg command line because Thunderbird refuses to use gpg keys without e-mail address.)

1 Like

Okay I have some housekeeping tasks for you @Patrick

Lets get these three issues out of “review” and choose a better status for them, so they can align with our existing tag structure in Discourse

We can keep them Open, mark them as resolved, or mark them as will not fix. But lets get rid of review, since we are in the process of reviewing all this shit now :slight_smile:

1 Like

Currently there are 208 open issues on phabricator, and 84 open issues on discourse. Will be nice to start mowing through these and culling the backlog. Feeling excited!

1 Like

Done. :slight_smile:

1 Like

Okay everything is mostly working, all data is formatting and everything has been setup on the app side. I tried to migrate a few topics though and am getting a 500 error from Discourse.

I am going to need some help on this one @Patrick as I can’t see logs. All I get is a 500 response with nothing useful. I imagine whatever I am doing will trigger a stack trace.

Let me know when you are available and we can slam this out :pray:

2 Likes

related: Forums for bug reporting and the github issue tracker for discussion?

1 Like

Any command that I can use to manually reproduce this so I can watch the logs as it happens?

1 Like

NoMethodError (undefined method map' for "status_closed_issue_implemented":String) lib/discourse_tagging.rb:475:in filter_allowed_tags’ lib/discourse_tagging.rb:347:in `filter_tags_violating_one_tag

This?

1 Like

This shit is done son :checkered_flag:

2 Likes

Archived the repo so that it is readonly and no confusion about it being maintained any longer

2 Likes

Checklist of things todo for @Patrick

  • Remove admin access for @phabricator-migrator
  • Point all phabricator.whonix.org requests in nginx to https://forums.whonix.org/t/why-this-category-exists/19417
  • Delete phabricator, its database, and remove it from the server

Short and sweet

2 Likes

At some point it might be worth going through all the phabricator tickets tagged status_open_issue_todo and seeing if we want to close any of them, and then deciding which ones we want to actively work

2 Likes