Ask maiki: Tech for a local digital community

Someone asks:

Hi just curious if you were to choose a CMS and technologies for launching a local community digital only community news site, which is mobile and tablet friendly, and easy for community editors to use to publish articles, what platforms, CMS and tech would you recommend?

If you are asking me, you probably already know a little bit about my work. What you are describing is similar to what we have at Oakland Local, as well as the recently launched Young Oakland.

I personally work primarily with WordPress, but I didn’t start there, nor did I stay once I found it. I compulsively use new self-hosted software, and have used just about every FOSS CMS/blog/forum/gallery/status/repo/IM project out there. The first version of Oakland Local was in Drupal. But eventually we migrated even that site to WordPress.

The theming layer, user system, custom post-types and plugins make it a very versatile platform. I build sites for a variety of companies and individuals, and most of them I also host on a single multi-network WordPress instance, which shares users, plugins and themes, so the overhead for keeping it updated isn’t affected very much by each new site I add. This configuration is possible because the core of WordPress allows for thousands of developers to build on it, so you have 10 years of development and millions of human hours working on the design patterns to use for your site.

Okay, so of course I suggest WordPress. But there are 29,000 plugins, probably more themes, and building any site is difficult. Where does one start? Well, here are some specific suggestions on starting a local community-driven news site, at various levels of abstraction.

Plugins

Edit Flow makes it easy to manage a lot of folks working on different content at the same time. I think one should probably be familiar with the WordPress post edit screen first, but even with the slight learning curve, a small team of editors can handle a lot of content easily, once they grok this plugin. A couple training sessions for editorial workflows will go far for a community site.

Pods allows drag-and-drop creation of custom post types and taxonomies. I prefer this plugin to other methods because the interface is easy to use, and allows for easy export/import, so creations can be shared without having to code. There is a learning curve to do things beyond the basics, but it is a good starting place to customizing WordPress post types. An example of using Pods is on Moon Handbooks; we use it to create the book pages, which have structured data.

Gravity Forms is a premium plugin that creates forms. It doesn’t sound too exciting, but it is amazing what you can do with it. At Young Oakland, students can submit their art work, and contributors to the RailsBridge Blog can create posts without having an account on the site (which means the bottleneck isn’t administering users on a blog). There are a lot of contact forms, but GF has a drag-and-drop interface, and other plugins that greatly increase what the forms can do, like passing data to a CRM or a custom post type.

WP-Piwik is the plugin that makes it easy for WordPress to use Piwik, a free and open source analytics project. Knowing how folks use your site can be useful, and on a community site it is one tool in creating value for its members. Piwik can be configured to respect folks’ privacy as well, and I run an open, public instance at AnalyticsX. If you would like to track your site there, get in touch.

While I don’t use them personally, BuddyPress (social networking) and bbPress (forums) are worth mentioning. I don’t use them for various reasons, the primary being I don’t have a need for those particular setups. But I keep an eye on them, because they are definitely useful to the right group.

The (Indie)Web we weave

I am making a note here, so when we take for granted how awesome our information streams are, we can look back at this snapshot and see how we did it in the ol’ days. Bonus humor, if you catch how meta the topic is.

  1. Mike makes a post about, among other things, blogging and the IndieWeb.
  2. Matthew leaves a considerate and detailed comment on Mike’s post.
  3. Matthew decides to document the sentiment on eir own site (correctly, I think).
  4. Mike employs a snarky editorial method and posts an excerpt on identi.ca.
  5. That gets me thinking, and I reply, both to that particular line and the observation of how RSS is used on the web.
  6. To ensure that my reply is part of a conversation, I post a link in reply to Mike’s identi.ca post.
  7. Mike points out my reply in further commentary, on the original blog post.
  8. Since I am not participating in the conversation on the original post, and other reasons, Mike then replies with the link to this new comment in the identi.ca thread.

The hosted software involved in this conversation includes one or more email stacks, WordPress, Drupal and pump.io, and content was published on no less than five websites (not including the federation in pump.io for non-participants).

Not our DRYest moment. ^_^

The important lesson here is that Mike, Matthew and I are obviously comfortable with all the software involved, and the additional cognitive expense in posting in multiple places is mitigated by other factors that include dopamine and connectedness. The same things that bring people back to Facebook and Twitter. It isn’t fair, but fighting to stop the exploitation of human nature was never going to be a fair fight.

Getting stuff in order

