Wagn blog entries

Wagn 1.7 - Access Rules

With every new release, Wagn adds not just more power, but also more harmony.  Wagn 1.7 brings new power and harmony to our permissions system.

 

Before Wagn 1.7, Wagn's permissions were all stored outside of cards in a special permission table - now permissions are stored in cards as rules.  What does all this harmony buy you?

  1. Easier management.  Our old permissions table stored separate permissions settings for every single card.  Since our rules system allows for much more elegant expression of broad patterns, it is now far easier to see and manage your permissions. As an example, imagine you have 1000 user cards that can only be seen by "anyone signed in", and you want to change them so they can be seen by "anyone".  In the old system, this would require going to the options tab of 1000 cards.  Now this just requires one edit.
  2. Better interface.  Because permissions are now rules, all the new improvements to our rules interface will make it easier to create and edit permissions configurations.
  3. More flexible assignments.  Before, permissions could only be assigned to Roles, or groups of users.  Permissions can now be assigned to any combination of Roles and Users that you might want.
  4. Searching.  Since permissions are now in cards, you can now access them through the Wagn Query Language (WQL).
  5. Simpler API.  Now you can create and edit permissions rules through the standard card API.
  6. Customizability.  Because permissions are now managed through cards, you can tweak their editors and other views with our packs API.
Other coming benefits in progress include improved performance, simpler import/export, and REST access.

 

Wagn 1.6 - bundles and packs

As of Wagn 1.6, developers can extend Wagn without forking its code by creating a "pack".

 

"Packs" are ways to extend Wagn's functionality.  In the long term, we envision that a "pack" may refer to several things:

  • "modularized" code that can easily be added or subtracted 
  • a "tradeable" group of configuration cards
  • a combination of the above
At present, a pack is really just that first method -- it's a little code module that uses a simple API to create new views of cards.  
 
The API is currently in alpha, but there's a lot of power packed into this kind of pack.  You can create special types, special plus cards, and special individual cards.  You can override existing views or create new ones.  You can not only change how a card's content is presented, but also how it's edited.
 
In fact, all the views of existing types, from Basic to User to Image to Setting, are now handled through this same API.  As are lots of special individual cards, like Recent Changes, *navbox, *account links, and *now.
 
We'll be adding lots more documentation about how to get started on creating your own packs in coming days and weeks, but in the meantime, feel free to contact the Wagn team through wagn.org if you have questions/ideas.
 
The other big advance in 1.6 is the use of "bundler" for managing Wagn's software dependencies.  This is a big step towards making installations seamless, as well as towards having Wagn run on the latest (3.x) Ruby-on-Rails releases.

Wagn 1.05+3 - simple wagneering improvements

 

Default cards for new Wagns

New Wagns now come with close to 300 cards by default, and this number is only going to go up as Wagn's power increases and functionality is moved from code into the cards themselves. We want it to be easy for Wagneer to get a sense of what's built in to new Wagns, and what all of these cards do. We're also preparing the way for translating Wagn into other languages (more on that in a later blog entry). So, I've written up a list of all of the cards that come with new Wagns, briefly explaining them and linking to deeper documentation:

default cards

There's space at the end of that card for any feedback you'd like to give on how you find it useful, or any suggestions you have for improvements (you can also just edit the card directly of course — I'll be watching it).

The headline isn't bragging; we have a new Wagn term: "Rules".

 

Even if you're just getting started with Wagn, you probably have some understanding of "cards". You understand that by "everything is a card", we mean that almost every unique chunk of information on Wagn has a common structure, whether it's text, an image, a user, a search, a setting, a number, etc.

 

If you've gotten serious about exploring Wagn, you also know that Set are groups of cards you can configure with Setting. The idea is that you can apply Settings like layouts, templates, captchas, help text, etc, very broadly or very narrowly, depending on which Set you apply them to.

 

When you configure a specific Set with a specific Setting, you get a "Rule."  So, for example, if you want to change the permission for who can view user cards, you might go through the Options tab for a user card and change the *read permission for "All User cards".  In doing so, you will be prompted to created a rule card named "User+*type+*read".  Note: this pattern isn't new, but the term "Rule" is. You don't have to remember long card names to use rules, but if you take the time to understand one or two, you'll have a deeper sense of how Wagn works.

 

 

Like all compound names, our new rule card  -- "User+*type+*read" -- has a left side and a right side, with the divider being the rightmost "+" sign.  So the left in this case is "User+*type", and the right is "*read".  Like all rules, the left side is a Set, and the right side is a Setting.  In short: Set + Setting = Rule.  Specifically, this rule applies the "*read" setting (which determines who can read a card) to the "User+*type" set (all user cards).

 

All Rule Cards follow this Set+Setting pattern, but not all Rules are Rule Cards; there are also Code Rules.   Code Rules are contained in special low-level code (currently Ruby, sometimes with javascript) rather than in card content.  Like card rules, code rules configure the appearance and/or behavior of a set of cards.

 

You may have noticed that many cardtypes or individual cards have some sort of special appearance or behavior that is not fully configured in cards.  Image cards have special editors, Account Requests have special links to approve/deny, the recent changes card has special date groupings, the "*navbox" card shows the search bar, etc.  All of those special configurations are accomplished through code rules that extend the relevant set of cards.

 

What's more - if you've got a little coding skill, you can develop new code rules yourself using Wagn's new Pack API.  Even if not, you can now hire someone to extend Wagn to meet your personalized needs quickly and affordably.  And as Wagn progresses, it will get easier and easier to build and share these "packs" of cards.  If you're interested in tracking the progress of the new API, check out (and "watch") Packs+API.