1

I’m elo, Stack Exchange’s Director of Reliability Engineering. I’ve been employed at Stack Exchange for just over three years - but this is my first time posting here on Meta!

On December 10th, our robots.txt file will change. This change is part of our efforts to prevent unauthorized automated access to the network.

Currently, our robots.txt file is used to direct search engine crawlers to parts of the site that should or should not be indexed. It is also currently used to disallow specific crawlers that we find to misuse the content of the network in some way. We are switching to a model where we allow only those crawlers that are trusted to use the content on the network properly.

Implementation details

Currently, if you visit our robots.txt file, you will see a long file detailing which parts of the site should and should not be indexed, as well as which crawlers are expressly prohibited from crawling the site.

After this change, any trusted crawler will continue to see the old copy of robots.txt. Any unauthorized crawler will see the following copy instead:

User-agent: *
Disallow: /

To determine which crawlers are trusted and which are not, we are relying on CloudFlare’s list of verified bots. If you are running a crawler and want access to crawling Stack Exchange’s servers, we strongly recommend you follow CloudFlare’s process for adding bots to their list of verified bots.

Why are we making this change?

Beginning with the release of GPT-3 in November 2022, we noticed a significant amount of bulk content scraping activity taking place across the network. Over the last two years, the rate and volume of content scraping activity has ramped up dramatically; over the last year, external scraping grew by one million requests per day.

In the last year, Stack has seen numerous data points that suggest LLM providers have escalated their methods for procuring community content for commercial use.

When LLM providers, or other data sourcing companies, scrape content from Stack Exchange, they often train their models on Stack Exchange content without returning any portion of their benefits to the communities that provided the knowledge. Typically, they do not use that content in a way that enables attribution, either.

As a result of these misuses of content hosted on Stack Exchange, we laid out our vision regarding the changing state of the internet, and how it informs the way we operate.

A key component of our plan necessitates taking protective measures to remove access to Stack Exchange data from LLM providers that are misusing it to train foundation models without attribution. Changing our robots.txt file is the next logical step to express our belief that unknown entities should not be scraping the site.

Some reassurances: what this change is not

We recognize that this change may look very similar to a series of farther-reaching changes certain other services around the Internet have recently made. For that reason, our goal in this section is to explicitly reassure you about four sensitive topics.

First, this change does not represent an attempt to sell search indexing access to third parties. Stack Exchange’s mission is to provide open access to the repository of human knowledge stored here, and we do not plan to restrict access to users. It is our firm belief that restricting who can search for content on the network would not benefit either the users of the network or the company. The primary way users across the Internet access Stack Exchange is via search engines, so it stands to reason that inhibiting search engine functionality would not be beneficial.

Second, based on our analytics, only a very small proportion of users can expect to see any impact to their search results. For a user to be affected by this change, that user would have to use a search engine that builds their own search engine index (rather than relying on an extant well-recognized index), and that search engine company’s crawler must be listed on CloudFlare’s list of trusted bots. We will, however, be monitoring the metrics we capture about rate-limits and blocks to ensure no outsize change is detected.

Third, this change is not being made to aid in sales at the company. It is instead firmly rooted in our belief that modern web crawling and scraping require transparency and accountability, particularly in light of the misuse of content for training generative AI foundation models.

Finally, this change will not make it more challenging for users to export or analyze Stack Exchange data in bulk. Neither personal data export nor via per-site data dumps will be affected, nor will there be any impact to community-driven tools as a result of this change.

Further questions

We understand that this change is going to raise questions. We encourage you to leave any questions you have as answers below. We respectfully ask that you limit your questions to one per answer in order to facilitate smooth conversation.

