DEV Community

Cover image for I'm concerned with the move that FreeCodeCamp just pulled by leaving Medium
Ben Halpern
Ben Halpern

Posted on

I'm concerned with the move that FreeCodeCamp just pulled by leaving Medium

FreeCodeCamp is a great organization and I presume the best intentions of everyone involved. That said, I am puzzled and concerned by their move off of Medium which was announced yesterday.

What they did

FreeCodeCamp announced that they moved off of Medium, for a lot of the right reasons:

We now have our own open source publishing platform where you can write about anything you want the developer community to know about.
Your audience will be bigger than ever.
No more popups or sign-in prompts. Readers can enjoy your articles without any fuss.
The transition has been a long one, and we’re still fixing quite a few bugs.

I have expressed concern over Medium's business model, product and misaligned incentives in the past. That is a big part of dev.to's existence. But that is a different story.

My bigger concerns right now are that FreeCodeCamp seems to have pulled this off in a way that likely violates the terms of their agreement, explicit or implicit, with Medium and all of the authors of their publication.

What I can tell

All articles once posted to FreeCodeCamp's Medium publication now redirect to articles that look like this:

example of FreeCodeCamp article title

Clicking Visit author's page goes nowhere.

I know for a fact that the author of that post did not consent to having their content moved off of Medium (where they can accrue followers, distribution, and generally partake in their initial agreement with Medium).

In fact, that article was originally posted on dev.to and then cross-posted to Medium and published to the FreeCodeCamp.

On dev.to:

On Medium

This author actually took the time to set the canonical URL on Medium to the original post on dev.to, which was not upheld with the migration by FreeCodeCamp.

Medium Source Code:

Medium source code

FreeCodeCamp Source Code:

FreeCodeCamp Source

As the founders of a service that provides a shared distribution relationship with our authors, we take these things very seriously. This is what our faq says on the subject, to complement the terms of use:

Yes, you own the rights to the content you create and post on dev.to and you have the full authority to post, edit, and remove your content as you see fit.

Medium's terms tell a similar tale:

You own the rights to the content you create and post on Medium

I want to be told that I'm missing something. Hackernoon is currently involved in a long and drawn out exodus from Medium which seems to be taking all of these issues into account. In fact, here's what Medium said in regards to the HackerNoon issue:

Publications on Medium are bound by the Medium Terms of Service, and they have no right to your content that you do not explicitly grant them. That includes exporting, copying, or reposting your content to any website that is not Medium.com

FreeCodeCamp seems to have just pulled the plug and taken everyone's Medium content with them, to be displayed in a different context, wiping out the canonical URLS, while depriving the authors their ability to edit, delete, or manage in any way.

Please let me know in the comments if I really am missing something.

Oldest comments (104)

Collapse
 
laurieontech profile image
Laurie

I have not yet published anything on Medium, but had been interested in the FreeCodeCamp publication as a way to broaden my reach. This is incredibly concerning, especially when it comes to articles that previously had canonical_url's being stripped of them. I don't make my living off content creation, but many do, and that tracking is a big part of their brand and income building.

Collapse
 
ben profile image
Ben Halpern

As a platform that tries to go above and beyond in these regards in terms of everything we can do to have a longstanding, mutually beneficial relationship with all content creators, it is upsetting to see this done carelessly in a way that violates a lot of trust.

Until I'm told otherwise, I'd definitely use the term "careless" rather than suspect malice from these folks. Still very frustrating.

Collapse
 
lkopacz profile image
Lindsey Kopacz

I don't think you're missing anything.

Collapse
 
ben profile image
Ben Halpern

My initial reaction was "oh, this is wild but I assume they had authors opt in to this".

Collapse
 
lkopacz profile image
Lindsey Kopacz

Yeah, the wiping out the canonical URLs is particularly unethical IMO. Even if this was a "mistake," Migration QA exists for a reason.

Plus, they are going to have some fun dealing with the Medium legal team.

Collapse
 
thefern profile image
Fernando B 🚀

Medium app has been uninstalled on my phone for a while. :) I can't remember what was the tipping point but for me to uninstall a reading app it must have been something really annoying.

Collapse
 
darkflib profile image
Mike Preston

For me it was the limited reading ability. 3 per month sucks when you are already a logged in user.

At least on the web you can wipe their cookies and continue to the content.

I wouldn't mind so much but they force you into their whole subscribe funnel, which when on flakey networks often breaks.

Collapse
 
oscherler profile image
Olivier “Ölbaum” Scherler

My concern is that if you now have three copies of the article on three different platforms, it dilutes the comments and reactions even more, since the new platform, like Medium and dev.to, will also have a comment system.

Collapse
 
gsto profile image
Glenn Stovall

The conversation is not a zero-sum game. The more likely outcome is that you are getting more engagement with what you write because overall more people will read it.

Collapse
 
missamarakay profile image
Amara Graham

Gives me bad feels.... I don't think you missed anything unless they are working on bugs related to authors...

Collapse
 
laurieontech profile image
Laurie

I'm not sure that helps? Even if it links back to Medium it doesn't give that attribution to the original source in the metadata. And it's still migrating them away from the terms originally agreed to.