Due to a misunderstanding of which Amtrak stop is the Santa Clara station (Santa Clara: Great America is what the conductors think if you don’t emphasize just Santa Clara), I ended up traveling about twice as much as I had planned to reach my destination yesterday (and included a car pickup from Diridon Station…). I came home starving and exhausted, but I think I got about 10 hours of light sleep in. Interestingly, Clover woke both Susan and I at almost exactly 5AM but clearly speaking in eir sleep, “Papa… Moma…”. ^_^

My trip was to set up the project for the last Drupal to WordPress migration I will be doing this year (which could be a lie if someone has lots of money to throw at that problem). This is happy news, because after the thing I am working on in the Oakland Local network, and then the migration, I will finally have some breathing room. I will of course fill my time with any number of backlogged tasks I have, but they aren’t as intense, and leave me a lot more time to wax poetical about all the neat stuff I’ve been working on, which is good for you folks, but great for me, since if I don’t blog it, it didn’t happen.

Oh, my home situation is really odd, but I am dealing with it the best I can; not much to report on that end.

ownCloud + large backups

I am using ownCloud as a means to get large backups to my clients.

A Drupal site gets big after a while, and none of my clients that use it have backups under 2GB. That becomes a problem, since I need to get the backups to them somehow. I had moved them over to an ownCloud instance I had, but I moved it and haven’t set up a new one yet.

Well, I decided to see how easy the web installer script was for ownCloud, and I am pleased with the result: now I have a small instance on my clients web server, and can send my contact there a link to their backups, and the link itself will expire soon. Killer use case, and it was easier to install than WordPress (since it uses SQLite). ^_^

changelog

Been trying to document the work I am doing, and I haven’t been blogging about anything else, so here is a changelog for let’s say, the last week. ^_^

Feed autodiscovery in Drupal

Notes on how I got a Views-based RSS feed to create the autodiscovery link in Drupal.

Someone noticed that they couldn’t easily subscribe to the RSS feed on SVBC‘s site. While it is linked at the bottom of each page, they tend to be long, and really we should make it as easy as possible for folks to find it.

The reader in question was Google Reader, which of course looks in the head for something like:

[sourcecode light=”true” wraplines=”true” lang=”html”]
<link rel="alternate" type="application/rss+xml" href="http://bikesiliconvalley.org/feed" />
[/sourcecode]

The default Drupal feed shows up there, I think. I wouldn’t know, because I replace the front page and the feed with one generated by Views. However, just creating a Feed view doesn’t create that link element, you have to attach it to another view.

In SVBC’s case, we have two views that create the front page, one for the large story, and one for the secondary stories beneath it. I created a Feed, which has decent default values. I adjusted it so only certain content-types as used (content posts, instead of little one-off types, or forum threads, which are kinda odd in a feed). Then I attached it to the main story block; that inserts the link element into wherever page that block (or view; whatever it is attached to) is rendered.

It doesn’t load that feed on any other page, but for autodiscovery purposes it is okay for the moment. However, I just had an idea… Nevermind. Too much work to hack at Drupal, to do what so many other web applications do out of the box.

Drafted, 2007

Clearing out my old drafts. Check out 2007!

Recently I realized I had 55 drafts, going all the way back to 2007. WTF, maiki?! So, in order to remedy this, I am combining my old drafts into posts, hopefully capturing the feel of what I couldn’t talk about then. Here we go!

In 2007, I only had three drafts. That means I either didn’t write enough, or I was better at deleting drafts.

I had wanted to talk about really small video games, but only got this anecdote out:

I once created a module for Neverwinter Nights. Only a few people played it. I spent weeks of time on it, hand-crafting every small detail to go along with the whole. I was really excited about it, but I had an issue that eventually killed it. I hate admitting stuff like this, because I feel like I am giving up, surrendering to reality, and thusly killing some very specific dreams.

I guess I hated admitting it enough to stop there. My next draft had me reflecting on “mediated user experience”, comparing Drupal and MediaWiki:

Lately I have been thinking a lot about the difference between content management systems that have user interaction (such as Organic groups in Drupal), and less mediated systems (like MediaWiki).

I define a mediated experience as something planned for a site visitor. In some systems this is very strict, such as with a news site that allows limited, if any, commenting. Somewhere along the line we come to more user interaction, but with more technical structure, like a forum.

This is pretty hilarious, considering my relatively recent decisions on building structured data; I am over Drupal, and am replacing it with MediaWiki. In fact, I spent a chunk of time setting up the Semantic MediaWiki extensions today. One could say I am still thinking a lot about that. ^_^