6
  • 30
    This is going to strongly and negatively impact small search engines running on independent indices (like Kagi and apparently Brave) for no real benefit. Malicious bots aren't going to care about what robots.txt says. There's no "my plan has been foiled, their robots.txt disallows my evil content grabber!" moment that'll ever happen as a result of this change - only disproportionate negative consequences for any small entities, or large ones that CF just doesn't list for whatever reason. Commented Dec 3 at 16:25
  • 13
    Finally, even if you did somehow manage to block all the alleged LLM scrapers that I strongly doubt exist at the scale you pretend they do, the data dumps are still being uploaded to archive.org, rendering the point moot for anything aside applications that need data that's as new as possible. Based on OpenAI's training times (some models being in the range of almost a couple of years), most of the large-scale LLM training use-cases probably don't need a scraper anyway Commented Dec 3 at 16:32
  • 11
    As with everything else you lot have done to "protect the community from LLMs", this has no benefits and multiple downsides for end-users, as well as being a net negative for small search engines that try to compete with Google by running their own indices. Commented Dec 3 at 16:34
  • 9
    Please add the featured tag, so that this announcement gets cross network exposure. Commented Dec 3 at 19:14
  • 5
    @Zoe-Savethedatadump i.e. a typical "asshole filter" (archive link). This post is very well-written though. Welcome, elo. Commented Dec 4 at 6:40
  • 2
    @AndrasDeak--СлаваУкраїні - nice to see someone else remember that concept. It is the foundation of basically any modern DRM system: hinder paying customers and doing nothing against evildoers. Works beautifully every time. NOT. Commented Dec 4 at 8:45

2 Answers 2

47

The robots.txt file is really just a request to crawlers pointing them where to crawl.

Quoting this answer from Software Engineering:

The Robot Exclusion Standard is purely advisory, it's completely up to you if you follow it or not, and if you aren't doing something nasty chances are that nothing will happen if you choose to ignore it.

Reputable crawlers do follow the instructions in robots.txt, because they are reputable. Disreputable crawlers will simply ignore it.

It sounds like the Company's goal is to stop disreputable scrapers, which are already abusing the content by failing to follow license terms. However, I would expect disreputable scrapers that already ignore license terms to simply ignore the instructions in robots.txt.

I know from my experience working for you in Reliability Engineering that problematic scrapers are traditionally python scripts, and not full-featured bots. This adds to my expectation that the problematic scrapers are already, or will respond with ignoring the robots.txt.

In the spirit of transparency & education of the community, can the Company share details on the research into what portion of crawler traffic they expect to deflect with this change to robots.txt?

11
  • 3
    @TylerH I would love for Stack to have made a data-driven decision, and drop some additional info on why this is the right solution for the problem. Unfortunately, they've described a problem, and propose a solution that doesn't seem to fix the problem by my estimate... I wanted to give them a chance to fill in that blank, before everyone else filled it in for them.
    – AMtwo
    Commented Dec 4 at 4:44
  • Just wondering. As an ex-employee, did you by chance notice any correlation between the "let's kill everyone else" and the "these are now our partners and best friends" campaigns in the past? Despite the current employees best attempt to tell me these are just coincidental and unrelated, I can't help but think the opposite. Commented Dec 4 at 10:43
  • @TylerH sure, I meant it as in "why is the company making the change in your opinion"? Commented Dec 4 at 11:45
  • Given responses on the Thomas's post from staff, It looks like the Community Team is continuing to refuse to answer any questions I ask on Meta, regardless of how well-intentioned my questions are.
    – AMtwo
    Commented Dec 4 at 15:05
  • 4
    It is not just yours questions @AMtwo. Anything that doesn't work for the company current campaign gets ignored or even called out as rude/not nice. We should NOT see a mod that have to start a post with "Since SE decided to respond to everyone except me on the internal announcement". Commented Dec 5 at 9:01
  • 1
    @ꓢPArcheon, Yeah, I'm just really disappointed that I can't think of a single question I have asked since being laid off that the company has responded to. It feel like an angsty teen relationship where they dumped me & blocked my number, even though I thought the breakup was amicable.
    – AMtwo
    Commented Dec 5 at 15:41
  • 1
    There are many bots now that use different techniques to try to mask their crawling behavior. With the recent rate limiting changes, we're greatly reducing their ability to scrape the site at scale. This change aims to both "put crawlers on notice" while also giving us another tool to help detect unauthorized crawling of the site.
    – Josh Zhang StaffMod
    Commented Dec 9 at 16:21
  • 2
    @JoshZhang I know what the goal is, but I'm really keen to hear why THIS CHANGE is expected to accomplish that given that disreputable home-grown python bots are unlikely to observe the robots.txt instructions anyway. In your other comments you said 25% of Stack traffic comes from bots -- but how much of that 25% is expected to be impacted? As I point out in my post, I'm not seeing how the solution accomplishes the goal, and I'm keen to have that gap filled in.
    – AMtwo
    Commented Dec 9 at 17:11
  • @JoshZhang how does it help detect "unauthorized crawling"?
    – starball
    Commented Dec 9 at 17:26
  • @starball I'm struggling to think of a way to explain while avoiding technical detail that could reveal what we're doing detection / blocking wise.
    – Josh Zhang StaffMod
    Commented Dec 9 at 18:56
  • 1
    @AMtwo as I said in the other thread, this isn't expected to be a silver bullet that fixes the scraping situation but one of multiple steps being taken to help us identify and block the unwanted scraping. Also to quote a coworker, "Modifying the robots.txt really is akin to putting the 'no solicitation' sign out front, you can't get angry for the salesman ringing the doorbell if you haven't told them not to."
    – Josh Zhang StaffMod
    Commented Dec 9 at 18:58
