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


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 is on the Ghost open source platform, and it's quite powerful. I'm meeting with all the writers individually to give them full access to their articles. Among other things, they'll be able to update their canonical URLs and see the full analytics of their articles.

I wrote a bit more about this here: freecodecamp.org/forum/t/279929

We are big fans of the open web, and we're big fans of Dev.to as well. We're hoping freeCodeCamp News can become an additional place where developers can cross-post posts from their own personal blogs.

I encourage everyone to run their own blog and not to become dependent on any one platform for hosting their blog posts - only for publicizing them through cross-posting.


Good morning, I am a concerned writer with some articles on FCC news. How do I update the canonical URLs?


I support whatever you guys decide Quincy, thanks for keeping us in the loop and for continued support of opensource


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 😝


Really disappointed by FreeCodeCamp, I had an appointment booked "to fix" and create an account but no one called me. I tried again to book one and no answer.


I have unsuccessfully been trying to get in touch with you an your team to remove my content from your site. How can I do that? I went through the form for getting back ownership of my article without hearing from you. I'm very unhappy! ☹


Quincy and Ben, thanks for having an open discussion about this. I appreciate what both of you are doing for those of us who are learning to code online. Your platforms are great and I appreciate the thoughtfulness you have towards the developers you encourage to post.


I understand the reason for moving off Medium and I think everything you're doing in that regard is noble, but to ingest everyone's data and republish content without transparency or consent is a real problem.

I'm not a lawyer, but this seems like very shaky ground on which to be standing on while holding on to a massive amount of content.


What Quincy Larson said:

I encourage everyone to run their own blog and not to become dependent on any one platform for >hosting their blog posts - only for publicizing them through cross-posting.

I 100% agree with this. Run your own blog and then syndicate content to any other platforms.


It’s be nice if he said this before making the move and damaging the content of everyone who published part or all of their work on their site. You can’t preach the high ground after forcing everyone down a few levels without telling them. That’s like breaking someone’s leg and telling them if they want to be in good shape they should try running.

Yes, that's true. I guess I meant it as a more general comment - I personally believe it's always a good idea to publish on your own blog and then decide where to syndicate.

That’s fine, but in the context of this article it was a rationalization of FCC treating their content creators so unfairly. Which I don’t think is good as do most people who have written for them.

Code of Conduct Report abuse