AO3 News

Mini-release notes:

Published: 2011-07-25 12:56:54 -0400

Over the weekend, we deployed version of the Archive, which includes a couple of urgent fixes that couldn't wait until the next update. In particular, the issue with password resets (where new passwords said they were expired) has been resolved. If you were having trouble with that, clicking through the password reset once more should clear it up.

We also fixed some issues with the autocomplete: it should now be working in Internet Explorer 7 and, if a new tag is marked canonical by a tag wrangler, it should now be swiftly added to the autocomplete options. In reverse, removing the canonical status from a tag was also affecting similar tags (they wouldn't appear in the autocomplete anymore), this has also been fixed.

There were also a few issues related to the new prompt meme feature, such as a too-persistently cached table of prompts and a few leftover references to gift exchanges, all of which have been fixed. Development on prompt memes is still ongoing, so if you notice anything weird or buggy, feel free to send us feedback.


Release notes for release

Published: 2011-07-11 13:05:30 -0400

Welcome to Release, up from 0.8.6. Cesy, Elz, Enigel, erda, mumble, Pixel, shalott, Sidra, Tel, Laura and velocitygrass contributed code to this release, which was tested by our awesome testing team: Cesy, mumble, Rebecca, Tel, xparrot, Zebra, Zooey. Life has been particularly demanding for members of our team over the last couple of months, so we delayed our planned monthly release. We're proud of how much has been achieved despite the many other things which were demanding our attention!


Prompt memes!

We're really excited about the latest addition to our challenge and collections code - you can now run prompt memes on the AO3! The new feature comes with lots of handy features to make it easier to keep track of prompts you've posted or filled, sort prompts and fills, and manage whether the challenge is open or closed. Read more in our prompt memes tutorials: Setting up a prompt meme challenge and Participating in a prompt meme challenge.

Subscriptions feed - trial version

We've had a great response to our author subscriptions feature, and we're keen to expand it! Our eventual plan is to include subscriptions for all kinds of things, including fandoms, particular tags, and individual works, but we need to roll this out slowly in order to test how much load it puts on the site. The next step is to offer subscriptions via RSS feed: we're trialling this in this release with an Atom feed on the 'F/F' category tag. You can subscribe to the feed using your favourite feed reader (we've also created syndications on Livejournal and Dreamwidth). We picked this tag because it has a regular stream of works posted each week, but not so many we risk breaking the Archive. Do subscribe to the Atom feed at and try it out. Comment to this post if you have feedback!

Enhancements to our importer - imports from and The Twilight Archives

In the wake of the purchase of and The Twilight Archives, we know that some fans with works on those archives are keen to back their work up elsewhere. In order to make this easier, we've added those sites to our custom importer. Simply paste the url of the first chapter of your work from those archives into the import form, and the importer should be able to pull down all the chapters along with your summary and most of your notes as well as some tags, and it will also make a note of your read count. (As always with the importer, we recommend reading over the results before posting, though!)

Note that this upgrade should also work to import multiple-chaptered stories from ALL efiction-based archives, although the story formatting won't be as accurate as from these two specific archives. We'll be working on more improvements to efiction archive importing in the future.

New tag autocomplete

The autocomplete has been retooled to solve several bugs and (we hope) significantly improve performance and response time. The main visual difference you'll notice is that when you are entering information into an autocomplete field (for instance when you're putting in the fandoms on a story you're posting), each tag you enter will show up above the entry field. You can double-click on the tag to edit it, or click on the 'x' to delete (similar to the way it works on Delicious).

Email improvements

We've started work on improving the automated emails sent out by the Archive (for example, for subscriptions). In this release, we've just included better contact information in emails, but we're working on improving our support for text-only emails and spiffing things up generally. If you have thoughts about what you'd like to see us do in this area, comment on this post.

More CSS options!

When we launched our skins feature, we erred on the side of caution, so a lot of valid CSS wasn't allowed through. We've now expanded the options, so you should be able to use most valid CSS.

Squashing the extra pseud bug

Quite a few people were affected by a bug which was preventing them removing pseuds from a work - trying to switch to using a different pseud instead resulted in both pseuds showing up. We've fixed that now! It won't retrospectively fix affected works, so you'll still have to go back and remove the unwanted pseud on those.