Collapse
 
ben profile image
Ben Halpern

Ah yes, I do see that linkback attribution. That is a good thing.

Again, I have to think they tried to do this the right way, but at some point made bad choices. It's shocking they weren't at least more transparent about this ahead of time.

Collapse
 
tedstark profile image
Ted Stark

Well, this explains my confusion yesterday when attempting to bookmark some FCC content on Medium and being unable to do so. And the new FCC interface seemingly has no way of saving or bookmarking content through my FCC account.

Collapse
 
mo_mack profile image
Maureen McElaney 🐝

I'm surprised they were able to edit the canonical URLs. To my knowledge (as a publication owner) there is no way to change canonical URLs without contacting medium support.

Collapse
 
ben profile image
Ben Halpern

To be clear, the canonical url on Medium has stayed the same, but the canonical URL on their own site does follow back to the original source the way it did originally on Medium.

Collapse
 
penalosa profile image
Samuel

To clarify, did you mean "does not follow"?

Collapse
 
sm0ke profile image
Sm0ke

Sounds good ..

Collapse
 
highcenburg profile image
Vicente G. Reyes

This is an opportunity to persuade Quincy to move/cross-post their articles to DEV😈😅

Collapse
 
amberwilkie profile image
Amber Wilkie

Wow! I have posted tons of articles to their publication and had no idea they'd done this.

Collapse
 
ossia profile image
Quincy Larson

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.

Collapse
 
laurieontech profile image
Laurie

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?

Collapse
 
ossia profile image
Quincy Larson

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

Thread Thread
 
laurieontech profile image
Laurie

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.

Thread Thread
 
ossia profile image
Quincy Larson

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

Thread Thread
 
laurieontech profile image
Laurie

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.

Thread Thread
 
lkopacz profile image
Lindsey Kopacz

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

Thread Thread
 
joshcheek profile image
Josh Cheek

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)'
Enter fullscreen mode Exit fullscreen mode

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

Collapse
 
brandonskerritt profile image
Autumn
Thread Thread
 
ben profile image
Ben Halpern

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.

Thread Thread
 
napoleon039 profile image
Nihar Raote

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

Thread Thread
 
joshcheek profile image
Josh Cheek

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 😝

Collapse
 
ben profile image
Ben Halpern

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.

Collapse
 
maxkatz profile image
Max Katz

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.

Collapse
 
maxwell_dev profile image
Max Antonucci

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.

Thread Thread
 
maxkatz profile image
Max Katz

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.

Thread Thread
 
maxwell_dev profile image
Max Antonucci

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.

Thread Thread
 
maxkatz profile image
Max Katz

Agree 🙌

Collapse
 
amponce profile image
Aaron Ponce

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

Collapse
 
drewroberts profile image
Drew Roberts

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.

Collapse
 
vinceumo profile image
Vincent Humeau

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.

Collapse
 
strikingloo profile image
Luciano Strika

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

Collapse
 
layzee profile image
Lars Gyrup Brink Nielsen

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! ☹

Collapse
 
andres profile image
Andrés Pérez

I got tired of many changes medium suffered in the past, but thankfully Dan Abramov twetted about dev.to in December of 2017 and here I am, enjoying many articles published by amazing writers.

Long live dev.to :D

Collapse
 
ben profile image
Ben Halpern

For some additional context since I posted this, here's Quincy's reply on Twitter and my follow up:

This is in addition to the comments in this thread and probably other tweets by now.

I really want to continue to give the benefit of the doubt, but I'm becoming more concerned, not less.

Collapse
 
mortoray profile image
edA‑qa mort‑ora‑y

I'm a bit concerned about the loss of canonical URLs. This can actually punish the sites that host the duplicate content. Search engines may not understand where the home actually is.

Collapse
 
aspittel profile image
Ali Spittel

Yeah, some of my posts that got moved are the #1 for some keywords, and I'm pretty nervous about it to be totally honest

Collapse
 
aspittel profile image
Ali Spittel • Edited

So, before I worked for DEV, I used to crosspost to both DEV and Medium from my own blog. That was my whole strategy, post in three places with different audiences, and it worked really well for me. But, that canonical_url was really important so that the SEO went to my newly growing blog which I had more control over.

Google also will sometimes punish duplicate content if it doesn't have the canonical_url because it thinks its spam or plagiarism. Several of my crossposted FreeCodeCamp posts were the #1 ranked articles for some keywords.

I think people who read my content know how much work I put into it, each one takes 8-10 hours to write (usually in a restaurant on Sundays), and I've never monetized my content.

When I saw that my writing was on this new site but with my name in a difficult to find location and without the canonical url pointing to my site or DEV, I was really disappointed. In the grand scheme of things, it's not hugely important or impactful on my career, but I really think that platforms need to put their content creators first. They can't be an afterthought or someone you ask forgiveness from instead of permission.

I didn't know this new site was going live, or the format of it, or that it may take away from the searches to my original content.

I searched through my inboxes over and over again to make sure I wasn't missing an email asking me to opt into moving to the new site, but I didn't find anything. And, it sounds like the same is true for other authors from speaking to them.

