The source of these suggestions are the answers to a mid-term examination question:
"... identify three usability problems with Friendster and write instructions to their programmers on how to fix them."Below are some of our favorite suggestions from among the students.
-- 6.171 Mid-term
From Matthew Drake:The Difficulty of Finding 'Close Friends'. This problem is concerning the difficulty of using the Friendster service to find close friends i.e. people that are no longer than 2 or 3 links away from you in a chain of friends registered with the Friendster service. It is very difficult to get an answer to the question: 'Who are all the people in my personal network that I am connected to through no more than 2 other people?' [...] POTENTIAL NEGATIVE EFFECTS ON USER EXPERIENCE: * Users may become bored of the Friendster service, because as they use the search tools to search for people with common interests etc., they keep getting results of people who are many links away from them, whom they may never want to take the time to reach out to. * Users become frustrated by having to visit many profiles to collect simple information about their group of immediate friends. * Users start getting bothered by people far outside their network of friends e.g. people from different parts of the world who happen to know some distant other friend. In some ways it is neat that people can be brought together this way, in other ways it is not beneficial, and users may become more weary and provide more sparse and possibly false profile information. POSSIBLE SOLUTIONS: * Integrate a 'Show me friends no more than x people away from me' field into the Gallery search of the user's personal network. This way the user can specify x (via a select box for example) and choose whether to find only close friends, or distant friends also. RESULT OF IMPROVEMENT/PROBLEM CORRECTION: * Users may use the Friendster service more consistently to keep track of their close friends. * Users may provide more accurate profile information without fear of being contacted by total strangers. * Users can easily find information and other friends who are more relevant to them personally. Users spend less time filtering out people that are too distant from them in the network, and spend more time messaging people and building up their profiles.
From Jason Goggin:Speed - The site is unbelievably slow, and this is a huge usability problem in my mind. Page load times are between 30 seconds and a minute depending on the page. I could speed page loads up to five or ten seconds by turning off images - if the site has a speed problem, they could solve a lot of it by providing an option somewhere to disable images, or include fewer images. (For instance, when they show each person/s list of friends, we don't need a picture beside each one.) This would, apparently, improve speed a lot, and if most people had settings like this, I bet server speed would speed up a lot, since right now a lot of it is going towards hosting images probably.
From Jeff Bartelma:When I search my personal network I can only search by first name. There are no advanced fields to cut down the search, even if after my initial search I am returned thousands of results. Also, the results are not paginated. I had to wait a few minutes while the results of my search for 'ben' in my personal network were displayed on the single page. In addition to this, the only information which was displayed about each person found by the search was their photo (if available), a link to their home page, something telling me if they were already my friend or not and their first name. Besides the picture there was no new information displayed without having to make another click. Ideas for improvement: Allow for advanced search. Odds are I don't want to search my personal network for someone with a specific first name, I probably want to know if there is someone connected to me who has the same interests as me. Once this is set up, show the advanced search information requested along with the picture so I can tell if this person is interesting before I make another click. Lastly, set up pagination showing the best matching results first. I don't want to have to scroll forever to get through all of the results. I just want the ones that best fit what I asked for.
More from Jeff Bartelma:PROBLEM: Unexplainable inconsistency in the interface, with respect to the order in which one chooses an action to perform and an entity to perform it on. Conventional UI wisdom holds that users should first pick an entity to apply an action to, then choose an action to apply to it. At times Friendster follows this guideline when it's particularly unintuitive, and ignores the guideline when it would be more intuitive to follow it. Most actions you can take on a particular user (Suggest a Match, Add to Bookmarks, Forward to Friend) are available by visiting that user's profile. This is consistent with the general UI guideline given above. However, some actions one might reasonably expect to be present there, aren't. For example, there is no link to remove him from your friends. In order to delete a friend you must go to your own home page, select the ACTION Edit Friends, and then select the OBJECT of the Delete Friend action. This only saves clicks if you're deleting many friends at once (hopefully, this is not a very common operation!). Conversely at other times it would be most intuitive not to stick so doggedly to this rule. For example, it's baffling that there is absolutely no way to SEND a personal message from the "Message Center". (You must visit her profile page and click "Send a message".) SUGGESTED SOLUTION: Both these cases are simple to fix. Simply have a Delete User link appear when you are visiting a friend's profile, and link up the message submission machinery to the Message Center.
From Edmond Lau:-It's possible to send multiple copies of messages and multiple invitation emails by hitting the reload button on e.g. www.friendster.com/sendinvite. It shouldn't be possible to reach this POST form via the back button anyway; rather, following the post action the user should be forwarded with a 302 to a page with no side effects. -Putting quotation marks around book, album or TV show titles breaks their formatting as links in the profile (produces blank entries). -When changing account settings, if an error occurs when processing the form, all your work is lost.
From Howard Chou:Under the current gallery search service, there is no mechanism for Jane Doe to search for other members of Friendster in a specific geographic location. The current search options only allow searches for individuals that live within the same state or that live within x number of miles of the Jane. This means that if Jane currently is an MIT student from San Francisco and entered in 02139 as her zip code, there is no easy way for her to use Friendster to reach old acquaintances, friends, or meet new people from the west coast. Her only options would be to limit her search options to all people in the US and then browse the thousands of hits for someone from San Francisco. Along the same lines, there is currently no way for James Lee in Boston to search for a user outside of the country, say in Canada or in China. Clearly, this problem can be fixed since the necessary geographic information is already submitted by users upon registration and such filtering by state or by country is supported under the current data model. To remedy the problem, add two extra drop down menus that further filter the data based on state and country. Since Friendster already uses a table to map zip codes to locations, they can reuse this in their search engine filter.
From Alex Vandiver:This concerns Friendster's tools to help people communicate and keep track of one another; in particular, the private message and bookmark tools. Firstly, anyone within my personal network can send harassing messages to me, even those who are two, three, or four hops away whom I might not know about. I could flag the person for review, which probably won't do anything, or I can delete the friends who are connecting me to that person. By removing my own friends, I would alienate myself and lose one or more hubs in my personal network; consquently, I would lose contact with hundreds of other users on Friendster. Therefore, I am left in a dilemma, because Friendster is only fun once you have a big personal network and I don't want to remove my friends, but I don't like to be harassed either. Furthermore, for a popular user who gets many messages and never deletes them, it would be useful to be able to sort messages by the sender or subject, not just by date received. Secondly, having bookmarks of users without some way to annotate, organize, and sort them is not very useful, becuase a couple of days from now, I might not remember why I bookmarked the particular user in the first place. What's needed to remove these flaws is very simple. Allow users to block other users or drop users in their personal network. who are not their first degree friends. Therefore, I can pick and choose people who can contact me and once I am harassed, I can make sure the same person does not harass me again by removing him from my network and blocking him. Being able to sort personal messages by parameters other than date would make the tool more useful and should not be difficult to implement. For users who use email, being able to sort messages by every email parameter has become the norm, so why bother to provide something that does less. Similarly, bookmarks can be improved by allowing annotations to be added at the very least. Being able to categorize and sort bookmarks would also be useful, becuase like personal messages, bookmarks is not a new concept. Users may already have assumptions about what bookmarks should be able do and used for. In this case, every browser allows users to bookmark pages as well as annotate the bookmarks and organize them into folders and subfolders. Similar to emails, why bother providing something that does less.
From Josh Weaver:I found it annoying that one had to go to different places to add a friend that was already in the database versus one that wasn't. Additionally, the phrase "gallery" did not connote "friends network" to me. This is mostly a cosmetic fix; some additional code might be needed to provide a "Don't see who you're looking for? Invite them!" link. The user sometimes loses sense of their context. For example, when "viewing photos" of someone, it is impossible to get back to their user information page without using the back button. Keeping some context from the user information page would be good. Their HTML is also very .. special. To quote the top few lines: <html> <head> <link REL="SHORTCUT ICON" HREF="http://photos.friendster.com/images/friendster.ico"> <link href="http://photos.friendster.com/css/friendster.css" rel="stylesheet" type="text/css"> <table align=center width="95%" cellpadding=4 cellspacing=0> <tr> <td bgcolor="#E0E0E0"> <table width="100%" cellpadding=3 cellspacing=0> Yes, they're not even to the body of the web page, and they're already using a table. If that ain't special, I don't know what is. The solution to this problem is to not suck at generating HTML.
From Amerson Li:When I first logged into Friendster, I immediately went to the "Invite friends" link and emailed requests to people I knew were already using friendster. After the second email saying essentially "use the 'ask to be my friend' button, Dummy!", I realized that there must be a different mechanism of adding friends. I found it, under home --> gallery search --> Add Friend, which really needs to be moved into a more obvious place! In addition, a search could be run on email address invites to suggest the "add friend" interface to new users trying to email people already in friendster.
From Matt Wilkerson:Server speed is rather slow. This must be because of the great number of hits on the server. Sometimes, after I've read/replied to a message, it still appears on "Home" as having been unread. Also, whilst approving a testimonial, sometimes it doesn't move the testimonial into the "approved" section until I refresh about 5 mins later. These could be bugs? A possible fix, other than spending money buying faster machines is to provide a "low intensity" option for the site during peak hours of usage. This low intensity option could feature the following: - do not display pictures of "old friends", only display pictures of friends that were newly added - display bulletin board message / personal messages that date back a week, do not display all of them unless requested. - implement some kind of paging for testimonials on a users-profile page, sorted in order of recency.
From Sebastian Ortiz:Combine "Personal Messages" and the "Bulletin Board." Even after spending a few minutes playing with testimonials, personal messages, and the bulletin board, Iím confused with some of the differences. The most obvious of the three seems to be testimonials with the purpose of giving "user reviews" in a sense. Personal messages and bulletin boards appear to share some properties. I can tell that personal messages are sent directly to another user. After testing the service a while longer, I realized that bulletin board messages can only be seen by people in a direct friend network. The separation of messages into three areas can be confusing for a user to manage. It would be simpler for a user if personal messages and bulletin board messages were combined into one area called Messages. When the user enters this area, he or she should have the option of sending the message to a particular user, a list of particular users, or their entire friend network. Messages that a user receives can include an extra column indicating whether the message was sent just to that particular user or all users in the senderís friend network.
More from Matt Wilkerson:The interface to the bulletin board is unclear when you're just starting out as a new user. With the lack of messages and the separate add bulletin page- it's not clear what bulletin board you're posting to in the first place. The fact that most pages don't have a bulletin board link, adds to the confusion (there's a messages link, but grouping all types of messages into one may or may not be a good idea.)
From Christine Robson:Improve how suggesting a match works. Suggesting a match seems to imply that I am recommending two users in my friend network to be matched. How this match is supposed to happen is confusing though. Will the users be told anonymously that they have been selected to match, or will I be listed as the person who suggested that they be matched? Under what interest criteria are they being paired? The form does not let me specify if the recommendation is for dating or friends, etc. When I tried to match two of my direct friends, an error was posted saying that the two people are not in each otherís networks because their connection is too distant. There is no explanation as to how they are too distant. I donít understand how they could both be any closer if they are each my friend. One way to improve the matching service would be to allow users a choice in how their friends are recommended, be it dating relationship, serious relationship, friendship, or activity partner. Another improvement would be to give more helpful information in the error message. As a beginning user, I would like to see an explanation for what criteria is necessary to match friends. What makes a friend too distant from another friend to be matched, and how can they be brought into closer contact with each other? Again, if the information required is too detailed, direct the user to a section of the Help page where instructions can be found.
From Ian Spivey:When displaying user search results, tell me what search I just preformed! This is especially useful for failed searches (did i spell his name right?). The simplest fix for this, since this information is already encoded in the URL, is just to read the variables out of the request and print them on the page above the search box. Also in User Search, you should be able to search by last name within your personal network as well. There are 4 Jonathan Abrams on friendster- I want to find the one who's actually in my network. And searching for Jonathan returns too many people! Since first name and last name are probably stored in the same table, you can fix this by adding a text-box on the search page for "last_name_query" and then adding "and users.last_name = last_name_query" to your SQL query right after "users.first_name = first_name_query". The last improvement is the most interesting: when searching for users with certain interests, it would be nice to be able to filter. For example, I might want to search for a soul mate who likes Ender's game as much as I do, but if he lists "RDMS" as an intrest, I want nothing to do with him! This is easy to fix, actually. If you're using a modern DB search package, for example TSearch, then boolean logic comes built right in! (Ender's game & ! RDMS)... You just need to explain the boolean logic syntax to your users, typically by copying the explanation from your search doc.
From Jennifer Liu:Words less than four letters long are not irrelevant. In the various kinds of interests, it is impossible to search by terms less than four characters in length. I can only imagine this is being done to eliminate searching on short connecting words such as "the", which are meaningless in this context. It would be much more effective to not full-text-index certain words (like 'and', 'the', 'a', for example) and then allow searching on any term not in that list of stop-words (as they're called in the full-text-search business). This is currently a fairly big issue, as I notice many people love the TV show '24', but can't find other users that share their interest.
From Mike Ogrydziak:I tried signing up with a fake email address that does not belong to me and may not even exist (firstname.lastname@example.org). I was not required to verify my email address, and I appeared to be able to sign in with that email address and invite other friends to join my network. My friendster page indicated that my email address had not been verified yet, but did not require me to do so. Later, I tried to register a new account with the same email address (email@example.com) and was given the error message that "The email you entered is already registered". If this were a real scenario, someone could have easily used my email address, without my permission, to register on the site (as long as I hadn't registered on the frienster network with that email address already). Later, if I decided to join friendster, my own email address would not have worked, and I would have been prevented from registering on the site.
From Eddie Kay:When signing up for a new account, the method of delineating which fields are required is inconsistent from page to page and also not clearly explained. On the first signup page all fields are required, but this is not specified. One could, theoretically, fill in a field, be told another field is required, fill that one in, get another error, etc. Along the same lines, on the 'basic profile' page of the signup process required fields are marked in red. This is intuitive to someone who is experienced with web forms, but there is no explanation indicating that red corresponds to a required field. A simple statement that all fields are required on the first signup page along with a statement that red fields are required on the 'basic profile' page would take care of the problem.
More from Jennifer Liu:Another thing is that I can see who my friends are and who theirs are, but I have no place I can go to see who has me on their friends list, or who views my profile. Maybe I'd just like to know how often my profile is viewed. I do not feel that this would dissuade people from viewing others' profiles because people on Friendster are inherently social. People go there to meet new people and to find out about them, and are happy when people come to find out about themselves.
From Jawad Laraqui:Inconsistent use of color, especially the color red. Red text is used in the following ways: - link to the "Gallery" of people in my network - the text, "Next Steps", reminding me to invite more friends to join Friendster - bulletin board posting subject lines (that I have already read) - input error warnings when filling out a form - display alerts to "upload a photo" Usually, red is used as an attention-grabber - telling the user that there is something urgent that they need to know about. On friendster.com, red text is used inconsistently to describe urgent/warning text as well as ordinary reminders and links.
Two thoughtful comments from Luxiou Chen:It's confusing that the user profile and the homepage show the same information, perhaps your homepage should be your user page with more inline options.
From Vishwanath Venugopalan:PROBLEM: comma delimiting and general allowable format unclear when editing favorites in profile. EXPLANATION: in the edit profile page, users are supposed to enter in favorites that are delimited by commas. however, this is not made obvious to the user at all. there is small subscript next to the interests field informing the user of this requirement, but it is easy to miss and seems at first glance to only apply to the interests field. this problem is evidenced by the many users who type entire sentences into their favorites sections, thereby cluttering the fields and providing not as compact a set of key words to the searching engine. SEVERITY: minor - given a full text searching engine, sentence long descriptions will still yield results, although the results may not match exactly what the user was searching for, and vice versa. if you bury your interest in automobiles in a long sentence, the chances that your profile will appear in the first few pages for a search for automobiles will decrease, and so other automobile enthusiasts will have a harder time finding you. FIX: make the comma-delimited format more apparent to the user, either with additional text or text of a more obvious color. additionally, you can design the full-text stopwords to include common vernacular such as "stuff", "i love to", etc... to make the effects less apparent. PROBLEM: no centralized way to view your contributions to the friendster community. EXPLANATION: after joining and contributing to the community, there is no centralized page from which to view your contributions. these include bulletin board broadcasts, testimonials, friends you've invited/added, and personal messages you've sent. you have to go to the individual sections of the site to view these contributions. SEVERITY: major - it'd really be nice to see at a glance your entire contribution or some major subset of someone else's contribution to the friendster community. especially testimnonials, since then you can easily tell whether that person is just being nice to everybody or if he actually values you enough to write a nice testimonial for you :] FIX: implement an additional page that displays your bulletin board broadcasts, testimonials, friends you've invited/added, and personal messages. make a subset of this information available to other users who view this page as well.
Nature of personal connections. There is too much emphasis on the fact that my friends know certain other users, who know other users, and so on. However, there is no additional qualification attached to these relationships. I might want to separate out my contacts into personal and work spheres, or indicate how well I know the person by attaching a strength value to my connection. Adding metadata to connections between users may help me, for instance, to sort my personal network by the tenuousness of connections (i.e. linked through a chain of good friends vs. acquaintances, etc.) There is sociological research that the more tenuous a social connection, the more likely it is that something fortuitous or desirable might arise from it.
Here's a wrap-up email message sent by Philip Greenspun, one of the 6.171 staff members:
Friendster runs MySQL. In an attempt to work around performance problems, they have built themselves a very complex distributed system that propagates updates among the servers gradually (i.e., there is really no guarantee that an update will be seen by another user in a specified time interval). Personally I don't think Friendster's IT requirements are extreme. photo.net has an ancient 4-CPU database server running at 400 MHz with an old version of Oracle and it still manages to handle some fairly heavy traffic (see http://www.photo.net/about-us for stats; the site gets 10 million requests per day). Here are some quick-and-dirty things that I think could work for Friendster... 1) split off photos onto a separate machine that only serves images; nicer to have these in the database for simplicity of maintenance and transactional integrity but when you've got millions of photos it perhaps is better to compromise 2) the split of photos implies a load-balancing router that notices requests in the /images/ subdir and sends them to that separate machine mentioned in Item 1 3) stick to rat-simple Web/db programming with no attempts at achieving innovation in the research field of distributed computing (research is great but if you're an investor in a business you don't want a research breakthrough to be required before you can get a return on your investment). Flush JSP/Tomcat due to its known sluggishness; replace with whatever Henry Houh at Empirix says is the current real-world champ (one of the benefits of being an MIT alum is that you have a network of colleagues on whom to draw). 4) flush MySQL and replace with Oracle 10g; get a discount by promising to automatically add lots of cool friends to Oracle employees ("CONNECT BY NOCYCLE" baby!) 5) meter the actual load on the database server. Most programmers turn out to be bad at estimating where the bottleneck in a system is going to be and therefore optimize the wrong things. If it turns out that "friend network" queries are dominating, cache the "who's a friend to whom" in an in-memory data structure. Suppose that there are 10 million users and each has 20 friends. That's 200 million friendships to track. Suppose further that each friendship requires 64 bits to record (32-bit integers representing user_id and friend_id). 64 bits = 8 bytes. 8 bytes * 200 million = 1.6 GB or well within the capabilities of inexpensive servers (and remember that Friendster is nowhere near 10 million real users yet). If we need to pull more information out about users, e.g., a bit vector of their interests or longitude/latitude, we can do it in the same data structure. This will make most queries into the friendship network really cheap. [Note that this is more or less how Orbitz works; the entire airline schedule and fare database is pulled out of the old mainframe into a set of PC application servers.]