The last draft of that year should have been short and concise:

Since installing Gallery on my site I have been looking at ways to streamline the workflow of snapping an image and then getting it up on the site with all the metadata I want attached. I just finished installing and updating Adobe CS3 on Cloud, which happens to be Susan‘s iMac.

Bridge never worked correctly on the Intel, so I was testing out the new version and digging what I saw. I went to look at adding copyright information and I saw that there was an Adobe Metadata Panel entry in the CC Wiki. It allows you to add an XMP field to a file, which can be created when you create a license on the site.

Not sure why I didn’t finish this one, since it was just to give a shoutout to CC licensing in the Adobe Metadata Panel. I cringe to think that I was into an Adobe product enough to blog about it. The process I was excited about has changed since then, and seems like a lot of trouble for something that should be very easy. However, it is nice to revisit the memory, and see where I’ve come from. I hardly use any closed software anymore, and I’ve got over 5 years of CC usage under my belt. Sweet!

Okay, next draft post will be for 2008! There are eight posts from that year, so maybe it will be a multi-part post. ^_^

One wiki

I am collapsing all my wikae into a single MediaWiki instance. Awesome.

I like running my own web software. Sometimes that is a problem, because if I have a bunch of ideas for a particular software project, I can obsess over the details of setting up farm instances, with robust backups and turn-key deployment. When I figure all that stuff out, it is very helpful for my work. It is how I go into this, actually. WordPress, Drupal, and a whole bunch of other things.

Being paid is helpful, because it tends to give me focus. An example is that back in 2005, I had more blogs than blog posts. Fortunately, after the “maiki blog bubble” popped, I was able to get some writing done. People exchanging cash for development tends to make me more productive. However, after a while, I feel like this is a job, instead of my paid hobby.

I am fairly certain I am obsessed with wikae, Wikipedia in particular, but the idea of wiki in general. At least once a day I wish the internet was just a big wiki. I don’t think that is a good idea, but it is actually a pretty cool way of thinking about the net, and how we use it. Anyhow, the point is that I am really into these tools.

It was a problem. My ratio of wiki articles to wiki instances was closer to 1:1 than care to admit. There was my personal public wiki, then my personal private wiki, then the ones for recipes, character sheets, tech stuff, fiction bible, and then just a whole bunch more for anything I could think of.

MediaWiki is cool software, but it doesn’t come installed in a form that is easy to use. There are literally a bunch of dead links, right out of the box. And it uses a database, which practically doubles the requirements for installing it (in the context of someone using a hosted web service). Also, there are annoying things, like how URLs are created (maiki doesn’t have capital letters in it). Since I was deploying so many wikae (which really should be the plural of wiki), I turned to DokuWiki, which I still think is much better for what I was trying to accomplish. In fact, I still recommend folks look at DokuWiki before MediaWiki, if they need something that just works.

This all changed recently. The first reason is that I am starting to actually collaborate with others a lot more, in a way that makes using a wiki helpful. Much like git, the network effect increases the value of wikae by a lot. This lead to the catalyst, which was in trying to create workflows that I knew to be possible, I was essentially recreating MediaWiki’s core functions in DokuWiki (which is part of the reason I am not as enthusiastic about Drupal anymore). And then there is Semantic MediaWiki

Since looking at alternatives for Drupal, I’ve been looking at the Semantic MediaWiki extensions. Well, I’ve been playing with them for a while, but it didn’t click until just recently. When you get to add structure to a wiki using form validation, it just adds this layer of abstraction that feels like a giant sandbox of awesome to me!

So, I gotta get into this, ne? But what about the initial issues? What about maintaining a bunch of instances of MediaWiki, isn’t that a pain?

Well, it totally is, but I was fortunate enough to get a fresh perspective on it. Over a series of discussions with Kevin, I was able to express my concerns, and answer to them. I really just needed a soundboard, but it had to be someone who was directly affected by my decisions, so they could provide feedback. Kevin and I are writing a lot of fiction these days, as well as all the other projects I have going on. Once the choice to be transparent with our process, to the point of working in public, we opened up the path I’ve decided to take.

One wiki (to rule them all [except *.Wikipedia {of course}]).

Let me point out the sandbox thing again… w00t!

Having decided that, I’ve been spending time pruning and moving over content from a variety of wikae to a single MediaWiki instance. It is a great relief, because I feel like I can actively fill in a wiki now, instead of spending time maintaining the software for all of them. We still have some meta-pages to set up before I unveil it, and I would like to do more research into account verification extensions (hesitant to use reCAPTCHA, but I know I need something). I will also be writing about how I am using git submodules and symlinks to keep the extensions set up.

