re: I'm concerned with the move that FreeCodeCamp just pulled by leaving Medium VIEW POST

re: Hi Ben, thanks for sharing your thoughts. We had to move off of Medium for reasons already laid out by Dan Abramov and others. freeCodeCamp News ...

Was there an issue with migrating the posts with the original canonical_url? It's nice for authors to have the chance to make changes, but it seems as though it requires an action from them to set something back to the way they published it originally?


Medium didn't let authors set their canonical URL. Ghost (the open source blogging tool we use) does.

That's not correct. If you import a post using Medium's tool it is assigned a canonical_url. (You can't set it directly, only through import). Many of the posts that ended up as part of the FreeCodeCamp publication were created in that manner.

Can you point to some such articles? I can check their canonical links.

There are screenshots in the post that we're commenting on that show examples of this happening with Ali's post. The original canonical_url on medium points back to her dev.to post. The new site points back to the medium post, a different url.

I would check the one Ben put in this blog post.

Looks like you might be able to get it via the API: github.com/Medium/medium-api-docs#...

Eg they say a post object has a canonicalUrl, attribute. I can't tell from reading the docs, whether you can GET them via the API. All the examples are creating Medium posts via POST requests, and none are showing existing posts via GET requests.

But you presumably found some way to get it, so if you're getting it through an API endpoint, then check it for the canonicalUrl attribute. And if you're getting it by scraping it, then check for the link tag, eg this prints the expected value:

curl -s https://medium.com/free-code-camp/the-most-important-non-programming-skills-for-programmers-d39fadc1a0fa \
 | ruby -ne '~/<link\s+rel="can.*?"([^"]*)">/ && puts($1)'

(in reality, I'd use the CSS selector link[rel="canonical"], but I wanted an example that didn't require installing fancy tooling)


I can't reply to Quincy, but to "check canonical links" here you go:

The dev.to model of hybrid branched conversations which turn into flat chronological finds another victim 😄

I still believe it is a good system, but perhaps we need some re-thinking.

Maybe use threaded conversations as Twitter does? Could also color conversations in the same thread, similar to how we have colorized brackets in VSCode 😄

I swear Twitter changed something about that recently (like within the last 6 months). I'm having such a difficult time following conversations on Twitter now, where I never used to.

I generally like vBulletin's model, personally. It's been about a decade, but IIRC, replying to a post wasn't particularly relevant, it would just prepopulate your response with the quoted post, and the metadata of the quote contained the link to what you were replying to. So you could use that to focus in on which portion you were replying to, and you could use it to reply to multiple posts that happened before you. (NOTE: it's also possible we had modded ours, this was before I coded)

🤔 Maybe this is what Slack needs to do, too. That model is much friendlier to time series data like Slack posts. Their current threading model is fundamentally incongruent with their chat model. Eg do you put the reply as the most recent message, or under the parent message its replying to, or in both places? (note the "also send to #channel" option) If you put it under its parent, then now people can't look at the last several messages to see what's new, how will they know about this other new thing earlier in history? (hence "Threads" in the sidebar) Maybe move the whole thread to the front of the list? Then the root message is anachronistic, or maybe put the whole thread in 2 places? Then why the thread over the reply? (they don't do this, but it would be b/c the thread is only temporally at the front, logically the thing you want to see is what it's replying to, not some irrelevant other recent message) How do I make a thread inside a thread? (you can't) What if one message is sufficient to address 3 separate comments from earlier in the thread? etc...

Aaaaand Imma just submit this now, b/c I could totally ramble on like this all night 😝

Code of Conduct Report abuse