If I Were King of Everything2
I've been an E2 member for almost 10 years. While I love the site and its community, there are several things I would change if I were in charge. Below is my E2 Manifesto...
These are just my thoughts and opinions, and while I am a member of coders, this should not be considered official in any way. Also, I also didn't necessarily come up with every idea below on my own, but most of them have been bouncing around in my head for years.
I would stop using E2-specific terminology for a lot of things. We need to think about our audience and our new users and stop confusing them. Why say "homenode" when you can say "profile". The whole concept of "node" is a computer science term which doesn't make a lot of sense to new site users. In fact, I bet many regular old-time users don't even know that there are 75 different types of nodes on E2. If I say "node", am I referring to a writeup, a nodeshell, a homenode, a superdoc, or something else? Am I referring to a page (which isn't even a nodetype)? It's ambiguous.
I'm not saying we need to get rid of all of our jargon. What other word would you use for softlink or pipelink? Communities need things to set them apart, but they also need to think about the outside world if they want to attract new talent and not just scare them off.
User Options and Preferences
I would get rid of 90% of the existing user options and preferences. There would be common sense defaults put in place. New users would never know the difference because things would just work as expected, and old-timers could complain all they wanted. AJAX: on. GP System: on. Theme: zen. Social Bookmarks: on. Unnecessary options lead to confusion for users and staff. If things were designed properly, you wouldn't even think of being able to change them.
Some of the few options I would keep:
- Reputation- and status-based writeup filter
- ability to hide ads for logged in users (which might be a level power in my system)
- what notifications you receive (some are manditory)
- user timezone
Login / Registration
We are well into the Internet Age - there is no reason to force people through an annoying registration and email verification process any more. We would support OpenID and/or OAuth for logging in. For that .001% of the online population who does not have an existing account with an OpenID/OAuth provider such as Google, Yahoo!, Hotmail, WordPress, AOL, LiveJournal, Blogger, Verisign, MyOpenID, Twitter, or any of the thousands of others, we could still allow the old-fashioned registration process, but we certainly wouldn't encourage it.
I promise this simple act would bring in more users. Granted, not all users are good users, so we need some quality control...
Publishing and Writeup Statuses
Disclaimer: These ideas are not new (at least from the E2 coders standpoint), but may not be well known in the E2 community at large.
Get rid of Node Heaven, Node Row, and Scratch Pads. Instead allow users to create drafts right in the e2node/nodeshell itself. These drafts will be hidden until the author explicitly publishes them. There will be additional publishing statuses for new users and editorial/administrative functionality. Visibility and publish status will also be handled by user options, moderation, and level/experience system (more on those issues below). Editors will no longer delete writeups (with exceptions for spam, hate speech, etc.). Users can delete their own writeups any time they want. Once deleted, they are gone forever (remember no Node Heaven). On second thought, maybe we'll set the status to "deleted" and tell the user they have 48 hours to change their mind (or allow our editors to convince them to change their mind) after which it's gone forever.
Level/Experience System and Voting
I would keep the basic concepts of the leveling experience system, but would actually use the information more instead of letting these numbers sit in the background and be meaningless. Most importantly, I would go back to the days where you could actually lose XP, because if you can't lose it then it is also meaningless. Get a downvote? Ack! You lost 1XP! Oh, also, everyone would use the same system - no "grandfathered" exceptions.
New and "Bad" Users
All users with a level of 0 could post writeups, but they would be hidden by default. By hidden, I don't just mean they wouldn't be displayed in New Writeups, I mean they actually would not be displayed (by default) even if you visited the node they were posted in. For a new writeup to be published and visible, it would have to be moderated by an editor or get a certain threshold of votes from members of the new "Moderators" usergroup (which would be an opt-in level power). This system would automatically handle spam and "bad" users (do I need to name names?) as well by not clogging up the site with poor quality writeups. When a user reached level 1, their writeups would be visible by default once published.
In addition, one of the few options each user could set is their reputation cut-off filter which would hide writeups that fell below a specified threshold. (This is not a new feature, but would be much more useful if we had many more active users - some of which would not be great, or even good, writers.) Remember above where I said no more Node Heaven? Now we don't have to delete a writeup when it gets a rep of -5, we just hide it. If you still want to see it, there will be an option to show hidden writeups.
In addition to reputation-based filters, there would also be other filtering options such as by user, by type (i.e., hide all poetry from me), and potentially other options as needed.
Somewhat related to filters, I would stop ordering writeups by date. Instead we should put our best foot forward (not our oldest) and order writeups through a system combining/considering: reputation, "newness", C!s, and popularity (see Tracking and Trending below).
Voting and Vote Weights
While not truly a level "power", one of the new features of the level system would be that your vote value would increase with your level. In other words, a vote from a level 10 user would be worth more than a vote from a level 1 user, and the author receiving the vote would get the XP equal to your vote. I would allow newbies to vote on their first day - their votes would be worth less without being worthless, and they would feel like part of the community quicker.
In addition to this change, I would also allow voting (and C!s) on any node type. Want to C! a user? How about downvote a superdoc? In my E2, this would be possible.
Badges, we don't need no stinking badges! On second thought, yeah, let's have some stinking badges.
Similar to My Achievements, but more visual and featured on each user's homenode. Some would promote the goals of E2 (submitting writeups, voting, etc.), and some would just be for fun.
One Page to rule them all,
One Page to find them,
One Page to bring them all and in the nodegel bind them.
I would create One Browse Page to Rule Them All. This page would combine user search, new writeups, ENN, writeups by type, log archive, cool archive and any other related superdocs. This page would be an all-purpose sortable, filterable, pageable node lister/browser.
Tracking and Trending
A huge feature this site is missing is utilizing tracking and trending. E2 does use Google Anayltics, but I don't think we actually use ths information. Much more important than simple analytics is trending. At any given moment, our home page should be listing what is popular on E2 in the last hour, day, week, or month. What pages are getting the most incoming links, what pages are getting shared the most on social bookmarking tools, or what pages are getting the most hits or votes? Not all-time, but right NOW. Actually trending is more about what pages are getting an unusual amount of traffic as compared to normal.
E2 Zeitgeist doesn't cut it. Sure, How to become a better anorexic is popular every day, but why is writeup X popular right now? Is there something going on in the news? Did a node get on Reddit's home page? Did someone's writeup just go viral on Twitter?
We should really start allowing images, video, and audio. I'm not suggesting we pimp the site out with multimedia for its own sake. It would certainly be a level power and would REQUIRE a minimum amount of words in the writeup before the user could attach an image. After all, E2 is a writing site. How nice would it be if a movie/video game review had a video of the trailer, or a book review had an image of the book cover, a biography had a headshot of the person? How about pictures from nodermeets right on E2?
In addition to multimedia, we would also allow comments on almost every node. Comments could be voted on like other nodes and could therefore be filtered like other nodes. They would not be displayed by default on e2nodes, but would be displayed if you visited an individual writeup. To help the editors moderate comments, I would allow noders to spend GP to remove comments from their own writeups and homenodes.
Daylogs and Homenodes
I want to state this first: I would not get rid of daylogs. I would, however, stop pigeonholing them into a MONTH DD, YYYY format. Instead, I would allow any new writeup, with any title, to be marked as a "daylog" (actually I probably wouldn't use that term - See Terminology above). Any writeup marked as a daylog would be featured on a user's homenode. You would be able to navigate through a user's daylogs using 'Next' or 'Prev' links or by using a calendar. Considering that I've already suggested that each node would allow comments, this functionality might sound familiar to you. That's because I'm suggesting that each homenode become a personal blog. Writeups would still be located in their respective e2nodes, but would also be displayable on each writer's homenode allowing a more personal experience for readers enjoying the writings of certain noders. Turning homenodes into blogs would also allow us to use such features as trackbacks and pingbacks which would help promote E2 and connect us with other sites.
I've tried to show above (and there's more below too) that my main concern is improving E2, but if I was the King, I'd have to consider practical issues as well, and that includes paying the bills. If our traffic and userbase increased significantly (I am after all, such a great and benevolent King that it certainly would!), we would need hardware upgrades and/or professional hosting (possibly even a paid staff member or two) to keep the site running. A big part of this would be re-thinking how we show ads and/or make money to keep the site afloat. I'm not suggesting that we fill the pages with ads, but we would need to do more than slap a banner at the top of the page. I know nothing about E2's current finances, but based on my experience with the web, I know if I had a site with as much traffic as E2 already has that it would be making some decent money.
I know this is probably controversial (and I haven't even made up my own mind), but I might consider an opt-in revenue sharing system. Some might think that this will attract all kinds of losers and riff-raff just trying to make a quick buck, but remember that in my system, all submissions by new users would be hidden by default, so most people would quickly learn that they are wasting their time. Those that made it successfully past the initiation and wanted to make a little money through writing... is that really so bad? Isn't that what all your favorite authors do?
Another controversial topic (at least from the founders/coders point of view) is my belief that Perl should not be used for anything more extensive than a few administrative scripts - certainly not a large scale web site like E2. I mean no offense to past and present coders, but I would start from scratch. E2 can apply band-aids and patches, or add a few new features here and there from now through eternity, but I don't think the existing code base can ever take E2 to what it should evolve into - it's just not what Perl was made to do.
So what do I suggest? We'll I have my preferences, but E2 should be built as an n-tier web application. Any modern, structured, organized object oriented programming language would work. Some may say, "But in10se, you can write OO code in Perl!", but they would be wrong. (If you really believe this, then you have a very different idea of 'object oriented' then I do. Feel free to talk to me about any point in this writeup unless you trying to defend Perl - you cannot convert me.) E2 could be coded in Ruby, .NET, or Java (there are, of course several other options) to be more robust, faster, and easier to maintain, and this could be done with less code that was easier to read and understand. We would not need cron jobs or other hacky things in the background to keep things like nodelets up to date, or do nightly calculations for things to work either.
Oh, and let's add another load-balanced database server to speed everything up.
- Create a Terms of Service and mission statement (GASP! You mean say out loud what our expectations and goals are for the site?)
- Allow writeups to be posted under a certain license such as Creative Commons, public domain, all rights reserved (default)
- Incorporate several of the features from my E2 Explorer and E2 Annex into the site
- Have a real navigation bar at the top of the page which included such links as Home, Browse, Create, Chat, About Us, etc.
- Track the edit time(s) on all nodes and who made the edit.
- In addition to allowing votes and C!s on any node, I would also allow softlinking to any node, and from almost any public node. There would be a softlink table on homenodes and superdocs. To limit insulting softlinks on homenodes, I would allow users to spend their daily votes to remove softlinks they didn't want featured in their profiles.
- Use avatars (basically an icon-sized homenode image) anywhere a username is featured (on writeups and in the catbox) to help user identities follow them around the site.
- Allow users to add and remove themselves from (certain) usergroups
- Make Google the default search with the option to do a title-only search if desired
- Re-work the underlying HTML so that better stylesheets could be created.
- Review the HTML tags and HTML attributes allowed in writeups
- Utilize registries more and get rid of things like EMAR, EIMR, all the Everything People Registries, and Who to send presents to, and when.