[sticky entry] Sticky: Sticky post

Mar. 1st, 2018 03:51 pm
quivo: Watercolor of a daisy (Default)
[personal profile] quivo

Currently working on:

Github repo for our first coding efforts: github repo Hashing out the roadmap: roadmap, commentable by anyone with the link
Web framework cagematch: still ongoing, though we are currently roughing out 0.1 in Django

Want to help? Here's how to get in touch... )

Contributor list )

quivo: Watercolor of a daisy (Default)
[personal profile] quivo

Coding progress:

So I'm refactoring. AGAIN. If you want to take a look at how that's going, all that work is on the refactor3 branch on the github repo.

Why did you decide to do this?

Got tired of the way the project was currently structured, and I was going to need to change major shit anyway (injecting a custom user model into a Django project after you've done the very first migration basically requires weird project surgery), and none of the data I've been fucking with in the test db was worth wringing my hands over preserving.

What did you actually do??

  • changed fanarchive app name to fanfic. Already thinking about changing it to core because that's what it's effectively become, but whatever.
  • inserted a custom user model under a separate app. Basically just installed django-authtools, inherited from their well-done NamedUser, and called it a day. Separate app because I intend the archive-specific user logic (pseuds, profiles etc) to be separate from the user authentication logic (login, email & password).
  • inserted custom app for handling pseuds, then changed my mind and shoved the Pseud model under the core fanfic app.
  • decided to go on a jaunt into many-to-many land by defining the relationship between Pseuds and Fics with a couple special models
  • spent a possibly embarrassing amount of time playing with the db API, trying to make sure said defined relationship works as expected when creating Pseuds, Users, AuthorGroups and Authorships

What's next?

  • make sure deleting Authorships, Users, Pseuds and AuthorGroups also works as expected
  • add public_idfield to Pseud model and make pseud_name and public_id unique together (want this for anon pseud stuff)
  • add create_pseud function to the Pseud model. May also want to stick modify_pseud and delete_pseud in there.
  • put together basic data factory functions so I can generate sample fics for various test and demo purposes
  • TESTS. Main priority is:
    • make sure obvious operations work as expected
    • test custom functions
  • FORMS (need these for basically every CRUD operation for every model involved)
  • views + templates (rough, basic, but all the CRUD stuff needs this covered. Will lean heavily on the class-based views & default forms in django-authtools where possible)

Most likely, I will stop to make a giant pull request when factories and tests are in good shape, so that the work of making views and forms for everything that needs it can be in its own branch. Depending on how busy/tired I am this weekend, I think I should be able to do the custom functions, if not tie off the refactoring branch entirely.

quivo: Watercolor of a daisy (Default)
[personal profile] quivo

So I took a hiatus from this because I had to move out of state suddenly. I've time to work on this again now, and I'm just going to bite the bullet and stop treating this as a Special Fandom Community Project that needs to be taken mega seriously. Realistically, what I want out of this is a multi-author story archive that works for me (easy to host myself, tags and categories that make more sense than AO3, good ui for posting works), so that's what I'm currently aiming for.

Obviously this is still an open source project, so if you want to make suggestions, poke at the source and contribute, or fork the repo and grimly change all the fonts, knock yourself out.

Current to do list:

  • pick a goddamn license, seriously.
  • accept that I will be coding an admin interface (long story short, I looked into the abyss that is Django admin plugins and customization and decided I wasn't going down that hole). Cry. Cut out Django's okay interface and replace it with my shitty one
  • accessibility tweaks galore. I don't think I'll be doing special ~fancy CSS/JS shit focused on this yet, but at the very least the HTML structure of the barebones site should function sensibly for keyboard users, screen readers etc
  • consider stripping out even more of the barebones CSS library I started with, or exchanging it for something I like better
  • get SSL working with letsencrypt on heroku
  • slap together pythonanywhere install instructions & make sure they work. Because having not one but TWO easy serverless options for anyone who wants to screw around with this is aces.

This is probably too much to do, but who cares! It's going to be fun!!

May update

May. 2nd, 2018 04:24 pm
quivo: Watercolor of a daisy (Default)
[personal profile] quivo

So it's been a while since the last update. Here's what has been done so far:

  • Tentatively decided on Django as the web framework, plus chosen the rest of the development stack:
    • plain HTML/CSS/JS and Django templates for frontend
    • Django 2.0 and Python 3.6 on the backend
    • Server currently depends on where the code is running, i.e. Django's runserver for development, and Gunicorn + nginx for staging on Heroku
    • DB, for development it's just sqlite3, and on Heroku it's PostgreSQL 10
  • Populated the barebones Django install on the fanarchive repo on github with:
    • basic models for fic and fic parts
    • basic views for displaying uploaded fics
    • basic html/css so the archive's pages look only moderately unstyled as opposed to completely unstyled
  • Screwed around with settings so that deploying the repo to Heroku as an app mostly just works
    • heroku-specific settings and Django addons introduced
    • sensitive site settings kicked out to a .env file
    • the fanarchive staging app is here if you want to look at it.
  • Added basic wiki to the repo
    • install instructions added for rolling a copy of the app on heroku
    • install instructions added for local installs
    • added contributor faq for common questions

Quick note on project management

I had this idea that we were going to use some sort of watered down form of scrum/agile, but then I realized it'd be overkill for the tiny team we currently have. So far, I've just been working off of tasks on the Trello board, and will re-evaluate when this becomes unsustainable.

How you can help

Go to the fanarchive trello board and sift through the "Getting Started" and "Ongoing Work" columns. That's where all of our major tasks are currently sitting. You can also reach out to me on discord by PM-ing log_quivo#8714.

quivo: Watercolor of a daisy (Default)
[personal profile] quivo

Edit: I'm now moving the tasks in this post to this Trello board for better organization/assignment.

Here's the deal. Absent the sudden and miraculous addition of Sally Jobs, Coder Extraordinnaire, to our contributor team, what we are is a bunch of enthusiastic mostly-amateurs and busy pros with moderate to no coding experience, and varying amounts of free time we're willing to devote to this.

Which, considering the example of the AO3, is worrying at best ("we don't know what we're doing either! How do we avoid falling down the same hole??") and terrifying at worst ("these people I've signed up to work with could all turn out to be insane fandom wankers!!! D:. Also everyone will see my/our terrible code and laugh").

So I figure we can all promise ourselves a few things, to keep this from going south: )

To sum up, the overarching rule: let us all try to treat each other with kindness and respect. If we get as far as doing regular releases on github, I'll want to adopt something similar to this code of conduct as a baseline for governing how project contributors interact.

Roadmap

Since it's just going to be a handful of us working on this initially, I don't think it'd be helpful to commit to anything more strenuous than a roughly quarterly public release. 'Sometime in June' sounds good enough to me for a point where we absolutely want to have something functional up on github, though it'll most likely be a rough development release (0.x.x). Release versioning will use semantic versioning; to familiarize yourself with that or refresh your memory of what that entails, check this out.

We don't have any data on how long it'll take us to complete tasks, so any dates or timelines for when we'd like to have work completed will be estimates for the time being. That said, here's how I think we should spend the next few weeks:

Task assignment list, followed by administrivia )

zinnia_au: yellow heart icon (Default)
[personal profile] zinnia_au
Well, the list of features is off to a flying start, but lets be practical here. Anon over in the To Do.txt as well as myself and quivo have touched on the need to not try and do everything at once.

My thinking, at present, is to start with the most basic, minimal core or 'kernel'. Something capable of loading fics and displaying fics, with a single (admin) user built in, no tagging, no comments, no kudos, no search, no skins. Everything else becomes a module.

I don't expect anyone would use the core by itself. But by keeping that core so minimalist and slimline, we've got a much better chance of it actually existing. Once it does, we can build features via modules (as can others; this is open source!). This also fits with the philosophy of letting the people who actually use the software decide what features they want to use. We want to give fans options, not dictate how we might personally think is best.

This degree of modularity may sacrifice some efficiency. On the other hand, it should be much easier to track down bugs and adapt the code to what an individual archive needs. It also feels to me like a better approach than creating a monolith with every option always included.

Thoughts? Agreement? Disagreement?

To Do.txt

Mar. 1st, 2018 03:09 am
quivo: Watercolor of a daisy (Daisy)
[personal profile] quivo

Most important thing to begin with, at least imo, is to decide on a bare-bones feature set that we can all feel mostly happy with. I’m going to leave the brainstorm post running as a grab bag for ideas for at least the next day or so, while also mining through my pinboard and dememe for past thread discussions to pull from.

Otherwise, though, this is what I’ve got planned as tentative first steps for the next few days:

  • Features:
    • start a shared document so we can collate the most-requested stuff
    • boil down that document into a list of features
    • put feature list to a quick-and-dirty poll on meme so we can figure out what we can shelve for future releases vs what absolutely needs to be in the first one
  • Important community stuff:
    • piece together quick code of conduct so we don’t all go down in flames. At least not right away, right :D?
    • maybe assign a couple more mods for this comm
    • say hi to each other in an awkward post??
    • list what we can all bring to the table
  • Archive looks / front end:
    • let’s go look at a bunch of other archives we’ve used in the past, and see what we can steal and what we absolutely shouldn’t
    • figure out what should be in our mockup reel
      • put together two or three different sets
      • decide on most loved set
  • Archive name:
    • collect a list of great and obnoxious names. winnow down over time
  • Archive stack / back end:
    • list framework options that would best serve our purpose. Think stuff that is easily installed on your bargain-bin VPS
      • laravel, rails, django, node.js maybe, etc etc
      • friendly cage match until one framework is ruled the victor
    • figure out a data structure for fanworks & fanwork metadata that won’t send the db mad when it’s trying to handle a million works
    • figure out what extras will be useful
      • memcached, elasticsearch for fulltext search, S3 for image/file hosting, etc
zinnia_au: yellow heart icon (Default)
[personal profile] zinnia_au
Discussion on what programming languages and tools we should use. Ruby? What flavor of SQL for the database?

If you might actually contribute code, or have an opinion on it, please speak up!
quivo: Watercolor of a daisy (Daisy)
[personal profile] quivo

(Basics for an archive stolen from here.)

A way to upload text works
A warning system
A tagging system (minimally reliant on wranglers, able to handle things like primary/secondary pairings)
A search system
A translation framework
The ability to handle non-English characters gracefully even in an English-language archive (western anime and k-pop fandom use cases)
Independent screennames manageable from a single account
Comments, removable kudos, bookmarks
Gifting
Co-authoring, opt-in per fic (no adding a co author without the co author first approving it)
Basic social features such as messaging, blocking, and favoriting/friending users
Ability to lock fics so only archive users can view
Ability to flag material as adults-only (the AO3 system for this is fine)
A place to put rules, TOS, FAQs, walkthroughs, misc documentation
A way to report problems (for most use cases, this’ll just be routing a report to the archive owner’s email)

Administrative features are probably a separate brainstorm. They would include ability to invite/restrict/ban users, some way to deal with spam, etc

And the archive should be deployable by one or two administrators with basic technical competence, but should be scalable to at least the size of the current AO3.

What else?

Page generated Sep. 15th, 2026 08:54 am
Powered by Dreamwidth Studios