Discarding useless features
April 5th, 2007 — 10:12 pm —I have a secret: I want to tear slate apart. Yes, you heard me. But before you think I’m crazy, let me explain.
I think slate is a great product. It works surprisingly well, and has a bright future. That’s not to say there aren’t kinks in the system, of course, but overall I’m quite happy with how it’s turning out.
Yet, there are some aspects of slate that nag me. Largely, aspects that originally came from a set of specs/requirements (boo!). For instance, we have a rollback feature. We also have a fine-grained permissions system, with roles and all that hoopla. And roles can be assigned to Pages, effectively providing object-based permissions.
This all sucks.
Yep. Not really the implementation (the permissions module is actually cool from a programming standpoint), and not really the interface (which is much better than it has been). No, what really sucks is the whole concept. Permissions suck. And here’s why: they get in the way of the user. They don’t help the user accomplish a task, they prevent it.
Typical slate site
The typical scenario for a slate site is this: one person, which we assign as site administrator, and… that’s it. Perhaps originally we were planning on something a bit more grandiose, but it hasn’t happened. Perhaps we envisioned that site administrators would register multiple people into the site and create unique roles for various tasks in the system. Perhaps we were wrong.
Do you want to know why? I suspect it’s because our users think permissions suck, too. One of the things I read in Designing the Obvious that has stuck with me is this: users aren’t like us – they aren’t using our applications just because the applications are cool. No, users use them because they have to, because it’s their job. Most users just want to get that link posted or that file uploaded and be done with it. They don’t care that there’s a fine-grained permission system under the hood making sure they don’t try anything they shouldn’t.
So, what does happen? If (and I do mean if) more than one user gets assigned to a site, a role is created that has every permission enabled, and it gets assigned to the second person. To me, this is a clear sign to what I pointed out before: users think permissions suck. The site admin doesn’t want to think about whether or not this other user should have the Rollback permission, so he does what any sane person would do – he checks off everything. He’s also fairly confident in his trust for this other user, so it doesn’t bother him. All of those checkboxes just got in the way.
Scrap permissions?
I realize there is a place for permissions. However, the level of permissions that we have in slate is too much. It needs to be severely simplified. If all our users typically do is assign someone “all or nothing”, then that’s all we need. The upside to simplifying is two-fold: our users may actually use the feature because it won’t be so complex, and we can more easily maintain it because there’s less to go wrong.
Rolling back
I mentioned Rollback earlier. This is another bone of contention (is that the phrase? weird…) of mine. I hate to admit it, but Rollback is useless. I mean, not totally useless… it does let you, you know, roll back your content. But why bother?
Here’s another typical scenario: user is assigned site administrator and… well, we wait for content. And then we wait some more. And most sites aren’t being updated, despite the fact that slate makes updating easier than say, Dreamweaver (dealing with FTP, etc.). So, if it’s so hard to get content in there in the first place, rollback doesn’t really serve much purpose. Oh yeah, and the interface sucks (my fault, sorry :-D)
Dave calls rollback a “checklist feature” (I think that’s the expression he uses), which makes me think of a giant rubber stamp that says “File under T for Trash” getting slammed down on it. There is no room or need for “checklist features”. The goal of slate, in my mind, is to be a tight, focused application. That means only the essentials. Everything else will be filed under T.
About slate
slate is a content management system (CMS) developed using Ruby on Rails focused on rapid production of traditional websites created by WVU Web Services. Read more about why we created slate and a longer list of features of slate. You can also check out a list of sites using slate. If you have questions or comments let us know but if it's a question about open sourcing slate have a look at this article first.Archives
Recent articles
- No Wonder Rails Is Default in Mac OS X Server...
- Good News: An Open Sourced slate Is Coming
- The WVU Open Source License
- Implementation idea: .do templates
- Keeping slate Humming - Part 1
- Campfire for Design & Keeping Your Tag Cloud Running
- Custom configuration settings made easy
- HOW-TO: Add a Gallery to Your Site
- JSONRequest.post Example
- Miscellaneous
Articles
Great post. I’ve found myself wanting to say, “Just tell them not to” rather than building some massive permission system for the cms I’m working on. Like you, each site that will go in our cms is typically managed by one user.
To clarify rollback and “checklist feature.” I think at the outset it seemed like a real feature but:
So what we end up saying, “And it has versions! How cool is that? This other app doesn’t.” Not that it’s really usable or going to be used. Hence, “checklist feature.” It’s simply a point, a concept to highlight.
And chris stole a topic I wanted to write on ;)
You haven’t yet quite persuaded me about rollback yet. :-)
“the whole five saved versions gets awkward if people don?t use ?save over draft.”
It sounds like you might not be totally invested in the rollback concept and/or the UI is confusing wrt it.
I imagine the versioning that’s provided in Basecamp. It’s there, it works, it’s simple. It’s ridiculously easy and convenient to glance back and forth at different versions and see what changes were made.
(Caveat: I use versioning for EVERYTHING I do: I store every folder and file I have in subversion.)
I think the methodology is screwed up. Here?s an example of a very common usage of our set-up where I personally feel our rollback fails:
Does a user need to save before previewing? No. But users feel way more comfortable about it because there?s no chance it?ll get ?lost?. Could they click the ?minor edit? feature we have just like writeboard? Yes, but they don?t because they?re lazy/forgetful and I include myself in this.
So at the end of the process the user has access to? their currently published version and 4 drafts leading to that published version. The kicker to me, and why I feel this fails, is that the user has no access to the last published version, the actual version that other people saw and, if necessary, would be the version a user would need to fall back to.
So the answers are:
The former will just get cluttered. The latter to me is the simple and useful solution.
hm.. why this page loading so slow?
Problems in our network here on campus. It’s making access to and from campus really slow. I apologize for the inconvenience.
Add comment
You are adding a new comment