26

I agree with AMtwo - the use of robots.txt is really only applicable to well-behaved crawlers. It does nothing against bad crawlers or other bad actors scraping and stealing SE content.

I also find the argument about LLM providers to be very weak. In the United States, it's still an open legal question of whether and when training a model is fair use. There is ongoing litigation that could begin to resolve this issue, but I would also expect many appeals and a rather drawn-out process. The Creative Commons (who authored and maintained the licenses used for the SE Network content) maintains a very different stance than the company on the training of LLMs and other AI models (1, 2).

I share the company's concerns regarding the output of AI models, especially when those models reproduce or base their output significantly upon other people's work. There is a need to cite or attribute, depending on the nature of the use. However, this is a different problem than training the model.

Since you are blocking unknown entities, I'm curious as to what the impact on the network truly is. Are these bad actor crawlers placing such a strain on the network - either technically or financially because of the need for scaling - that they must be blocked?

Unless there are technical or financial reasons to block bad actors, I find it disheartening that the company is unilaterally making the decision to block access to our content for training purposes. It's one thing if it's the will of the community, but, to the best of my knowledge, that discussion has never been had with the contributors.

Given the fact that the primary rationale is still an open question and the answer of experts tends to disagree with the company's analysis and the fact that this does little for actual bad actors, I'd like to better understand the investment of time and resources into this over any of the other things that the community is asking for.

