Entry tags:
Stuff that got done, stuff that needs doing
I've been thinking of posting more about what I'm working on in terms of the archive (am getting quite fond of the AO3 nickname!) for anyone who's vaguely interested. This is really just my stuff/pov, since I don't want to try to speak for anyone else or pretend to be the otw newsletter!
Rails upgrade and i18n: So, about a month ago now, we upgraded from an older version of Ruby on Rails (2.1) to a newer version (2.2). The newest version is 2.3, but there are other things we need to sort out for that upgrade. We're working on it, though - 2.3 has some shiny new features we're eager to use.
The big change in 2.2 is that Rails added its own built-in internationalization (i18n) system. On the one hand this meant, yay!, we could get rid of the old Globalize system which sucked and which wasn't being maintained. On the other hand, this meant: a) we had to go through the app, take out the old translate method and add in a new one everywhere you have a string that users see (which meant editing hundreds of files and making sure I didn't leave out any )s or commas that would break the whole page), and b) finding new plugins and new ways to do what we needed that were compatible with the new system. For example, there's a plugin that lets you store your strings in the database instead of in yaml files in the app, and once you have a default language translation in there, it makes it easy to translate it. But what it doesn't do is offer you a way to get all your English text *into* the database - you have to do it by hand! So that needed a fair amount of customization. Also, Rails has localizing methods for dates and times that work differently from other translations, so we needed to find a way to handle those. Basically, lots and lots of work got done that's not visible to users at all. *g*
Translation front-end: We had a great meeting with lian from the translation committee about what her team needs and wants the archive to do, and I made some design mock-ups that everybody looked over and left feedback on. I let those sit for a couple of weeks while we sorted out the back-end, but I'm hoping to finish most of it tomorrow.
Tarantula: I got the Tarantula web-crawler gem up and running as another way for us to test the app. It turned out to be handy at finding unclosed html tags, too, so hopefully those are all sorted now, for the time being. They do tend to creep back in!
Inbox: We had what I think Betsy described as the hive-mind bug: there was a read/unread attribute on comments that got set when you marked them as read or unread in your inbox, but this meant that when you'd co-written something, you'd be marking feedback as read or unread for both of you. What one has read, both have read! Which... isn't really the way we want that to work. So I moved the attribute to the inbox comment model (which is different from the comment model and is user-specific), and then I thought maybe I'd try adding a little structure to the inbox page, and then I figured I should add a way to keep track of which comments you have and haven't replied to, and then I threw in a select-all and some filters for viewing, and then it was 2am and I had to go to bed. I wouldn't normally go "WHEEEEE! LET'S ADD SOME FEATURES AND REDO THE WHOLE PAGE DESIGN!" by myself in one evening, but the inbox has never been an actual part of the roadmap and no one ever even sketched out a vague design for it, so I didn't feel too badly about that. It needed love. The next thing up is to let you reply to a comment directly from the inbox page - tricky, because you can't just drop one form inside another. I'll probably try to get that done later this week.
Bookmarks: It was the case that everything belonged to one of your pseuds (ie, works, chapters, series, comments) except for bookmarks, which belonged to the user directly. There wasn't any particular reason for that and there may be some value in letting people choose which pseud they want to use for bookmarks (if you use different pseuds for different fandoms, for example), so we switched those over, which was actually pretty painless.
Story page metadata: I link you to this story; when was it posted? when was it updated? how many chapters are there? how long is it? Having pointed that out, I got volunteered to fix it. ;) Code-wise that's a piece of cake - we'll see if people like the way it looks!
Browsing stories by language: This was actually just a by-product of working on translations, but you can specify the language of your work now and do some basic browsing by language (although there may not be visible links to those pages yet when we do our next upgrade to the site). Lots of work to be done on that in the future, but browsing of the site in general is under development, so it'll presumably follow that.
Bug fixing: Fixed: site not letting you update your OpenID, upgraded OpenID plugin, site was letting you log in with OpenID if you hadn't activated your account, needed validation of pseud descriptions, and a few typos I'd added myself. Also, we had to figure out how to make the initialization of locales and translations play nicely with fresh installs of the code where the database tables don't exist yet (ie, don't make the newbie setup process explode).
Refactoring: the downside of improving at something is that your older work tends to make you wince. So between that and spring being in the air, I've been trying to tidy up the code a bit and remove some things I wrote a year ago that now make me go, "oh dear, no." I streamlined some filters, added the acts_as_list plugin to replace some duplicated, self-written methods governing series and chapter order, moved the rest to a module, and am on the lookout for other ways to make our model and controller code less sprawling. "I made my code suck less" doesn't play very well in a newsletter update, but I'm most proud of myself when I manage it.
Other stuff: I installed the project from scratch on an Ubuntu system and made notes for our 'getting started' wiki pages.
Meanwhile, back at the ranch: Lots of awesome work being done on organizing and improving our internal documentation, making it easier for new volunteers to get up to speed, improving browsing by user/pseud, finding the best way to display user/pseud names, researching co-located servers, fixing a load of small display issues, determining which html tags we want to allow in stories and making sure they behave predictably, finding fonts that people like better (*g*), and making and suggesting improvements to the tag wrangling interface. And in the realm of things that don't necessarily sound sexy but involve a lot of work and are absolutely essential, poor Sidra had to deploy a giant heap of changes to our test site and find a better way to handle migrations and database changes for when we update the archive and make changes in the future. *\o/*
Big stuff that's left to do, off the top of my head:
So that is mostly, sort of, essentially what's up!
Rails upgrade and i18n: So, about a month ago now, we upgraded from an older version of Ruby on Rails (2.1) to a newer version (2.2). The newest version is 2.3, but there are other things we need to sort out for that upgrade. We're working on it, though - 2.3 has some shiny new features we're eager to use.
The big change in 2.2 is that Rails added its own built-in internationalization (i18n) system. On the one hand this meant, yay!, we could get rid of the old Globalize system which sucked and which wasn't being maintained. On the other hand, this meant: a) we had to go through the app, take out the old translate method and add in a new one everywhere you have a string that users see (which meant editing hundreds of files and making sure I didn't leave out any )s or commas that would break the whole page), and b) finding new plugins and new ways to do what we needed that were compatible with the new system. For example, there's a plugin that lets you store your strings in the database instead of in yaml files in the app, and once you have a default language translation in there, it makes it easy to translate it. But what it doesn't do is offer you a way to get all your English text *into* the database - you have to do it by hand! So that needed a fair amount of customization. Also, Rails has localizing methods for dates and times that work differently from other translations, so we needed to find a way to handle those. Basically, lots and lots of work got done that's not visible to users at all. *g*
Translation front-end: We had a great meeting with lian from the translation committee about what her team needs and wants the archive to do, and I made some design mock-ups that everybody looked over and left feedback on. I let those sit for a couple of weeks while we sorted out the back-end, but I'm hoping to finish most of it tomorrow.
Tarantula: I got the Tarantula web-crawler gem up and running as another way for us to test the app. It turned out to be handy at finding unclosed html tags, too, so hopefully those are all sorted now, for the time being. They do tend to creep back in!
Inbox: We had what I think Betsy described as the hive-mind bug: there was a read/unread attribute on comments that got set when you marked them as read or unread in your inbox, but this meant that when you'd co-written something, you'd be marking feedback as read or unread for both of you. What one has read, both have read! Which... isn't really the way we want that to work. So I moved the attribute to the inbox comment model (which is different from the comment model and is user-specific), and then I thought maybe I'd try adding a little structure to the inbox page, and then I figured I should add a way to keep track of which comments you have and haven't replied to, and then I threw in a select-all and some filters for viewing, and then it was 2am and I had to go to bed. I wouldn't normally go "WHEEEEE! LET'S ADD SOME FEATURES AND REDO THE WHOLE PAGE DESIGN!" by myself in one evening, but the inbox has never been an actual part of the roadmap and no one ever even sketched out a vague design for it, so I didn't feel too badly about that. It needed love. The next thing up is to let you reply to a comment directly from the inbox page - tricky, because you can't just drop one form inside another. I'll probably try to get that done later this week.
Bookmarks: It was the case that everything belonged to one of your pseuds (ie, works, chapters, series, comments) except for bookmarks, which belonged to the user directly. There wasn't any particular reason for that and there may be some value in letting people choose which pseud they want to use for bookmarks (if you use different pseuds for different fandoms, for example), so we switched those over, which was actually pretty painless.
Story page metadata: I link you to this story; when was it posted? when was it updated? how many chapters are there? how long is it? Having pointed that out, I got volunteered to fix it. ;) Code-wise that's a piece of cake - we'll see if people like the way it looks!
Browsing stories by language: This was actually just a by-product of working on translations, but you can specify the language of your work now and do some basic browsing by language (although there may not be visible links to those pages yet when we do our next upgrade to the site). Lots of work to be done on that in the future, but browsing of the site in general is under development, so it'll presumably follow that.
Bug fixing: Fixed: site not letting you update your OpenID, upgraded OpenID plugin, site was letting you log in with OpenID if you hadn't activated your account, needed validation of pseud descriptions, and a few typos I'd added myself. Also, we had to figure out how to make the initialization of locales and translations play nicely with fresh installs of the code where the database tables don't exist yet (ie, don't make the newbie setup process explode).
Refactoring: the downside of improving at something is that your older work tends to make you wince. So between that and spring being in the air, I've been trying to tidy up the code a bit and remove some things I wrote a year ago that now make me go, "oh dear, no." I streamlined some filters, added the acts_as_list plugin to replace some duplicated, self-written methods governing series and chapter order, moved the rest to a module, and am on the lookout for other ways to make our model and controller code less sprawling. "I made my code suck less" doesn't play very well in a newsletter update, but I'm most proud of myself when I manage it.
Other stuff: I installed the project from scratch on an Ubuntu system and made notes for our 'getting started' wiki pages.
Meanwhile, back at the ranch: Lots of awesome work being done on organizing and improving our internal documentation, making it easier for new volunteers to get up to speed, improving browsing by user/pseud, finding the best way to display user/pseud names, researching co-located servers, fixing a load of small display issues, determining which html tags we want to allow in stories and making sure they behave predictably, finding fonts that people like better (*g*), and making and suggesting improvements to the tag wrangling interface. And in the realm of things that don't necessarily sound sexy but involve a lot of work and are absolutely essential, poor Sidra had to deploy a giant heap of changes to our test site and find a better way to handle migrations and database changes for when we update the archive and make changes in the future. *\o/*
Big stuff that's left to do, off the top of my head:
- Caching and performance check (I've been reading up on memcached)
- Getting set up on our own servers
- Browsing people
- Browsing bookmarks
- Browsing series
- Browsing in general
- Skins and customizable display options (surely counts as big stuff: I mean, people will cut each other over the serif vs. sans-serif issue alone)
- Tag wrangling improvements
- Subscriptions (not started)
- Collections & challenges (not started)
So that is mostly, sort of, essentially what's up!