Previous Entry Share Next Entry
Release 0.4.1
jducoeur wrote in querki_project
The past couple of weeks have been one of those fine cases of Querki As Duck ("swan" sounds prettier, but I don't think we're there yet): gliding smoothly and slowly on the surface, but the flippers are paddling furiously underneath.

(General note: I'm going to try to make a habit of pointing to the actual checkins in GitHub in this list, and talking about the code in more detail, so that those who are curious about the actual code of Querki can follow along more easily. While I'm not pushing the open-source thing terribly hard, it would be lovely to have some folks sanity-checking me and asking questions. In the long run, I'll probably split the user-level and code-level discussions of releases into separate messages, but for now, my user base is techie enough that I'm not going to worry about it. So there are lots of links to code below. The message brought to you by DreamWidth's admirable habit of Code Tours.)

This release is mostly about internals -- in particular, I've been doing a huge amount of refactoring of how Spaces work. The architecture is much cleaner now, with the concept of Spaces separated from the grungy database stuff. This will make Spaces considerably more responsive (since the persisting of changes is done separately from page display); more importantly, though, it makes it much easier to *test* Spaces, since I can now stub out the database code in favor of something more controllable during testing.
[Spoiler (click to open)]
So there is now a querki.spaces package to contain all of this stuff; a SpacePersister and SpaceManagerPersister to encapsulate the database operations; and a SpacePersistenceFactory, passed in at the beginning of time, which either uses the real DB code or stubs. These are true Actors in their own right, owned by their Spaces and controlled through the various PersistMessages. The result is that the Space and SpaceManager Actors can now be much more concise and focused, and the code is just plain *better*.

The other major enhancement is sad but essential from a business POV: I've implemented a first-draft Terms of Service. When you next log into Querki, expect to be presented with these when you try to access Spaces; you'll need to agree in order to proceed. This is going to evolve in the coming months (I'm better than the average programmer at legal language, but I'm still an amateur), so please forgive me if you see new versions of the TOS several times over the next year.
[Spoiler (click to open)]
From a code POV, the Terms of Service are implemented in the TOSModule (which is a very simplistic example of Querki's internal Module system), TOSController (which manages the UI side of it), and tos.scala.html (the View). These are a bit more scattered around the code than I like, but Play doesn't make it entirely simple to group them together in one package.

Bugs Fixed

Property Descriptions work again: apparently, when I changed the name Display Text to Default View, and split out the separate Property Details meta-property, I didn't update the code that actually *displays* the details. So when you were adding a Property in the Editor, and selected one from the drop-down, you would get an error. This now works as intended again: when you select a Property, it displays the documentation for that Property, so you know what you're adding.

Fixed _ref documentation: pointed out by mindways. Nothing subtle here -- the code was plain and simply broken, and showed an error when you tried to look at it. I apparently didn't test this doc -- duh.

Fixed adding-to-inherited-list: this was a horrible UI defect, that's been bugging me for ages. If a List was inherited, it is of course initially supposed to be disabled until you press the Edit button. But the Add button was *not* disabled, so you could go adding list items, which would then be dropped on the floor because you weren't allowed to edit it!

I did a quick-and-dirty fix for this -- you can no longer use the Add button until you press Edit first. Still kinda sucks from a workflow POV, but at least you no longer get into this weird situation where it seems to be letting you add elements, and then doesn't actually add them. In the medium term, the whole concept of inheritance and edit is getting an overhaul, to reduce suckage.

Next up: I'll be inviting a few more folks to use the system soon, and getting back to working on the first-draft Querki Tutorial, to show the basics of how to use it. On the code side, I'll be dealing with a key scalability improvement, which will make it safer for a non-trivial number of people to use the system.


Log in

No account? Create an account