I also went through this when Hacker Noon moved off of Medium, but that one was super different -- they asked my permission before moving my content.

I know I'm in a lucky place because my readership is through social media, my audience on here, and then SEO comes in third. But I know for a lot of up and coming content creators, SEO is paramount and this really affects their ability to get eyes on their blogs.

If you all are in the position where creators are trusting you to keep their content safe, please value that. It's a lot of unpaid work to not get proper attribution for.

You can read more about the SEO implications here.

Edit: Here's a fun graph of my views going from~100 a day to zero overnight.

Collapse
 
devdrake0 profile image
Si

Hi Ali,

This is slightly off-topic, so apologies in advance.

You described in your comment above that you USED to create your content on your blog, then cross-post to Medium and Dev.to.

We (CodeTips) are doing something very similar - we're creating the content on codetips.co.uk, and then cross-posting to Dev.

We've currently only cross-posted one article to Medium, mainly because Dev is a better platform for us, but I'm interested why you stopped (assuming you did) cross-posting to Medium? Was it only because you now work for Dev?

Did you reach that many more people cross-posting on Medium as well?

Basically, I'm wondering if it's worth our time to cross-post everything to Medium as well...

Collapse
 
abraham profile image
Abraham Williams

I wrote A Month of Flutter and cross-posted to DEV and Medium. I had a fair amount of pageviews and engagement on DEV but much less so on Medium. That combined with all the extra work tweaking Medium posts make it so I wouldn't post to Medium anymore. Medium makes it so you can only set canonical_url if you import via a URL, the imported content always required updating tags, descriptions, code formatting or something else.

Thread Thread
 
devdrake0 profile image
Si

That's exactly the experience I had with the one post I cross-posted to medium and Dev.

I think I got something like 5 views on Medium and well over 300 on Dev. I did no extra promotion on one over the other either.

I've also managed to get 127 followers on dev in a week. It took me over a year to get 70 on medium.

Dev are clearly doing something right, I just wasnt sure if it was worth crossing to Medium for SEO benefits.

By the sounds of it, you dont think so?

Thread Thread
 
abraham profile image
Abraham Williams

I didn't look into SEO benefits. I wouldn't expect that Medium SEO rating to transfer through a canonical_link reference though.

Thread Thread
 
devdrake0 profile image
Si

Ah ok fair enough! Thanks.

Collapse
 
jamiekaren profile image
Jamie Ferrugiaro

Wow. This is mind-blowing.

Collapse
 
v6 profile image
🦄N B🛡

// , Blogging is a pain in the ass, and often the reward isn't even attention.

That you seem to have gotten even a modicum of attention as a reward, and they take it away from you, it's like robbing a nun.

Collapse
 
gypsydave5 profile image
David Wickes

Didn't really realize what the canonical_url attribute was for until I read this... so I guess that's a silver lining for me.

Collapse
 
drewroberts profile image
Drew Roberts

SEO makes the world go round.

Collapse
 
gypsydave5 profile image
David Wickes

Or is killing the web

Collapse
 
_justirma profile image
Irma Mesa

SEO is insane, there's so much too it. canonical_urls is definitely one I need to start using.

Collapse
 
gypsydave5 profile image
David Wickes • Edited

SEO is insane - it's not optimization any longer. It's compliance. And compliance with the world's largest ad company at that.

Thread Thread
 
ben profile image
Ben Halpern

I knoooowwwwww. Google is trying to make the web their platform. I don't think it's cut and dry, but it's a real thing going on.

We play the open source game, but I totally recognize where you're coming from here and wholeheartedly agree. It's a big part of why we haven't adopted AMP, which is just about the boldest move Google has made in terms of trying to swallow the web.

Google employs a lot of great people and have done great things, but we should seek to divert power from them where possible.

Thread Thread
 
vuild profile image
Vuild

Large sites silo away from competitors. They don't run their embeds/tech etc because then all your data & all your UI tips will go through their systems. 👀

They would never look at it or use it. Ever. Not their style at all.

en.wikipedia.org/wiki/Canary_trap

Trust your instincts or study tech history or just wait a bit.

Thread Thread
 
karolyi profile image
László Károlyi

Google is really becoming evil.

Just recently, they disclosed that they're gonna disable adblocking for the masses in chrome, except for 'business customers':
theregister.co.uk/2019/05/29/googl...

It's time to change from chrome, or to fork blink as a community effort. It's the best web rendering engine imo, but them having this much power has to be counteracted, and I seriously hope that according to the rules of free market, this power will be soon seized.

Thread Thread
 
vuild profile image
Vuild
Thread Thread
 
v6 profile image
🦄N B🛡

// , Ben and Vuild, that's correct. For the amount that they're raking in, they've ended up way less corrupt than I'd expected. It's going to get even worse with the move away from perimeter security towards identification security consolidated in the hands of a few massive "trusted" platforms. dev.to's already screwing up that one.

And it chaps my ass that I have to qualify the word "standards" with the word "open." When did the oxymoron of "Proprietary Standards" become a thing technically literate people say?

Take the power back.

Some comments may only be visible to logged-in visitors. Sign in to view all comments.