If I am not blogging as much, you know where I am. ^_^

Also, I use マイキ as my login. So there is that.

Desura; age and gender fields

Desura requires age and gender fields, with no way to keep them private. So I sent them a message.

I just sent this message to the Desura team.

Hi.

I was wondering if someone could explain to me the decisions to have gender and age a required field to have an account.

It is of concern to me, since the only options for gender are male and female, which implies gender binary.

Also, it seems odd that one is unable to make those fields private.

I think making them both optional and being able to toggle visibility is the best practice for these kinds of sites.

So, please take a small moment to get back to me on this. I otherwise enjoy using Desura, and as a GNU/Linux gamer, it fills the void that other gaming platforms have left. I also applaud you for your DRM-free stance. I even prefer to use Desura for FLOSS games that I could install through my native package manager or PlayDeb.net. I want to tell all my friends to get on here, but those fields are holding me back.

Will report back their reply. ^_^

Update (Apr 26), from Henley:

I am really not sure on the issue here, we are a game development site and a game sales site. We do not have anything other then that choice on the profile it makes little to no difference to anything else on the site aside from stats so we can better understand our community and what audience is. You can choose to make the profile public or not, in the end you cannot search by it and you cannot define a member by it.

As far as I can tell you are either Male or Female, unless you choose to change that yourself which this site does not have anything to do with. We have social aspects to our site but they are far from our main concern. If that one particular issue is stopping you from recommending this to your friends I really have no words for that.

I have a lot to reply, but I am dealing with this other thing, so it will have to wait until tomorrow or something.

Update (Apr 28), I reply:

Thanks for replying.

[quote=Henley]As far as I can tell you are either Male or Female, unless you choose to change that yourself which this site does not have anything to do with. [/quote]

I am glad you are putting that forth, and am happy to provide you with resources about gender binary. Please see http://geekfeminism.wikia.com/wiki/Gender_binary. I think that will provide a good starting point as to what gender means, and how you can improve Desura with this new found knowledge.

[quote=Henley]You can choose to make the profile public or not, in the end you cannot search by it and you cannot define a member by it. [/quote]

I am not sure what you mean by the “define a member”, because that is what the field currently does, but I will assume it is a technical issue you are referring to. As for the profile status, I want to point out a sensitive issue you’ve brought up. The choice I am given, if I do not fit the two choices you’ve given me, is to hide my profile. That is worrisome for two reasons.

First, it sends the message that if I don’t follow the normal values, then I should hide. I think we can all agree that isn’t what we want to encourage folks to do.

Second, it diminishes the value of the social layer built into Desura, since my profile (as I understand it) would be hidden from my friends.

With that said, as a developer, I would like to provide you with a resource on how to handle this. A core developer in the Drupal community contributed this conversation, which goes over how they modified the gender profile fields there: https://drupal.org/node/752452. Note that their gender field is optional, as well.

Another notable example is from a core developer for Diaspora, and they go into great detail in describing why their gender field is a text field: http://www.sarahmei.com/blog/2010/11/26/disalienation/.

[quote=Henley]If that one particular issue is stopping you from recommending this to your friends I really have no words for that. [/quote]

I will be honest, I feel that your response was heavy handed, considering the tone I’ve tried to initiate. I understand this is a sensitive issue, and it may pull up feelings of defensiveness and misunderstanding. However, I think that if we take the time to think about the other person’s point-of-view, we can have useful and helpful conversation.

I have many friends that are gamers, and would like to use Desura, but they do not fit the options that you’ve made as requirements. Even if there is a technical reason that you cannot change the gender field to fit a modern understanding of it, I would think that it is relatively easy to allow for form validation without gender (and age, please see https://en.wikipedia.org/wiki/Ageism) being required. Allowing me to opt-out from providing that information would tremendously help me personally, and allow my friends to use Desura with a minimal amount of complication.

Thanks for taking the time to read this! ^_^

I edited the blockquotes so it is easier to see my citing Henley, since my blog doesn’t use bbcode. Also, I had to edit the links in the actual posting, since I am not yet allowed to send URLs in messages (for spam prevention, a good idea). Also, I went ahead and created the links here, for convenience. Otherwise, it is the same as the message I just sent. It is my hope they will take the time to read up on those issues, and at the very least create a discussion internally as to how handle the profile fields.