$Id: TODO,v 1.18 2007-12-25 23:41:43 max Exp $ /** * Final TODO version before I move to the new TODO system. * * */ [ Legend ] *- Bug. @- Possible feature or something I am bugged about constantly. +- New Feature I want to add. !- Current state or general information. === [ YTMND BACK-END RESTRUCTURING ] === [ MONETIZATION ] *- Monetize YTMND !- I have come to the realization that YTMND will never be any sort of cash-cow as long as I don't do some major !-- censoring. I'm basically fine with this but I would like to see YTMND do better in terms of actually making a real !-- profit. There are quite a few ways to do this, but for the sake of having to read 100 pages, I'll make a brief overview here. @- Merchandise !-- !-- Selling shirts and stickers and branded junk is a good way to make income, but it's an incredible amount of work !-- and fairly stressful. Really I need to find a reliable company (keyword company) who will deal with all of it !-- and just let me pay them to do fulfillment, support and order tracking stuff. @- Advertising on www.ytmnd.com !-- !-- The current site layout isn't very advertising friendly, but I am content with the number of ads and don't want !-- to add any more. I think the focus should be on getting better quality (god if I have to hear those dumb emoticon !-- ads one more time I'm going to go postal). @- Advertising on sub-domains. !-- !-- Advertising on sub-domains is currently almost useless and I think I'm just going to remove it to get rid of the immense !-- NSFW/moderation hassles since it makes up a minute amount of YTMND's income. !-- !-- What I would like to do is have site-run ads built into the pre loader, using a system similar to Something Awful !-- Where users can advertise for a flat rate of $10 to advertise whatever they want (such as other YTMNDs, their blogs !-- etc) or $50 if they are actually trying to sell a product. The ad would last for 30 days and I could build a system that !-- allows for specific targeting of certain sites or classifications/keywords of sites. I think this way we can avoid having !-- to look at shit ads and maybe even gain a new creative outlet for people who want to support YTMND. @- Company Sponsored contests !-- !-- It would be nice to have something built into the contest system that would allow companies to say !-- "Make the best razor gator site" and offer prizes for the best sites they choose. !-- We could do some sort of flat rate charge for these contests and it may drum up some extra interest !-- for companies to get people to pay attention to their products and services. @- Affiliate systems !-- !-- I've played with this idea in the past and at some point I'd like to take a more serious look at it. !-- It seems basically impossible to make money from iTunes affiliate stuff unless you are selling on !-- a gigantic scale, and even then it would be pennies. !-- !-- One thing I'd like to do is build an interface for site creators to choose related products from a site !-- like amazon.com and then do a revenue share. This would allow the site to make money as well as YTMND creators !-- and I think the thought of making some dough off YTMNDs would get site creators interested in actually !-- picking relevant products. @- Paid features and useless upgrade shit. !-- !-- While I cringe at the idea of adding stupid $1 gifts or useless upgrades to the site, !-- YTMND could probably get rich by offering $5 user-name color changes and similarly dumb !-- upgrades. So it may be worth coming up with a list of services and offerings that we could !-- charge for. One valid example would be user-name changes which actually require a bit of grunt !-- work for me, so charging $10 wouldn't be such a horrible thing (since I just ignore them for the !-- most part now). === [ SERVER MAINTENANCE ] === [ MEMCACHE ] +- Upgrade all the Memcached servers and PHP modules to take advantage of the plethora of new +- features, like the binary protocol. !- YTMND makes extensive use of Memcache for caching and session load balancing. !-- This is both a blessing and a curse due to my lack of organization and documentation of !-- how and where Memcache is used. +- A script for cold-starting of memcache servers to populate everything the site needs to function properly. +-- Currently I haven't documented what vital stuff needs to be in memcache +-- for the site to function. This is more or less bad design, but mainly due to my restricted +-- budget for hardware. +-- +-- I need to be able to turn off all of the memcache servers, and then run a script that +-- does everything necessary to populate all the content boxes and various other bits so the +-- site doesn't get covered with errors. [ HARDWARE ] +- Buy new disks for the master db server (or move binlogs to backup server). !-- YTMND crashes every few weeks when the Master DB servers disks fill up. +- Buy a Mac Mini with dual boot of OSX 10.4 and 10.5 !-- I am incredibly tired of testing YTMND through VMWare. [ SOFTWARE ] +- Finish backup system. +- Upgrade master and DB slaves to all use the latest stable version of MySQL !-- This is a huge ordeal and will require a good deal of downtime. +- Upgrade apache on all the servers +- Upgrade PHP on any servers that need it. +- Upgrade Lighttpd on the content servers. [ DB MAINTENANCE ] +- Read up on MySQL BLACKHOLE replication to avoid replicating MEMORY +- tables which are a waste of traffic and cause replication hiccups !-- Also maybe have one slave that ignores all DELETES for backup purposes. +- Figure out where views are used and change them if necessary. @-- Rename VIEW tables to _view *- Combine site_view_ into a single table. !- Maybe _today should stay separate. Look into performance implications. @- Finalize user_score stuff or get rid of it totally. *- Make a list of all of the hash tables and make them 100% trigger based. *- Clean up legacy table fields like image/sound from sites, etc. +- Document prediction/sites-server db tables/functions etc. +- Move db changes over to a real DB versioning system similar to what davidc made. +- Create a better hot-backup plan and research backups better for all the dumb MySQL features we use. === [ YTMND GENERAL ] === [ FILE SYSTEM / ASSET MANAGEMENT ] +- Move all user-generated content over to the dupecheck file system (which at this time doesn't exist). +- "56k" option to prevent users from opening huge sites. !-- See #SITE CLASSIFICATIONS @- Add site size information to site profile and possibly sites table @- The ability to attach an asset to a site, such as a full version of an image or song. !-- This will be a pain due to the obvious copyright issues of people posting full songs they didn't make. @- Decide on further asset accountability & logging functions @-- The same functions that would allow use records of who uploaded child pornography to the site @-- would allow the MPAA or RIAA to use them if it ever came to that. Is it worth it? @- The ability to certify/claim you are the original creator of an asset. @-- Possibly add a creative commons license option. !-- We currently track who uploaded each asset when, but this would still be a controversial change. +- Finish working on the "types" setup, add avatars, add flash versions of wavs +-- Maybe do a parent-child type deal, for making thumbnails and flash versions. *- Asset conversion and cleanup *-- There are tons of malformed or incorrect file types in the DB *-- A few sites have managed to use a sound for their image and an image for their sound, etc. @-- Create a script to clean up assets that no longer exist or are used (partially complete) +- Possibly add a preview to the assets page. @-- Redesign asset page to show all the new information about each asset. (and make it look pretty) [ USER PROFILES ] !- See #LISTS !- See #FRIENDS AND ENEMIES CLASSIFICATION @- Real user profiles, same sort of information vBulletin has, with some other good info to create fun @- statistical information from. Age, musical inspirations, location, etc. !-- See #USER SIGNUP @- Discuss the addition of user comments and user ratings (like a myspace (ugh) wall) +- Activity tab +-- Shows varying amounts of information based on the user's privacy settings +-- Would show recent activity such as site viewing, creation, voting, commenting, etc. +- Allow users to group and organize/highlight their own sites. @- Possibly the ability to allow users to view all of their assets or other people's assets. @-- e.g.: I want to see all of ROY4L's sound clips. !-- This is possible with the API example I made, maybe incorporate it into the site? [ SITE PROFILES ] +- Suggest to a friend of some sort. +-- Suggest this site to a friend/group of friends/all friends (or non-friends?) !-- See #FRIENDS AND ENEMIES CLASSIFICATION +- Nominations - Nominate sites for hall of fame, or domain upgrades. +-- For instance, a users visit ytmndlols.ytmnd.com, and notice that lol.ytmnd.com is a horrible site +-- They can nominate it to be moved to lol.ytmnd.com, and if enough people agree it would get the +-- "better" domain. +- Show site and user citations [ PRIVATE MESSAGING ] +- Rewrite the PM system into a class so it can be used all over the site. +- Change the system to use some sort of non-post AJAX or just regular pages. +- Make a smart hash table so that people with thousands of PMs aren't running a 2 second query on every page +- to check if they have new PMs. (also a cron job) *- Blocked users still cause your messages icon to light up. !- See #FRIENDS AND ENEMIES CLASSIFICATION !- Should (replace the PM block function). *- There is some sort of duplicate messages bug. (Back button related or multi post related) !-- Probably disable submit button onsubmit +- Option to email user when they get a new PM. +-- Sub-option to not be spammy and only send 1 email until next login. (or maybe make that default) @- Filters to let you only view new, replied etc. @-- Maybe a simple text subject search filter. +- Auto expiration and trashing of messages. @- XML Export of PMs for users who want to keep their own backups. @- Option to allow other people to see a PM. @-- e.g. Joe sends Bob a PM and if Joe is okay with it, and Bob is okay with it, Bob can send a direct link to the PM @-- to a friend who can view it. @- Attachments or maybe in-line images. +- Rich text following the site rules !- See #YTMND RICH TEXT [ HALL OF FAME REDESIGN ] !- The hall of fame has been filled with garbage for a long time, and sadly was only created !-- as a filter to get stuff off the front page. A total redesign needs to be made, but I need !-- a lot of input from users. +- Group and organize a list of sites with a user-written blurbs. +-- Sites should be significant parts of YTMND history or show exceptional talent/skill/workmanship. !- More on this later. [ SITE AWARDS / USER AWARDS ] +- Add simple benchmark awards for sites that have: +-- Made it to the top viewed in a day/week/month/all time +-- Had X amount of votes +-- Kept a score above X for X days/months/years !- A lot more could be added to this. [ YTMND RICH TEXT ] +- Allow limited rich text in certain areas of the site. +-- Such as in comments, site descriptions and private messages. +- Basic formatting, such as new lines, bold, italics and underline. @- Maybe very limited font sizes. @- Very unlikely but maybe emoticons. +- Extended options similar to what Live journal (I think) has, where you can make links to users or sites. +-- An example would be would link to max's profile. +-- +-- or would link to the site what.ytmnd.com @- Maybe allow very limited offsite linking with some sort of blacklist. @-- and a intermediate page "You are about to leave YTMND", etc. !- See #TEXT FILTERING / CENSORSHIP [ TEXT FILTERING / CENSORSHIP ] !- One of the large problems of running a site with so much user created content is that you encounter !-- a lot of people who want to be trolls and spend a great deal of time figuring out how to cause problems. !-- This means a good deal of my time is spent devoted to both cleaning up after these people and figuring !-- out how to keep the same problems from happening in the future. !-- !-- The basic concept of this feature is to create a single routine that will de-trollify a chunk of text !-- for display on the site. +- Repeating text. +-- Create an algorithm that comes up with pixel width/bounding boxes of specified fonts in order to +-- minimize the damage caused by repeating text. +-- +-- Examples are site titles like "WWWWWWWWWWWWWWWWWWWWWWWWWWWWWW" etc which break fixed-width or stretch +-- dynamic width content areas. Another example would be 2000 new lines in a rich text box. +-- +-- Come up with a list of rules depending on characters or character sets, i.e. limit new lines to no more than 3 in a row +-- or 12 per full text chunk. Limit repeated characters to no more than 10 in a row or repeated phrases to no more than 10 total. +-- of course people will spend the time creating randomizers and spamming shit, but this would be a good start. +- Censorship +-- Come up with more accurate censorship rules and store a copy of "dirty" and "clean" versions of text chunks, so that +-- users who want an uncensored site can see racial slurs and obscenities in their full glory. [ DONATIONS ] +- Make a donation goal CMS and actually update the shit so people know I'm spending the money on hosting +- not drugs. +- Implement the donations by user code I wrote into /browse/ @- "Downations" - the ability to counter sponsor a site. @-- Would allow users to get sites off the front page. [ SESSIONS ] +- Create a session wrapper class. !- We now use memcache for sessions so, load balancing is no longer an issue. *- Figure out YTMNSFW age check issues. *-- Possible cookie bug on new NSFW code I wrote. !-- I get people complaining about once a week, but they all seem to be morons who can't provide me any !-- useful information so I have no idea if this is an actual bug. [ KEYWORDS ] @- Put more keyword info in when users search. +- Add more to keywords interface. +- Limit number of keywords on site creation. +- Allow users to report keyword abusers. +- Keyword live updates, latest popular keywords content box. @- Add popular keywords to a front page content box (already written somewhere on the db server). @- Let users add keywords to sites they don't own. @- Automatic keyword addition to sites (such as usernames) [ USER LOGINS ] @- Maybe do a loose login system like amazon @-- Always logged in, requires a password to do important things like add/delete/edit sites/options? +- Write a new login class, old one is legacy code that needs to be cleaned up or rewritten. !-- I might have done this, I don't remember. [ USER SIGNUP ] +- Rewrite completely. +-- Get more meta data (like age, contact options, sex, etc) +- Make people agree to the TOS *- Completely redo the captcha without sessions/cookies, it's causing too many problems. *-- Also add a timeout to the captcha. !-- Done but still might have some remaining bugs. +- Better IP tracking, like the forums but with a warning system and a decay. @- Something to track signups-per-ip over a certain period and limit too many new accounts coming @- from a single proxy or ip. @- Tor checking +- Require moderator approval on certain problematic IP ranges. +- "Hardcore mode" option. +-- When you sign up, you must make one site, if it gets a rating under 2.5 +-- for a period of 24 hours, your account gets deleted. [ SITE VIEWS ] @- Insert a row on each site view with: (IP, site_id, referring url). @-- CRON job uniqify's views and stores a small amount of referring url data. @-- Figure out a way of doing this without storing massive amounts of data. @-- Maybe show referrers on site profiles. !-- It's possible that storing information on referral URLS for 1 week would be sufficient. *- Change the nightly updates to use batch updates and inserts, it's really dumb to do millions of inserts *- one by one. [ YTMND STORE ] !- Schema started +- Real shopping cart. multiple tables and most likely a separate db. +- Site sponsorship done through store. +- Make a shirt design contest. +- Stickers +- Contact Bliks (whatisblik.com) and ask about some custom YTMND stuff. +- Find the user who made the YTMND corner image thing for his dorm door and +- get permission to sell them [ EMAIL ] +- Inject a unique message ID and then a qmail script to parse the information into a db. +-- This way when all the idiots sign up and they require human white-list interaction it can tell them +-- to fuck themselves when they send 1000 emails to support. +- Create a tracking mechanism for when a user has received an email to keep YTMND from spamming them. +-- To avoid sending multiple alerts/PM notifications between logins. +- Create a CMS to manage blacklisted domains (like all the dumb nospam services) !- Because 95% of the time they are used to make alts. [ SUPPORT AND LEGAL ISSUES ] +- Build something into the new mod panel that gets all the support@ and legal@ e-mail. !-- I really need to deal with legitimate takedown requests much faster. [ CLEAN UP ERRORS AND WARNINGS ] +- Add a global variable for response type based on interface type. +-- So for API returns, we use XML or facebook errors we respond with FBML, or JSON etc. *- Go through remaining error/die messages and convert them over to the new error system. *- Create a mechanism to rate limit error emails since if a DB server crashes, I get *- 15,000 emails in 10 minutes. [ RSS FEEDS ] !- RSS is something that would be extraordinarily easy to add, and would be a great feature. !-- The reason it hasn't been done yet is that 95% of the ad revenue that supports YTMND's !-- hosting is from people going to www.ytmnd.com, i.e.: people use RSS feeds instead and !-- YTMND can't pay for hosting. !-- !-- Until I can figure out a way around this, it would be suicide to RSS up everything. !- See #MONETIZATION @- RSS feeds for each content boxes. @- RSS feeds for alerts !-- See #ALERTS +- In the mean time, make an RSS feed for the news at least. +- Write an RSS class. [ NEWS ] +- Make an Admin CMS for news. +-- With a news-box-width preview system. [ HELP SECTION / FAQ ] +- A help section with common problems and solutions. +-- This should be in the wiki, and since no one has created it will probably never happen until +-- YTMND can pay someone to do it since I am completely unwilling. !-- Also, fuck everyone who claims I'm lazy when you haven't helped out with shit. !-- And a huge thank you to everyone who has been helpful either through communicating or !-- editing the wiki. [ SITE AND NEWS COMMENTS ] +- Rewrite to use shared code base. +- Add a third nesting level. +- Come up with a way to provide immutable links to comments, independent of paging options etc. @- Change the blue gradient to a more usable system. @-- One method would be to have a small text version that says "12 minutes ago..." or something. @- Maybe mark a last-seen time for news pages so you can quickly gauge which comments are new. @-- Possibly do it for sites if it isn't too harsh on the DB. [ CONTENT BOXES / ALGORITHMS THAT NEED WRITING ] +- Sites that are older than 1 week but have less than 10 votes. (Unknown YTMNDs?) @- Add a rules feature that can apply date (or other) constraints on content boxes. @-- Hide most viewed daily between midnight and 2am. @-- Only show Holiday YTMNDs in December @-- Make NSFW/Non-NSFW versions of content boxes. !- See #ALERTS !- See #GROUPS [ LISTS ] *- Remove all of the user watch list stuff from lists, functionality should be moved to #ALERTS !- The lists back end is complete with basic functionality. !- !- It currently supports the user favorites but is much more powerful. !- It also supports custom made user lists: !- e.g.: Get to know NEDM or Worst of What is Love? or Inkdrinker Approved etc. !- As well as lists managed by multiple people (group lists, such as moderator favorites) +- Ability to add more than one note per item per user. +- Write interface for custom made lists. +- Write interface for list permissions/group permissions. +- Write interface+functions for ordering. +- Add subgroup-grouping, like folders/files. +- List ratings, etc. @- Maybe a global fads list and let people take over maintaining a fad list. (ugh) !-- The back end is sort of there, but the functions aren't in the class. [ SITES ] +- Build a protection mechanism to keep sites from being accidentally deleted +-- (especially useful for hall of fame). (this could be done with cascading restrictions) !-- Implemented with cascading restrictions recently. It might be worth further discussion !-- to allow users to protect sites, or even to auto-protect front page or high traffic sites !-- from editing. !-- !-- See #PERMISSION SYSTEM +- Expand amount of text allowed for origins and description, not sure if this needs to be done in +- the db or code or both. !-- Description should really be large and allow #YTMND RICH TEXT @- Add a "PRIVATE" option. Won't show up in searches, keywords, front page, random etc. @- New text styles. @-- Back in the days before YTMND, when I made YTMND spoofs, I used different text cascade @-- algorithms. For instance, text that starts at the bottom and cascades up, or originating @-- from the center. @-- !--- One issue with this is the complexity of writing the image text algorithms was bad enough !--- Adding more complexity won't be very fun in terms of recreating text tweening, boundary box !--- math and emulating text alignment with GD or the like. @- Anonymous site authoring @-- The ability to create a new site and hide your identity for ~3 hours after the site is made. @-- The site/profile will not show your user name until the site is 3 hours old. @-- Additionally the site will only show up in your profile for you and your friends. !-- See #FRIENDS AND ENEMIES CLASSIFICATION [ SITE TEMPLATE ] @- Consider making a full site template version in flash that can be embedded anywhere. @- Allow users to decide what information is shown on the info-bar. +- Complete rewrite of sound code. Needs to be a lot smarter and take into account user preferences. +-- For instance, allowing the use of media player on firefox, which would solve a lot of sound woes. +-- Make a sound discovery javascript routine. !-- Would be a non issue if sound was moved over to flash. !-- !-- See #SOUND PLAYER CODE [ SOUND PLAYER CODE ] +- Make a new sound player. !- The code responsible for playing sound is extreme legacy and sound issues have plagued the site !-- since the beginning. !- !- BACKGROUND INFORMATION !-- !-- Currently the code is extremely simple, and to summarize it, when we detect a user using IE !-- we use the BGSOUND tag which is IE specific but works pretty much exactly how we want. !-- On windows machines, BGSOUND uses Media Player, which so far seems to deal with looping just fine. !-- !-- On macintosh machines we use the EMBED tag which seems to work in Safari and Mac IE, !-- although not having a mac to test with, I have absolutely no clue what happens beyond that. !-- !-- In all other cases we use the OBJECT tag, which is primarily for Firefox. !-- For some reason, the Media Player ActiveX plugin for Firefox doesn't acknowledge that it can play !-- sound files, for this reason Quicktime has become the default plugin for Firefox users, so they !-- are basically at the mercy of Apple. Despite Apple constantly tooting it's own horn about gapless !-- playback in iTunes, looping sounds in Quicktime through Firefox tends to be a terrible ordeal !-- with random results. In some cases sounds don't play properly more than once. !- Problem 1: !-- Playing sound through a web page is platform dependant and requires us to play sound differently !-- for different users/browsers/operating systems/software installations. !- Problem 2: !-- A lot of programs have poor or no support for gapless playback, which is vital for a huge number of !-- YTMNDs. Removing the need for gapless playback would make the whole thing almost a non-issue, but I !-- feel it's of great importance that we can have YTMNDs that loop and have no apparent beginning or end. !- Problem 3: !-- Due to the format of compressed sound codecs (such as MP3), gapless playback is extremely challenging !-- and in most cases a player-side "hack". Due to this, uncompressed (WAV) files are used, wasting !-- immense amounts of bandwidth. !- Problem 4: !-- Sound codecs and wrappers are very loose (and sloppy), as such, the actual formats of the millions of files !-- on YTMND vary greatly, making it extremely difficult to make a "catch all" conversion process that won't !-- mutilate a large number of sound files. !-- See http://lame.sourceforge.net/tech-FAQ.txt for more information. !- Solution 1 (the ideal): !-- Use Flash for playing all sound files. !-- !--- This would require one of two things to happen: !--- 1) Macromedia/Adobe to stop being stubborn pricks and allow flash to remotely load in wav files. !--- 2) Convert every WAV file into an MP3 or SWF that can loop gaplessly. !--- (which from doing a great deal of testing over the years would be an incredible amount of work) !- Solution 2 (more likely at this point in time): !-- Create a special page where a user can view a sample YTMND with multiple different sound player codes !-- on it and then they can choose which is best. !- It is currently possible to play sounds through Windows Media Player in Firefox !-- and at this point in time, Media Player seems to do a much better job of it. !-- For more info see the IE Media Mimic Greasemonkey script for firefox at: !-- http://homepage.ntlworld.com/vectorspace/greasemonkey/#mimic !- Another possible solution is to find and pay someone who is seriously knowledgeable in this area to figure !-- out the best plan of action. This is something that I feel is really holding the site back, so it would !-- be worth it. !--- Sadly YTMND doesn't draw a very technical audience, so I have no idea where to look for this. [ STANDARDIZED SITE LINK DISPLAY ] @- Possibly make icons for the site link function that show sites that are ws/nsfw and sites that are in the HOF. @- Or currently on up and coming, etc. !- See #SITE AWARDS / USER AWARDS !- Going further with the historical data, it would be possible to do a Newgrounds type system (i think it's NG) !-- Or some mixture of Alexa/Google Zeitgeist feature that would allow you to see the full history of a site !-- With graphs showing views, when a site was on the top viewed, what place it was, score, etc. !--- I did a simple example of this for the API examples !- See #YTMND RICH TEXT [ STANDARDIZED USER LINK DISPLAY / USER LINK COLORS ] +- In rich text, we need an icon of some sort to show we are linking to a user. +- User Color additions: +-- For friends/enemies/idols. +-- Different syntaxes for pages. !-- Need a better method of dealing with colors that is more geared to server-performance. [ YTNNSFW ] +- Enable NSFW warning option +-- Enable spammier "unknown" warning option. +-- Only force users leveled 0 and 2 (with the option set) to go to YTMNSFW.com. @--- Otherwise let logged in users (over the age of 18?) see NSFW content on YTMND.com +--- Default to warning on. !-- See #LOCATION SETTINGS [ LOCATION SETTINGS ] @- Add the ability to have multiple viewing locations which you can change between quickly. @-- For instance, you could have a "Work" location, where NSFW sites are automatically filtered out @-- and sites with an unknown status give you a quick prompt when you try to view them. @-- "Home" location could filter nothing, etc @- Also maybe an "oh shit" hotkey which would change your screen into a spreadsheet or something. !- See #SITE CLASSIFICATIONS [ SITE CLASSIFICATIONS ] +- Maybe something that users could add to sites (not necessarily site owners, but everyone) +-- To classify sites with various flags such as CONTAINS NUDITY, IS LOUD, IS DISTURBING etc +-- to allow people to filter out sites they don't like. !-- "IS LARGE" could be a classification given automatically. [ FRIENDS AND ENEMIES CLASSIFICATION ] +- Users can set other users to be: their idol, their friend, their enemy or their troll. +- Users who you idolize will: +-- Automatically have their favorites added to your alerts. (or highlighted site links) +-- Automatically have their new sites added to your alerts. (or highlighted site links) +-- Automatically have their comments added to your alerts. +- Users who you befriend will: +-- Automatically have their new sites added to your alerts. !-- Friends have to be mutual relationships, so if a friend ignores or denies your friendship, !-- that user will automatically become someone you idolize. +- Users who you declare as your enemy will: +-- Automatically be filtered from your front page. +-- Not be able to comment or vote on your sites. +- Users who you declare as a troll will: +-- Automatically be filtered from your front page. +-- Not be able to comment or vote on your sites. +-- Automatically have their comments hidden from you. +- New User Profile Tab will list your idols, friends, enemies and trolls. +-- Each relationship will be shown both ways (e.g. if Ted is friends with bob and +-- bob is friends with Ted it will be shown on the page as a mutual relationship) +- You will be able to change a user's classification on their profile page or your profile tab. @- Maybe a few new tabs on the user list page that shows who has the most friends/enemies etc. !- See #ALERTS @- Stalk mode: show what they're up to if there are entries in the spy_log. @- Maybe user definable groups to group your friends in different ways [ USER COLLABORATION ] +- An area of the site where you can upload a sound or image and make requests for someone +- to come up with the other half of the equation. +-- Some sort of commenting mechanism. @- Think of some clever way to deal with user collaborations on profile pages. [ GROUPS ] +- User groups @- Any user can create up to five groups and be a member of up to 25. @- Member post board of some sort. @-- Extremely simple forum thing. @- Group favorites/site lists/recommendations dealy. @-- Maybe extend these into group-managed content boxes. @- Group news page. @- Public and Private group types. @- Group authored sites? (oh my!) @-- Or some mechanism for assets to be passed around to the entire group. [ ALERTS ] +- Allow users to set an alerts on site titles, keywords, origins, or specific asset ids !- Alerts run once every 15 minutes, and your alerts list can not exceed 100 items. !- Alert items have an expiration date of 30 days (e.g. alerts will last for 30 days or !- when they get bumped off a list of 100. !-- Needs a checking mechanism which does a search to check for returned results. !-- Otherwise idiots will add alerts on stuff like "a" and receive 1000 alerts an hour. +- Option to Automagicly alert you when your friends/groups have made new sites. +-- Or just a list. @- Hooks into #FRIENDS AND ENEMIES CLASSIFICATION @- Some sort of a customizable alert content box like a facebook mini-feed. @- Alerts page, PM option maybe? @- Summarization of alerts. @-- For instance, when five of your friends all vote on a site, it could be summarized on your alerts as: @-- x,y,z all voted high on [ FLASH PRELOADER ] +- Make option for resynch every X loops. +- Build in advertising options. +-- Allow people to buy advertising built into the preloader. !-- See #MONETIZATION !- Hammering out the bugs will allow us to make it an option to play all MP3s through flash. !-- See #SOUND PLAYER CODE !- The more I think about this, the more I want to convert the entire site over to PHPTurbine !-- and do it all through flash. Too bad it's 32 bit only. !- Figure out if AS 3.0 makes any of this easier. [ VOTING / VOTEBARS ] +- Get the votebar image script into CVS. +- Finish the bot-catching mechanism. +-- Uses pre-set voting algorithms based on IP/time/vote/referrer and automatically shows the +-- user a captcha. If the user fails the captcha in X seconds, user gets added to a potential +-- bot list for moderator review. +- Hammer out any remaining bugs !-- Safari issues fixed, auth bug should be fixed for the most part (maybe up auth to last longer if !-- people complain) === [ ADMIN SYSTEM / NEW MODERATION SYSTEM ] === [ RULES / MODERATION GUIDELINES / GLOBAL POLICY ] !- YTMND was not originally created as a social or community site and despite my endless disdain towards !-- social sites, it has become extremely community-centric. Due to this, moderation has always been one of !-- the most controversial and stressful issues. !-- !-- I wont go into the entire history in this document, but the major problem with moderation is that it has !-- never been defined in a way that isn't confusing at least and insane at worst. !- There are two main facets to moderation: !-- !-- 1) Making sure ads don't show up on sites that have content that breaks an advertiser's terms of service. !--- !--- I'll be the first to admit this has been a large problem and has caused a great deal of unnecessary work !--- and confusion. Originally the NSFW option was used to define where ads would show up or be hidden. This !--- should have been an interim solution. While NSFW is a fairly loose term, sites were being moderated as !--- NSFW when they most likely weren't but moderation rules defined them as being so. !--- !--- For instance, in most cases "nigga stole my bike" is fairly safe to look at while at work. Advertisers !--- don't want to be associated with racism in the slightest and it isn't hard to see "nigga stole my bike" !--- as being racist. This caused us to unfairly moderate a lot of sites incorrectly just to keep advertisers !--- happy. Hopefully this issue will resolve itself by removing generic ads from sub-domains. !-- !-- 2) Dealing with the social issues that have arisen on a site that wasn't originally designed to be social platform. !--- !--- I have always avoided making any serious set of rules that I wanted to enforce to the "T", but I think it's time !--- to open a serious dialogue as to what types of behavior should be acceptable and what should be grounds for !--- punishment. !--- !--- While it's hard for a lot of YTMND users to take this sort of thing seriously at all, I think it is really !--- important to define socially acceptable behavior. I know a lot of users are always up in arms about the lack !--- of moderation, but there has never been a serious discussion as to what should be punishable and what shouldn't. !--- !--- I think it is key to come up with a set of rules that will be enforced under any circumstances. This is one !--- of the places where running an entire site by yourself gets really hard. I am not a big fan of "policy" but !--- in order for the site to continue to exist, there needs to be some vague semblance of law and order !--- (and not clips from the television show). !--- !--- What needs to happen is a group of dedicated users need to get together and analyze common behaviors across !--- the site and decide what should be shunned and what should be rewarded. Until we come up with that clear, !--- policy, moderation will be moot and fail overall. +- Create a list of punishable behaviors and reasonable punishment ranges for each. !- !-- I will try to create a list of common behaviors for the reader to process in an effort to !-- describe what sort of behaviors need to be examined in order to create a policy that will !-- represent a middle ground between maintaining a semblance of freedom and throttling or silencing !-- users who are causing harm to the community as a whole. !-- *- Spamming !--- Creating large numbers of duplicate sites or sites with no real effort. !--- Creating large numbers of duplicate or unnecessary comments. !--- Sending large numbers of unwanted private messages. !-- *- Obscenity, Racism and shock value. !--- Using an unnecessary amount of obscenities in comments, site titles, etc. !--- Being racist for shock value or with a complete lack of humor or tact. !--- Being racist while maintaining tact or being racist solely for humor or to open a dialogue. !--- Making comments or sites that contain nothing but obscenity or racism. !--- Shock images, scat porn, vomit, etc. !--- !--- Creating to or linking sites or comments glorifying generally illegal actions. !---- -Such as burning, mutilating, torturing animals. !---- -Having sex with young children, or making references to doing so. !---- -Rallying invasions/attacks on other sites, users, people, companies, religions etc. *- Voting Trends !--- Voting everything as 1 star. (downvoting) !--- Voting everything as 5 stars. (upvoting) !--- Revenge or compensatory voting (downvoting a user's site(s) when they've give your site a low score or a comment !---- you find spiteful, or upvoting a user's site(s) in exchange for them voting your site highly). !--- Voting based on the user who created a site/comment versus the content of the site/comment. !--- Down or up voting of every comment on a news post or site profile *- User Moderation Abuse !--- Incorrectly claiming a site you've created is "Safe for work" !--- Incorrectly voting that a site another user has created is NSFW or vice versa. !--- Voting comments of users you don't like down, or vice versa. *- Use of alternate accounts !--- Using alternate accounts to unfairly further your status of your sites/comments/etc. !--- Using alternate accounts to unfairly ruin the status of other users either out of spite or to get ahead. !--- Using alternate accounts to spam or troll. *- Meta Data !--- Knowingly putting incorrect image/sound origins into your site. !--- Using fake or throw-away email addresses at signup. !--- Using irrelevant or misleading keywords on a site. !--- Stealing content from another user/YTMND/website without properly crediting them. *- Trying not to get caught. !--- Editing sites once suspicion is aroused in order to avoid punishment. !--- Creating alternate accounts to temporarily upvote/downvote and then deleting them *- Unwanted/Controversial content !--- Posting of personal content you are not authorized to post (such as personal information, private photos, etc). !--- Continuously posting controversial material for no other reason than to be annoying or push propaganda. !---- Religious YTMNDS, "Ebaumsworld sucks", "Black people are animals" etc. *- Grouping up to push an agenda. !--- Grouping together with other users to upvote/downvote sites/comments/etc. !--- Spamming the recently created with sites that all follow a similar theme. *- General use of pornography !--- Creating sites that lack any underlying theme beyond "here are some naked girls, 5 this!" !--- Extensive use of pornography or pornographic themes. *- Just generally being a dumb idiot !--- Making a new YTMND every time YTMND goes down for 15 minutes or gets an error. !--- Making immature, unconstructive, defamatory sites/comments. !--- Generally having nothing to offer to the site beyond you being a dimwit. !--- Making sites about moderators/administrators just to be a nuisance !--- Calling Max a kike, etc. *- Miscellaneous !--- Creating a site and then changing the content completely once it gets highlighted on the front page. !--- Consistently editing the title of a site that is on the front page in order to draw more traffic. !--- Using or creating bots for any reason. [ ADMIN PANEL ACCESS CONTROL ] +- Require IP checking option for moderators and above. @- Possibly require a forced password change every XX days for moderators and above. +- Add user level "jr admin" +-- Figure out what access these users should get. [ MODERATION QUEUES ] !- Site moderation queues are lower priority at this point. !-- If we actually go through with removing ads from the sub-domains, a lot of the site moderation !-- "rush becomes moot. So the focus would be on dealing with user issues with a background focus of !-- slowly working through the entire site queue. *- Deletion requests should act like kills used to. +- "Moderation mode" +-- The old mod system automatically redirected to the next site in the moderation queue, basically to +-- infinity, allowing you to skip a single site. +-- I want to add a small box to the already gigantic remote mod panel that has the following options: +-- [ ] Moderation Mode !-- This would keep the moderation panel open and automatically redirect to the next site after a moderation !-- action was performed. +-- ( ) Moderate out of my personal queue +-- ( ) Moderate out of my group's queue +-- ( ) Moderate out the global queue !-- This would need some sort of skip setup that actually works in comparison to the way it used to work (or not work) !-- !-- This was partially completed. +- Moderation Queuing Prioritization System !-- completed, but somewhat problematic due to the sheer number of updates that happen every so often. [ IMMUTABLE DELETES / RESTORING FROM BACKUP ] !- One of the reasons moderators have never been able to delete without administrator approval is that !- deletes are basically final, it is extremely hard if not impossible in some cases to restore from a !- user or site from a backup. !-- !-- There are a couple solutions that I think may actually be viable, although both of them would require a !-- good deal of work. @- Solution 1 @-- Create a MySQL slave that ignores all DELETE queries. @-- This would give us a backup DB that we could query whenever we needed to restore something. @-- Some problems with this solution are: @--- 1) It's a waste of a DB server. @--- 2) It would require me to write a fairly database-centric restore-from-backup script @--- that would take good deal of time to write and test. @--- 3) If user "bob" gets deleted, and we decided we need to restore his account, but someone else @--- has made a new account under "bob" what do we do? (same with site domains) @--- 4) Scripting would have to be extremely thorough in order to function properly. A massive amount @--- of links to sites, comments, votes etc. @- Solution 2 @-- Update a large number of the tables on the site with a `deleted` enum('n','y') flag. @-- Change a large portion of the code base to filter based on the deleted flag. @-- Create a deletion log of what was deleted when, and then use a grace period of 30 (?) days @-- before the site/user/etc is permanently deleted. @-- @-- While this would be a lot more work, I think it will be more useful and logical in the long run. @-- It would also allow use to "make examples" of users who get banned for misbehaving by having @-- a not on their profiles/comments/etc. @-- @-- Some issues with this solution include damage not being cleaned up for 30 days. @-- For instance if we delete 10 users it should change the score of a site they all voted on drastically. @-- We would need a system where a mod could specify that a user's votes or comments or certain sites @-- be hard deleted faster. !- A policy needs to be defined regarding personal information/private images. !-- I think in the majority of the cases I've seen, an instant permanent delete is reasonable. [ GLOBAL PERMISSIONS ] +- Add a permission system that would be ingrained throughout the site. !- Permission Applicable to Time periods !-- !--cant_modify site_id, all_sites X [hours|days|months], forever !--cant_create X [hours|days|months], forever !--cant_site_comment site_id, all_sites X [hours|days|months], forever !--cant_news_comment news_id, all_news X [hours|days|months], forever !--cant_vote site_id, user_id, all_sites X [hours|days|months], forever !--cant_ws_vote site_id, user_id, all_sites X [hours|days|months], forever !--cant_favorite site_id, user_id, all_sites X [hours|days|months], forever !--cant_receive_votes site_id, all_sites X [hours|days|months], forever !--cant_receive_comments site_id, all_sites X [hours|days|months], forever !--mod_approval_sites all_sites X [hours|days|months], forever !--cant_pm user_id, all_users X [hours|days|months], forever !--cant_receive_pms n/a X [hours|days|months], forever !--cant_login n/a X [hours|days|months], forever !--comment_vote? @- New users would automatically lose some privileges temporarily while they get a feel for the site. @-- For instance, new users wouldn't be allowed to: @-- Create a site for 72 hours. @-- Vote or Comment on sites for 24 hours @-- etc. @- Hall of Fame sites could get a cant_modify flag. @- Possibly a list of troublesome IP addresses that would require mod_approval for account @- creation. !- Permissions are the basis of punishments. Depending on what rule a user breaks, !- the permissions system will allow moderators to punish accordingly. [ PUNISHMENTS ] !- See #RULES / MODERATION GUIDELINES / GLOBAL POLICY +- Create a list of default punishments for common misbehaviors. +-- This would allow for pre-populating and quick moderation. @- Punishments would have optional expirations. @- Maybe a public/private punishment option. @-- So if we punish a user for making a stupid comment, it would be appended with @-- "User was for this comment." in red, SA style. @- There needs to be an option to force the hiding or deletion of whatever was cause for the punishment. @-- So if a user makes a comment with the n-word 20 times, we can delete it by punishing them. [ WARNINGS ] !- Warnings were originally the precursor to punishments. !-- I am thinking about doing away with them though because it seems like your first !-- punishment should serve as a warning, and a warning system seems like extra bureaucracy. [ MODERATION MONITORING ] @- Ability to assign a "mentor" to moderators or super moderators. @-- Would allow the mentor to monitor and view all of the people they are in charge of. @-- As sort of a step above peer watchdogs. User profile would show all of the user's moderation actions. @- Maybe some nifty graphs of moderator activity. @-- Tons of information to pull from. @- Some sort of algorithm that figures out when mods are going against the majority vote a lot. [ LOGGING ] +- Site moderation log. !- Created, needs filters and searching. +- User moderation log. !-- Needs filters and searching. +- Moderator access logs. !-- Needs filters and searching. [ USER/SITE DELETION QUEUE ] @- Need ability to ban and put an account on hold (for stuff like child pornography, repeat abusive users) @-- Needs options on front end in login, common, site profiles, user profiles etc. *- Run the deletion queues on cron. *-- Once the permanent deletion problem is solved, we can actually delete people without too much worry. !-- See #IMMUTABLE DELETES / RESTORING FROM BACKUP [ REPORTED USERS ] @- Not even sure if I should add this feature because I know how spammy it will be, people cry every time they get @- a fucking one vote. [ IP BAN SYSTEM ] +- Needs to be written. +- Needs a white-list for AOL proxy type crap. !- Probably the same system as the blacklist for troublesome ips or mod approval. [ AUTOMATIC SITE MODERATION ] +- Create a set of rules that will allow sites to be automatically moderated based on a few simple pieces of +- criteria. +-- +-- One example would be sites with high-level obscenities in the title or text. +-- Another would be based on asset usage. !- A good deal of asset rules could be created based on past moderator experience. [ ASSET MODERATION SYSTEM ] +- Allow super mods to mark an asset NSFW or WS which will retroactively and proactively "auto moderate" +-- Possibly require either an admin approval or a system that requires retroactive NSFW markings on the +-- image from the site_moderation_log to figure out if it's a reasonable request. !-- !-- SEE #AUTOMATIC SITE MODERATION @- Maybe even attach a field to the asset table that gives it an NSFW rating. @- Possibly a flag to mark an asset illegal, for animal torture, kiddy porn or serious copyright issues. @-- Would fire off notifications to mods somehow if a user is uploading illegal content. [ ISSUE TRACKING ] @- Some sort of tracking system that would allow grouping of users, deletion requests, sites, @-- log entries, assets, basically every aspect of the site into a history of actions, comments from @-- mods etc. !- This is a huge amount of work that may never see the light of day. === [ HAIR BRAINED SCHEMES ] === [ REVIEWS SECTION ] !- Ever since YTMND got big, I've literally been getting daily invites to movie screenings, !-- Release parties in NYC and Hollywood and a number of people asking me to do product reviews. !-- Since it's obvious I'm never going to get rich off YTMND, I might as well milk it and start !-- taking people up on these offers. !-- At the same time I know I don't have the willpower to keep up and maintain any sort of consistent !-- review rate. So maybe come up with some sort of simple review system for movies/music/hardware/software !-- and let users take advantage for some of this stuff. [ SPY / REAL-TIME USER TRACKING ] @- Possibly add a really spammy searches option (at least 5-8 searches a second) @-- Maybe make a separate "search spy" @- Possibly add a URL to user-tracking to allow people to see what users are looking at @-- or doing. (Would require some sort of hard coded logic to tell if people are making @-- a site, etc) [ WEIGHTED VOTING ] !- Discussion moved here: http://wiki.ytmnd.com/Weighted_Voting [ FORUMS ] !- VBulletin is shit, from the looks of it they have no plan to ever support LDAP or anything like it. !- So, I give up investing any real amount of time into it. [ SITE DELETION SYSTEM ] !- I still think a decaying deletion system is necessary to tide the crapflood of shit YTMNDs filling up the database. !-- Try to find someone who is willing to discuss this further.