Fix for chapter posting problems

We've had a number of reports of problems posting, editing or deleting chapters. We believe that these problems were caused by issues with Javascript - we've now fixed chapter posting so that it will work even if Javascript is disabled (or otherwise disrupted). We hope this will have solved all the chapter posting issues, but if you're still encountering problems, do let us know! (We're still working on deletion without javascript.)

Known Issues

See our Known Issues page.

Release details


  • Prompt memes!

  • Better autocomplete!

  • Trial run for RSS tag subscriptions!

  • Introduced notice banners for non-intrusive and easily-hidden admin messages

  • Added a separate page under your profile options to change your email address

  • Tweaked the My Related Works page to separate translations from remixes, first in a series of planned improvements to the work relationship functionality

  • Added a line about contacting support to the footer of all Archive notifications, e.g. in case you think you've received an email in error, and a Challenge profile link in assignment emails if you'd like to contact a Challenge maintainer

  • Series information now appears in the work blurb

  • Added the option to post-without-previewing when adding and editing chapters

  • Enabled support for more CSS options, such as various CSS3 properties that were previously not allowed in Archive and Work skins

  • Added a "Header color" and an "Accent color" option to the Archive skin wizard (the accent color will affect the background of the Dashboard menu box, the work blurb box on single work pages and the box containing your pseuds on your profile page)

  • Added a link to the RSS feed for admin posts from the News page

  • Added and to the whitelisted domains for video embeds in works and the ability to include an offsite player from Google for audiofics


  • Admin:
    • Fixed drag-and-drop rearranging of items in the Archive FAQ
    • Fixed a bug where admins wouldn't get notified of new comments on blog posts
    • Fixed a bug where admins would get an ugly error page when trying to open the Support and Feedback page

  • Collections and Challenges:
    • Previously, only owners of a challenge could access the signup form when the challenge was closed (e.g. for testing purposes), this has now been extended to moderators
    • There was a bit of borked HTML in some mod-side challenge notifications, this has been fixed
    • Tag links in assignment emails have been changed to link to all works with that tag, not just works in the collection (which will often be empty at signup time)
    • Signup summaries on the My Signups page are now sorted by date, newest at top
    • Improvements to the code for revealing works in a Collection one by one
    • Fixed a backend bug relating to challenge signup notifications
    • Added a help pop-up to the Challenge name field
    • Removed the yuletide2010 controller, which introduced the static browsing feature for busy challenges and has since become obsolete

  • Works:
    • Changes in Livejournal's code temporarily broke importing from LJ, this has been fixed
    • The word count would be off for languages using non-Roman alphabets, we have now taken first steps to displaying correct word counts for all languages (more work will be needed for Chinese, Japanese, and Thai)

    • Trying to post a new chapter would lead to a 404 error when Javascript was disabled (and sometimes when it wasn't), this has been fixed now
    • Fixed a bug that prevented users from deleting or changing the pseud on a work
    • Changed chapter and series drag-and-drop reordering to be done with jQuery, made sure the chapter/work numbers get updated instantaneously
    • Fixed a bug with publication dates in epubs (the download date would get inserted instead)
    • Fixed a display bug that would cause really long stats lines (Published, Completed, Words, Chapters, Comments and so on) to run over the work blurb lines
    • Fixed a timezone issue where the publishing date on a work page would sometimes be different from the date displayed in the work blurb (used in search results, tag pages etc.)
    • Fixed the help pop-up text for posting a new chapter to say that a title isn't required for chapters
    • Rewrote autocomplete code for entering tags, fixed several bugs in the process

  • Bookmarks:
    • The "View most recent bookmarks" button on the Bookmarks page resulted in a list of *all* bookmarks for a work, with slightly broken CSS; this has been fixed on both accounts
    • If you accidentally inserted too many commas in the 'Your Tags' field when bookmarking a work, you'd get a 500 error, this has been fixed

  • Comments:
    • Since the parser adds HTML tags to user input, comments that stayed within the character limit would sometimes still turn out to be too long after submitting - and thus get eaten; now an invalid comment will be returned to the user for possible corrections
    • The bottom 'Read Comments' button when viewing an entire work would direct back to the first chapter when Javascript was turned off, this has now been fixed

  • Fun Errors:
    • Trying to use an already redeemed invitation would give a 500 error, this has been fixed
    • Logging out while on your My Skins page would give a 500 error, this has been fixed
    • Empty search results or empty query parameters in URLs would result in ugly errors, this has been fixed
    • When creating or editing a skin, using certain special characters like [ or ( in the 'Allowed Value Autocomplete' field would sometimes cause a brief error 500, this has been fixed
    • Fixed a problem with 422 errors when trying to create synonymous tags in the Tag Wrangling interface
    • Fix for the password reset functionality (now there's an error message if the new password isn't actually saved)
    • Fixed an issue with Rails that prevented users from browsing the Archive on a Playstation Portable
    • Fixed an issue where the importer would break off if the source contained the special character number 0

  • Misc:
    • Special characters like " would be turned into their escaped versions (" and so on), breaking some more advanced CSS options; this has been partially fixed, although > < are currently still being stripped.
    • Removed a note about performance issues ("As of 18 November 2010...") from the Support and Feedback page
    • Fixed the "last viewed" time display on the reading history page
    • Removed a stray colon on the Advanced Search page
    • Tidied up the help pop-up for the Archive skin wizard
    • When a user changes their email address, a notification is now sent to the old email address registering the change.
    • Added a link to the TOS FAQ from the Archive FAQ
    • Changed wording in the "Hide freeform tags by default" option in the Preferences to "additional tags"
    • Lots of refactoring and bug-fixing work for automated tests


Tutorial: Participating in a Prompt Meme Challenge

Published: 2011-07-11 12:48:00 -0400

Please note: Prompt memes are still at alpha stage and are in active development, so you may run into bugs. We're also still refining the user interface. More improvements coming soon!

So you want to participate in a prompt meme challenge? You may already know the one you want; if not you can check out the list of currently open challenges (linked from the main collections index when you're logged in). If an open challenge is a prompt meme challenge you'll see that in the information listed in the information blurb, and the 'Sign Up' button will be displayed.

Screenshot of the blurb for an open prompt meme challenge, reading 'Testing Prompt Memes (testingpromptmemes) by mumble; Mods: Cesy, Tel; Summary: Signups close at: Fri 08 Jul 2011 03:00AM EDT (08:00AM BST); (Open, Unmoderated, Prompt Meme Challenge). A button at the bottom reads 'Sign Up'.

Signing up and leaving prompts

You must be logged in to sign up. When you select 'Sign Up' (on the index blurb, or from the collection page) you'll be taken to a screen where you can enter a prompt for the challenge:

Screenshot of a form headed 'General Information', with fields for fandom, characters, Image URL.

The exact details of this screen will vary depending on how the challenge has been set up, but you will usually need to enter a fandom and a description of your prompt. In some challenges, you may be allowed or required to enter a URL - for example, a link to an image for an image prompt.

Note: In all the fields except the URL and description fields, you will only be able to choose 'canonical' tags that are already in the AO3 system (the set of available tags may have been limited further by the challenge owner). These will come up in the autocomplete when you start typing.

You can choose to make your prompt 'semi-anonymous'. This means that your prompt will be displayed as 'anonymous'; however, since it will still be linked in the database with your username, we can't guarantee 100% anonymity - in some circumstances, such as a coding bug, it might be accidentally revealed or guessable. (We've put a lot of work into minimising the risk, but we want to be sure that our users are completely informed about their levels of privacy.)

Once you have filled in your prompt, you can add more. When you're done, press submit!

Managing your prompts

Once you have signed up and created some prompts, you can manage your prompts by going to the collection's home page, e.g. and accessing 'Your Prompts' (usually displayed in the left-hand menu). Here you can edit your existing prompts, add another prompt, or delete your signup.

Please note: Selecting 'delete' on this page, will delete your entire signup, including all prompts. If you want to delete just one prompt, go to the list of all Prompts (select 'Prompts' in the left-hand menu), where your prompts will display with a 'Remove' button next to them.

Browsing and claiming prompts

You can browse all the prompts in a challenge by going to the collection's home page, e.g. and accessing 'Prompts' (usually displayed in the left-hand menu). When you see one you like, just select 'Claim'.

You can keep track of all the prompts you've claimed in a particular challenge by going to the collection's home page, e.g. and accessing 'My Claims' (usually displayed in the left-hand menu). Beside each prompt you'll see a button marked 'Post to fulfil' - if you click on this you'll be taken to the 'Post new' form with the details of the prompt filled in.

Filling prompts

Once you've claimed a prompt, you can 'Post to fulfil' the prompt from the main Prompts page. You'll be taken to the 'Post new' form with the details of the prompt filled in. Make sure it has just the right box ticked - we have one bug where it ticks extra random prompts as well, which will be fixed in the next deploy.

If you go directly to the 'Post new' form without clicking 'Post to fulfil', you'll see your claimed prompts under the 'Associations' section. Just tick the one you are filling in order to post the fill to the challenge.

Anonymous prompt fills

If the challenge maintainer has set the challenge to 'anonymous', then when you post your fill to the collection, it will be displayed as by 'Anonymous'. However, please note that at this stage you should consider anon prompt fills to be 'semi-anonymous', and your identity may be revealed under the following circumstances:

  • The challenge maintainer can see your identity
  • An author search will reveal anonymous works which may enable people to guess what you wrote
  • A tag for the fandom you wrote the anon work in will appear on the list of fandoms on your user homepage, which may enable people to guess what you wrote.

We're working on introducing enhanced anonymous features, but in the meantime you should be aware of the above issues: if it would be problematic for your authorship of a work to be revealed, you shouldn't rely on the Archive's anon option.

Happy prompting!


Tutorial: Setting Up A Prompt Meme Challenge

Published: 2011-07-11 12:47:12 -0400

Please note: Prompt memes are still at alpha stage and are in active development, so you may run into bugs. We're also still refining the user interface. More improvements coming soon!

A prompt meme challenge is a collection where participants leave prompts for other writers to use in a fanwork. It can be open or closed, anonymous* or not.

The basics

Getting started

To set up a prompt meme, go to the Archive's main Collections page. You must be signed in to open a new prompt meme challenge. Click on the "New Collection" button.

Required settings

You must pick a name for your new prompt meme. This will be the name the Archive associates with your collection. It is used in urls, so the name can only include letters (Latin characters), underscores and numbers.

You must pick a display title for your new prompt meme. This will be the title that is displayed to your users. This name can include spaces and non-Latin characters.

Optional settings

You may choose to upload an icon for your prompt meme. Icons icons must be 100 by 100 pixels in size. (You can upload larger or smaller images, but be aware they will be resized to 100 by 100.) They can be in jpeg, png or gif format.

If you want this to be one of a set of linked challenges, enter the name of a parent collection (must be a collection you maintain). For example, if you run a kink meme with several different rounds, you would create a collection called 'My Awesome Kink Meme' as the parent collection, and then make that the parent of subcollections 'My Awesome Kink Meme 2011' and 'My Awesome Kink Meme 2012'. All the rounds of your kink meme will then be linked together, and you can reuse the FAQ and profile from the parent collection instead of writing them again for each sub-collection.

Optionally, enter the email address where you would like to receive notifications about your prompt meme. If you don't enter an email here, notifications will be sent to the email associated with your AO3 account.

Optionally, enter the URL for a custom header image if you want one for your collection.

Choosing your settings:

Check the box if you want your new prompt meme collection to be moderated. You probably want to leave it unmoderated so you don't have to approve every new story. Don't worry - you can still delete stories that aren't appropriate for your collection.
You may change your collection's status to moderated or add a new moderator or owner later.

If you close the collection, no new stories may be added to your prompt meme.

If you check the box to make the collection unrevealed, works will be hidden until you reveal them.

If you check the box to make the collection anonymous, authors will be listed as "anonymous," but will be visible to you. (At this time there is no way to make a completely anonymous collection where even the mods can't see the identity of authors.)

To make your collection a prompt meme challenge, you must select "Prompt Meme" from the drop-down box labeled, "If this collection is for a challenge, please choose the type.'

Additional information

Optionally, fill in the text boxes (plain text with limited html) with your desired Introduction, FAQ, and Rules. You have 100000 characters for each. If your challenge has a parent collection, then it will inherit information from that for any of these fields that you leave blank.

Optionally, you may enter a custom message for the emails sent out with Gift Notifications - i.e. the notification users will receive when someone fulfils their prompt. You have 1250 characters. (There is also a box for custom text for Assignment Notifications, but these don't apply for prompt memes.)

Finishing your new prompt meme:

You must click the "Submit" button. If you don't, all your changes will be lost.
Not to worry: you can edit your prompt meme's settings later.

Once you click 'Submit', you will be taken to a second setup page where you can open signups and tweak the settings for your challenge.

Opening and customising your prompt meme challenge

Opening the challenge and setting the schedule

By default, your challenge is set as closed. When you're happy with your settings, tick the box to open signups. If you want to run the challenge for a limited period, you can close the signups again whenever you're ready.

You can enter key times and dates for your challenge - opening and closing times for signups, author reveals if applicable, and the deadline for responses.

Please note: Currently the dates are provided only for information. You will need to manually open and close signup.

Prompt settings

If you want to run an anonymous prompt meme, you can set prompts to be anonymous by default (participants can choose to deanon if they want to).

You can set a minimum of prompts per sign-up, and a maximum number of allowed prompts.

Request settings

In this section, you can set requirements for what prompts must include. By default, all prompts are set to allow one fandom, one character and one relationship, and allow a detailed description, but you can change these settings however you want!

If you'd like to allow or require people to include a url in their prompt (for example, you want to run an art prompts challenge where people link to the prompt images, select that option here.

Tag options

If you want to, you can define what tags people can choose from when making their prompts. These options are mostly useful for gift exchanges (where you want to be sure people are using a defined range of tags for matching purposes) - if you'd like more information on tag options check out the tutorial on setting up a gift exchange.

Signup Instructions

You can enter custom signup instructions to help people participating in your challenge. If you have edited the settings on this page - e.g. to require participants to give at least two characters - make sure you mention it here. You can also give separate instructions for prompt formats, if required.

The boxes 'Label to use for Prompt URL in requests' and 'Label to use for Description in requests' allow you to change those to say what you want people to use those fields for - e.g. linking to an image for an art prompt.

Finishing your prompt meme setup

Whe you're happy with your settings, hit 'Submit' and they will be saved. You can go back and edit at any time.

Congratulations! You have just started a new prompt meme. Enjoy!

NB: A note about anonymous challenges:

In order to track works in a collection, authors can always be seen by the collection's moderator and by the AO3 coders and may be accidentally revealed by a moderator error or software bug. The Archive currently cannot support a totally anonymous prompt meme.


Accessibility, Design and Technology meeting - 9 July 2011

Published: 2011-07-10 17:41:20 -0400

We've been really busy in AD&T working on getting our next deploy ready. Thanks to a huge effort from everyone on the team, we expect to be ready to roll our new code out tomorrow! There are 93 issues in the new deploy! :o

Meeting highlights!

Tag sets

We're currently working on some new tag functionality for challenges, creating more flexibility for users to create sets of tags so they can, for example, create a list of Asian-source fandoms for a challenge. We spent lots of time in this meeting discussing how we can use the functionality provided through tag wrangling, which creates relationships so that, for example, the Archive knows that 'Hermione Granger' belongs to the 'Harry Potter' fandom, while still allowing users to create tag sets which include tags that haven't yet been wrangled by our awesome tag wranglers. We think we have come up with a solution which will combine the best of both worlds; we need to talk to the Tag Wrangling Committee to check out how it will work from their point of view, and then we hope to include this functionality in a mini-deploy coming up soon.

Skins functionality

We've had quite a few requests for the ability to include images in public skins. For security reasons, we can't allow images which are hosted on other sites, but when we begin hosting fanart we may be able to host images for skins. However, this would bring its own legal and content issues, so we have passed the issue over to our Legal and Content Policy teams to discuss.

Browsing enhancements

One of the things that's been high on our to-do list for a long time is improvements to our browsing system. We're aware that our current browsing filters leave quite a bit to be desired - the volume of works on the site has somewhat overwhelmed the design. One of our AD&T co-chairs has recently started work on this problem, and is busy coming up with some new designs for us to try out. Go go Elz!

Next deploy

The next deploy is scheduled for Monday 11 July, 2011. It will include a whole bunch of things including our new prompt memes functionality, new embed options to include embeds from and, fixes for the annoying problem preventing some people from posting multichapter works, and much, much more. We're really proud of how much work has gone into this deploy!

News from our sub-committees

  • Coders have been really busy finishing up the code for the new deploy. They've been working hard on fixing bugs found during testing, and have also been participating in our great new training tutorials. Recent training included awesome sessions on JQuery and CSS by AD&T member Ana!
  • Testers have been working triple time to get everything in our giant deploy tested. Longtime tester XParrot has stepped up to become Testing Co-lead and has been working really hard on the issues for the new release - yeay XParrot! \0/

News from our sister committees

  • Support have been working hard to keep up with the volume of Support requests, and have been giving some feedback on the new Support Board as senior coder Sidra works on it.
  • Tag Wrangling have been wrangling hard, and giving feedback on the new tag sets functionality as it develops.

If there are things you'd like to do or say, please share them in comments, via the AO3 support and feedback form, by volunteering, or in whatever medium you feel comfortable with. Everyone is welcome to this party!

This meeting round-up by Zooey


We've had a busy month in AD&T! There have been several exciting code developments, and because life events for our team have prevented us sticking to our planned monthly deploy schedule, we've built up an impressive 98 issues for our next deploy! This is giving our testers plenty to work on!


Prompt memes

There's been tons of work going on getting our new prompt memes feature ready for primetime. Cesy, who has been coding the feature, has been hard at work polishing it up and fixing bugs. Our trusty team of testers have been trying out the feature on our Test Archive and finding all the little glitches, and our valiant volunteer Seph took on the task of writing a tutorial on the new feature. \0/ If you're curious about the kind of work that goes into creating a feature like this, check out Cesy's post on Coding prompt memes. We're really exciting about launching this feature!

Training and mentoring

We've been working on our training and mentoring procedures to make it easier for volunteers to join in and develop their skills. Cesy has been leading setup sessions for beginners, helping people get to grips with the tools we use and starting them out on a few bugs. We've embarked on a new series of training events focusing on different aspects of coding: Ana kicked off last Saturday with a fantastic introduction to XHTML, CSS and Javascript. We're also considering ways of enabling more one-to-one mentoring for coders.

The great work of our training team is already bearing fruit: new coders Tel, Laura and karen88 have been getting stuck in! We always welcome new volunteers, and the great work of our training team makes now a great time to get involved. If you're wondering how our coders go about their work, check out Enigel's post on the Day in the life of a coder.

Support board!

After lots of work by the Support team brainstorming requirements and putting together a design, senior coder Sidra has begun work on a dedicated AO3 Support board! Currently we use a third-party tool, 16bugs, to manage our Support requests, but it doesn't have the functionality we'd like. The new Support board will be entirely hosted on the AO3 and will enable all users to post responses to bugs - taking some of the pressure off our regular team when it comes to common problems - as well as providing a whole bunch of tools to help us manage the bugs. Now that we have such a big and active userbase, it's difficult for Support to keep up, so we're all REALLY excited about the new functionality.

Translation and internationalisation

Lots of work is going into making the Archive more usable to international users! Rebecca has been working closely with International Outreach and Translators as she continues to develop the functionality for translating the Archive interface - this is one of our core aims for the Archive and we're really pleased to see it finally coming into being. Meantime, new coder Tel has been working on improving the functionality for translated works and bookmarks of translated works on the Archive. Stay tuned for these improvements in the coming months!

Next deploy

The next deploy is scheduled for the weekend of 2 July (all being well). It will include prompt memes, a new autocomplete, the trial version of RSS subscriptions to tags (we're trying it out on the F/F tag to see how much load it places on the site), and lots of bug fixes!

News from our sub-committees

  • Coders have been working hard committing code for the forthcoming GIANT deploy! They've also been running and participating in our new training sessions - everyone is learning a lot!
  • Testers are busy on the epic task of testing out all the new code for the forthcoming deploy. They've been especially busy testing out the new prompt memes feature and giving feedback to improve it - challenges functionality is particularly hard to test because it involves so many different components (setting up a challenge, having people sign up, filling prompts, etc). Prompt memes include some anonymity features which need to be tested especially thoroughly - we want to be sure that anon features behave predictably for users.

News from our Sister committees

  • Support have been working like heroes on keeping up with the steady stream of support requests. They've also been working with AD&T to finalise the plans for the forthcoming new Support Board - everyone is VERY excited about this!
  • The Tag Wrangling committee has been working on the tag-related FAQs for the Archive, with the aim of making it easier for users to use tags and clearer how wranglers work on tags in the background. These changes will be reviewed and updated on the Archive soon. They've also been discussing how to handle original characters and fanon names for unnamed canon characters. If you are interested in wrangling, check out the list of fandoms without a wrangler to see if there's anything you can help with. Unassigned fandoms right now include Merlin RPF, Weiss Kreuz, and Pirates of the Caribbean.

If there are things you'd like to do or say, please share them in comments, via the AO3 support and feedback form, by volunteering, or in whatever medium you feel comfortable with. Everyone is welcome to this party!

This meeting round-up by Zooey


Behind the scenes at the AO3: A day in the life of a coder

Published: 2011-06-15 06:43:27 -0400

As part of our series giving an insight into what goes on behind the scenes at the AO3, coder Enigel has written up a day in the life of an AO3 coder! Enigel has been coding for the AO3 since November 2008. She studied computer science at university and works in the tech industry, but had never worked with Ruby on Rails before volunteering with the AO3. She started out tackling small bugs and has progressed to more challenging tasks - she is now one of the more experienced members of our team and is currently battling with the intricacies of our site Javascript.

I open up my archive coding tools, which are:

  • My webdev - a web-based development environment which hosts all the things needed to run the Archive, including Ruby on Rails, a MySQL database, and the Archive code itself. We used to install all this stuff on our own computers, but as the site has grown that got unmanageable for most people (especially those of us who are on Windows...), so the web-hosted version is much handier! I can see the working site and my changes at my own dedicated URL.
  • A git bash console - a command line tool which lets me upload code changes to our code repository on Github
  • Notepad++ - a text editor specially designed for editing code, which has some nifty features like syntax highlighting and line numbers
  • A Putty SSH console - a command line tool which lets me communicate with the webdev to get new code, run commands, etc
  • The Google code issue tracker - where we keep track of things which need to be worked on.

I sort the issues by priority - argh, a Critical one. I've tried to investigate it before, going from file to file to track what is defined where, and arrived to a thicket of code, deep in the forest where the Wrangulator meets the works model and controller (aka Mordor). No, today is not the day either.

Sometimes, I would just pick another issue, by priority, or by relevant interest - I'm only human after all. But today I choose a different path. Today, I will vanquish ALL the errors! We have an error notifier, which collects info about all those "Something went wrong" black holes where your pages sometimes get to, and sends emails to the Coders list. We have quite a collection. I load the page and go on chasing after those that occur most frequently, in the hundreds.

I spot a weird one, that only seems to happen for a particular browser: Sony PlayStation Portable. What's going on there? First I want to make an automated test. This is good practice in general, and vital in particular, because I don't own a PSP.

OK, how on Earth do I test this? It's pretty easy to simulate visiting a page - not so easy to simulate the peculiarity of a certain browser. Google, Stackoverflow, Google, forums, email lists. Aha! I find someone else's solution for testing sending a certain header in the browser request. I copy that in my test, and there it is! The red dots of a failed test! \o/ (Yes, this is a good thing. *g* It means I can reproduce the error in a controlled way.)

Putty console window showing a line of red dots as a failing Cucumber test runs

Now, how to fix this? Google, Google, forums, code snippets, aha! It's a bug in Rails itself! Oh, the sheer joy of being able to say "It's not us, it's them!"

And there's also a monkeypatch available - a monkeypatch is a temporary fix, applied on top of existing code, meant to go away when the bug is fixed officially.

I add the monkeypatch, run the test - it is now green! \\o//

Putty console window showing a line of green dots as a passing Cucumber test runs

I run ALL the tests, because it's important to verify that I haven't broken something else in fixing my bug. The tests run. And run. And run. I grab some chocolate, because I deserve it, and after almost half an hour, the full test suite has finished. All green! Hurray!

I feel a bit tired, and glance at the clock - good heavens, when has it become 2am?! I push the code to my repository on GitHub - this means that the changes I have made are now saved on my personal branch of the code, and other people can see and download them. I make a pull request for that code to be grabbed in the official master branch, and... I should go to sleep. Really.

But there's another very frequently occurring error... It means hundreds of times that people have tried to load listings for various fandoms, and they got "Something went wrong" instead. And this time, the latest error is for one of my fandoms! Now this, this is personal.

I make a new code branch on Github, so that I can have a copy of the code which includes only my changes for this issue, not anything else I might be working on. I write a test. It's easier to write one for this scenario, so armed with the failing test, I start digging through our code. Aha, there are about three files involved in this. I know exactly what needs changed. I rub my hands together in glee...

...Or do I? There are always several ways of doing pretty much anything with code, but not all them are equally advisable. Luckily, there are some senior coders in the Coders room, and I pester them for ideas. I could test the parameters here, or I could do it in this other place, or even in three different places.

Obviously, a more general solution is generally (ha!) preferred. We arrive at a rather good consensus, a cleaner way - and one I hadn't known was possible. Yay, I've learned something, too!

It's a bit more involved than the other ways, but it's more rewarding. I code the changes, upload them to my webdev, launch the test. I test manually, in the browser, too, because this bug is easier to reproduce and test manually. (Unlike, for example, bugs with Gift Exchanges, for which you have to set up a whole challenge and find people to test with you. Ask Cesy about them sometime.)

Oops, errors all the way.

I fiddle with the code some more, I poke at it some more, rinse and repeat until - huzzah! - the test spits only green dots, and the page loads fine in the browser. Hurray! I push the code, I make a pull request. It is now 4am. I not so much go to sleep as ooze into bed.


Behind the scenes at the AO3: Coding prompt memes

Published: 2011-06-05 17:12:34 -0400

We've seen some conversation recently about cool possible features for the AO3 (we love conversations like this!). Brownbetty made a post about kink memes and AO3 - some of the features suggested there are things we've been working on for a while, so we figured this would be a great time to give people a glimpse of what goes on behind the scenes. Coder Cesy has been working hard to develop our new prompt memes functionality - coming to the AO3 in the next release! - so we asked her to chat a bit about the issues involved.

I've been coding the new prompt memes feature for the AO3, which is due to go live "soon". It's now reached the next stage of testing (ready to be deployed to our test server again), so I figured it's a good time to post about it.

So, essentially, prompt memes will allow you to run some sorts of comment-fic challenges on AO3, though not a full traditional kink meme. They have the structure of lots of prompts and then works posted in response to prompts. They have the ability to mark prompts as "semi-anonymous" - I deliberately called it that because it isn't true anonymity of the type some people want. A semi-anonymous prompt is still owned by your account, you can still edit it and do everything with it that you could with a non-anonymous prompt, but it will show up to other people as "Anonymous" rather than your name.

The reason I've distinguished it is because there is a key problem with this - the link between the prompt and your name has to be stored in the system (in order for you to edit it), which means a couple of things:
1) There could be a bug in the system that would reveal your name to someone else. We've tried to eliminate them all, (ask me sometime about the joy of writing and refactoring cucumber tests,) but there's always the possibility we'll miss one, or introduce a new one.
2) Someone could guess which one's yours by looking at the id numbers and comparing when you posted prompts under your real name. It would take a little bit of knowledge of the system and a little bit of close watching, and for you to post non-anon prompts in the same batch as semi-anon prompts, but it's possible - if you posted prompt 17143 and 17145, it's reasonable for someone to guess that "anon" prompt 17144 is also by you. We can't hide all of those numbers from users without introducing accessibility problems in the process.

So I'd still like to think of a way to do truly anonymous prompts, where you relinquish control and editing ability in exchange for it being more securely anonymous. (Though that actually only eliminates point 1, not point 2.)

At the moment, prompt memes have the standard AO3 challenge ability for a mod to make all responses in the whole challenge anonymous, but that brings with it the modly power to reveal who wrote which fic at any point. So, there's still scope for a new type of anonymous posting for responses, where it's controlled by the author instead of the mod.

Again, here, you could have a semi-anonymous option where the author can still edit, etc. but it carries the risk of bugs. Or you could have an "instant-orphan' option, but then people would click it by mistake, which raises lots of problems of its own. We're still thinking about other possible approaches!

The AO3 "Accessibility, Design & Technology" committee (which I'm a member of) gets to debate issues like this - if you're interested, we always welcome more volunteers - just let us know you're keen.

Cesy's work on prompt memes will be featured in our next code release!


Pages Navigation