26
  • 4
    "The Creative Commons (who authored and maintained the licenses used for the SE Network content) maintains a very different stance than the company on the training of LLMs and other AI models (1, 2)." I'm not sure what you mean by this, can you clarify? Creative Commons seems to believe that training AI models, if done under the permissions of the CC-BY-SA license, must follow the -BY-SA (attribution and ShareAlike) license requirements, which is the same stance we have. (Fair use allowed or not aside, because, as you said, still unclear).
    – Cesar M StaffMod
    Commented Dec 3 at 17:41
  • 2
    If fair use is used, that negates the need to abide by the rest of the license terms. That is, the fair use doctrine overrides the need for share-alike or attribution for the trained model. The output of such a trained model, however, could still infringe, if it too closely reproduces protected works. But then you get into questions of if it is a derivative work (which requires attribution (and, in some cases share-alike) or if it only requires citation. Commented Dec 3 at 18:06
  • 9
    @CesarM, believe CC's perspective is "Whether you are human or an LLM, it is considered fair use to LEARN from the content, but not fair use to COPY a work." Training LLMs with Stack Overflow posts is fair use and A-OK. Quoting Stack Overflow posts requires following the license. (BY-SA in this case: Attribution & Share-alike)
    – AMtwo
    Commented Dec 3 at 18:40
  • 5
    @AMtwo That is my understanding as well. It also follows that if building a full-text search index of copyrighted material is fair use, then training an LLM that doesn't directly reproduce the text in a manner that a human can extract it would also be fair use - you can distribute the trained model without distributing the underlying texts in a way that lets someone use them for something else. Commented Dec 3 at 18:42
  • 3
    Aside from the issues around transparency and attribution, we also want to reduce the volume of undesired requests to our origin servers as much as possible. While it's possible to scale vertically and horizontally in the cloud, we will quickly run into other hard limits.
    – Josh Zhang StaffMod
    Commented Dec 3 at 20:13
  • 8
    @JoshZhang You talk in these vague terms about "reduce the volume of undesired requests" and "the rate and volume of content scraping activity has ramped up dramatically; over the last year, external scraping grew by one million requests per day". What is this in terms of actual numbers? How many requests are made by humans? How many "desired requests" (humans + desired scrapers)? What is the quantified impact of these undesired scrapers on the network? Why do you think that these undesired scrapers will abide by the robots.txt file? Why is this more important than other community requests? Commented Dec 3 at 20:17
  • 10
    @ThomasOwens I'm an SRE so I focus on keeping the app running optimally, feature requests would go to a dev team. I'm giving rationale from my team's point of view. As far as hard numbers, in the last hour there were around 3.88mm requests to Stack Overflow. Around 984k requests were from non-verified bots. Without digging too deep, I'd say the majority of those requests are from scrapers and undesired. As far as respecting robots.txt, it'll be abundantly clear which bots are respecting it and what's not once we make the change, I can't give more details beyond that.
    – Josh Zhang StaffMod
    Commented Dec 3 at 21:11
  • 6
    @JoshZhang Will you let us know how that number changes after the robots.txt change? Commented Dec 3 at 21:14
  • 10
    @BryanKrause I can definitely do that maybe in January once the change has been in place for a bit.
    – Josh Zhang StaffMod
    Commented Dec 3 at 21:15
  • 3
    @CesarM The post mentions "misusing it to train foundation models without attribution" - Creative Commons describes the behavior of training models as Fair Use. Fair Use is an exemption to copyright, so if something is Fair Use it does not require a separate license to permit use of copyrighted work and so any license terms like attribution do not apply. That's the whole point of Fair Use: codifying that there is a public interest in certain uses of otherwise copyrightable material. Commented Dec 3 at 21:16
  • 5
    @JoshZhang 25% of requests come from "non-verified bots". That doesn't seem like a strain on the system. Especially when you consider that some of these are bots that are building smaller search indices, as Zoe pointed out. Instead of just looking at the numbers, I'd look at what bots are being stopped by this change. Are you stopping legit bots that just aren't in CloudFlare's index or actually stopping bad actors? Commented Dec 3 at 21:30
  • 4
    @ThomasOwens there's a very straight forward way for those search engines to get added to Cloudflare's verified bot list. I've stopped many bad actors that have been straining the data center servers' resources this year.
    – Josh Zhang StaffMod
    Commented Dec 3 at 21:34
  • 10
    @JoshZhang Citation? According to Cloudflare, it's a manual process. The policies may change at any time. As a contributor, I don't like how these opaque restrictions managed by a third-party are restricting access to my content for valid uses. As an engineer, I understand the need to manage infrastructure resources. The way it is being done - managed by a third-party with no community discussion or input and under the guise of questionable reasons - is concerning. Commented Dec 3 at 21:45
  • 3
    Also, I disagree that 25% of requests doesn't seem like a strain on the system. Is 25% not a huge percentage to you? As someone formally educated in business management, from an operations and business perspective 25% of traffic being bad or abusive is nearly catastrophic, frankly. As a product owner or business owner I'm sure SE wants to reduce that ASAP. I can imagine their cloud computing costs alone would benefit greatly from 25% less traffic, if they could manage that.
    – TylerH
    Commented Dec 3 at 22:02
  • 5
    @TylerH Given that how a "bad actor" is determined, no, 25% doesn't seem like a huge percentage. I'd expect that a good chunk of that isn't actually a bad actor. But the simple fact that we don't know how these are defined makes it very difficult to talk about. If that 25% is very low in terms of false positives for being a bad actor, then it's a lot. But I doubt that is the case. Commented Dec 3 at 22:11

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .