Team blog: Developers

Progress on Things & other things

Most of the work on listing reviews on their “thing” pages (e.g., page about a book or a piece of software) and letting users add reviews from there is done, and this will be deployed tomorrow. An interesting discussion is ongoing about the possibility of integrating lib.reviews with F-Droid, a repository of free/libre software for Android devices. F-Droid is a great project and it would make a lot of sense to me for lib.reviews to begin by serving different free software communities.


User reviews & team blog posts now also have Atom feeds

You can subscribe to a user’s reviews by adding their user page to your feed reader, e.g., my page. Adding their review feed works as well, e.g. my feed.

Similarly, you can subscribe to a team’s blog posts by adding that team’s page, e.g. the developers team to subscribe to the dev diary.

As a shortcut, adding https://lib.reviews/ will also work to add the development diary, though we may remove that link when we remove the dev diary from the main page. Moreover, this will require a feed reader that lets you choose between multiple feeds; otherwise you’ll most likely get the feed of all reviews instead.

Next up will be improvements to the presentation of “thing pages”, i.e. the pages about the thing that’s being reviewed. To begin with, we want to list all reviews of a thing on its page (which you’ll also be able to get an Atom feed of), and make it easy to write reviews from there. Eventually, this will be where additional metadata (e.g. business hours or a map for a restaurant) will be found.

A couple smaller items from today:

  • team blogs have dedicated pages and pagination now
  • our discussion list has been migrated to freeculture.org, using the familiar Mailman interface.

Later this week we’ll be diving into getting some first test coverage on the way, which will be invisible but important to keep breakage to a minimum as the application gets more complex.


First Atom feed up

We now have Atom feeds for our site-wide list of reviews. You can just copy https://lib.reviews/feed into you feed reader of choice, and it should auto-detect the feeds. We advertise all languages since the feed reader can’t reliably guess which one you want. Some feed readers like http://feedreader.com/ will offer you a choice, others will just load the first one in the page. To specify precisely which language you want, use an address like https://lib.reviews/feed/atom/de (German version – just like the site, it will show English content unless a German translation is available!).

Next up: User feeds & blog feeds.


Fun with feeds

Aside from some more freeculture.org work, I got a couple of small fixes to feeds out today:

  • pagination now uses the more human-readable ISO date format in the URL
  • users now have dedicated feed pages for their reviews, see e.g.: my reviews

Work on Atom feeds is underway. Why Atom and not RSS? Overall it’s a better thought-out format, but specifically, since we’re multilingual, we need to be able to express language at the level of any piece of text in a feed. Atom lets us do that with xmlns:lang, while RSS only has semantics for language at the level of the entire feed. We’ll support Atom for blog posts and reviews, including the site-wide and user-specific feeds of reviews.


SPF, DKIM, AAAA records, oh my ..

As expected, much of today was spent fixing up some email configuration issues with http://freeculture.org/ . This has some relevance for lib.reviews as I’ll probably migrate the mailing list over to the freeculture.org mailman server, which is a bit easier to use. It also gave me some needed practice for setting up email over here, so we can build e-mail features into lib.reviews (notifications, password resets and all that good stuff), ideally without using a third party API.


New team features deployed

We now have the following features:

  • If you are flagged as trusted, you can start a teams from the teams page. (Just write a review or two! :-)
  • You can join and leave teams, and your membership will be shown on your user page (see mine as an example).
  • A team can be configured to require approval for new members, and team moderators can approve member requests. That is still a bit clunky since we have neither email nor notification features, so you have to visit the team page to see the current status. But it should work for now.

The blogging feature I’m using to write this is enabled for all teams, as well. I’ll try to get basic Atom and/or RSS feeds in soon.

Overall a productive couple of days, but this has also shown how important it is that we get two key concepts implemented soon:

  • a generalized event stream which should replace the current ugly front-page with a more dynamic view of multiple goings-on (team creations, joins, leaves, new reviews, member joins, etc.). This will make features more discoverable and is also a nice use case for RethinkDB’s changes feed feature, so we can potentially do real-time updates.

  • a generalized notifications feature. This is fairly standard stuff nowadays – push notifications about events like “your request to join team X has been approved” out to users. That’ll make it easy to add nice features like liking reviews, and also to push out notifications for comments and such later on.

A lot of this will also tie into email features. Email is hard to get right – users expect and deserve not to be spammed and to have easy access to subscription settings, and popular mail services like GMail have become very aggressive about flagging email from untrusted sources as spam.

I’m investigating some of those email issues for http://freeculture.org/ right now (which is getting a lot of its list mail flagged as spam) and if I can figure it out for them, I think I’ll be able to run my own mail server on lib.reviews as well. If not, this may be a case where use of an external proprietary API is justifiable.


More team work

Most of today was spent on teams, now using proper relations neatly managed by the ODM (object-document mapping library, for keeping the software’s representation of the data in sync with how it’s stored in the database). Locally I have membership/moderatorship status working and the beginnings of a join workflow. Those changes should be ready to go out tomorrow. A few smaller fixes went out today.

Also, interesting continuing discussion on the OpenStreetMap list about how the two databases can be connected to each other. The big challenge is to keep changes in sync, since OSM doesn’t really have very stable identifiers for its data. A community member might start mapping something by identifying the coordinates of a point on a map, then someone else might turn that into a shape, creating a new object with its own ID. The somewhat confusingly named “Overpass API” looks like a promising way to mimic permanent identifiers.


Small team-related fixes

The teams page now has an actual link to creating teams. If I’ve already flagged your account as trusted, you’ll be able to do so – which I’ve done so for for anyone who’s posted a review. The team editor also has basic preview capabilities now, which is handy since team pages can have a fair bit of markdown.

Reminder that you still can’t join teams yet (unless you start one, in which case you automatically become a member) – that’s coming up next. :-) Once we have the basics, we’ll make it possible to (optionally) associate teams you’re a member of with reviews you write.

Have thoughts about teams? Please join our community mailing list as the main channel for feedback/discussion for now.


Pagination for review feeds enabled

Today was mostly a rest day, but basic pagination for review feeds should now be working (little links at the bottom that take you to the previous page of reviews). This was a bit of a deep dive into some RethinkDB query features, but the final implementation should be performant even at larger scale usage.

We should do the same for blog feeds soon :)


Outreach, fixes & database downloads

A lot of today was spent with outreach to a few different places:

Welcome to all testers who signed up with an invite code! We’re still being very explicit about the early stage we’re in, but it’s nice to have some folks poking at things, giving comments, encouragement, criticism, etc.

On the development side, we fixed a few bugs, and we also added database downloads which are an important part of maintaining a truly free/open site. These don’t include the user tables yet; we’ll need to sanitize those (passwords and private prefs) before we include them. A shout-out to the serve-static npm package for making it very easy to make the files downloadable through the web UI.

I threw in a mirror of the http://freeyourstuff.cc/ datasets, because why not :)


 Older blog posts