Open Social - social business community software

Open Social is a new Drupal 8 distribution. It's social software for communities and social intranets, similar to the Drupal 7 distribution Commons. Open Social empowers people to effectively collaborate and organize.

Open Social has many features, such as Profiles, Groups, Events, Streams, and Notifications, and is inspired by the Drupal 7-based online community Greenpeace Greenwire, built by GoalGorilla. The Greenwire platform has helped Greenpeace change the face of volunteering and empower thousands of people to become active volunteers and make a difference in the world.

For more information on what Open Social can do, you can read the Youth4Peace case study, a project for the United Nations.

Why Drupal was chosen: 

The social media revolution has already changed modern communications, but mainly in our private lives. The decentralized nature of social software is a huge opportunity for organizations to reinvent the way they communicate and collaborate.

However, organizations are presented with a problem: either they can choose existing social networks like Facebook, Google, etc., which operate outside the reach of your organization and may neglect user rights and data ownership. Or, organizations can choose one of a few closed-source alternatives like Jive, Sharepoint, and others. These proprietary products suffer from vendor lock-in and are not flexible to customize to unique organizational needs. In other words, one size must fit all. With Open Social, organizations get back the control over their software and data.

Drupal has always had a strong presence in social projects. Most Drupal developers have worked on one or more projects with user generated content. Drupal started in 2001 with the Dutch word ‘Dorp’ which means village, a place where people gather. Years later the presence of Drupal in social projects is still large. For example, recently Acquia and Drupal helped save Cisco $400 million (!) USD by moving from Jive to Drupal.

But building good social software is difficult. This is because a social platform exists mainly of user-generated content, and if that user experience isn't right, the platform will not succeed. Social software is also highly interactive and depends a lot on mobile access. And crucial to its success are complex features such as notifications and (aggregated) messaging.

Making great social software takes a lot of time and effort, and isn't something every organization can afford. A Drupal distribution offers the benefit of reusing what has been built before and expanding on that. Open Social provides a basis to build communities, intranets, or social networks without a large investment.

Describe the project (goals, requirements and outcome): 

GoalGorilla was interested in investing in developing a Drupal 8 social network distribution because we had build a custom Drupal 7 solution for Greenpeace. And we could see, how generalizing and modernizing to Drupal 8 could benefit many more organizations.

Goals

Open Social empowers people to effectively collaborate and organize. Replacing traditional intranets, it fuels efficiency and creativity. It supports organizations to innovate bottom-up instead of top-down. The Open Social distribution exists to lay a flexible groundwork to meet these goals. In order to do so the Open Social distribution must have:

  • World-class ease of use (on all devices)
  • Blazing fast (perceived) speed
  • Flexible customization and configuration (branding, integrations etc.)

We welcome and invite the (Drupal) open-source community to give feedback on the Open Social Manifesto.

Hours spent

From January to May 2016, GoalGorilla spent about 2,000 back-end development hours, 650 hours of interaction design, 500 hours graphical design, and 600 hours front-end development. We also invested a whole bunch of hours, sweat, and tears in the Scrum Master and Product Owner agile roles. Many people on our team are also working evenings and weekends on the platform.

Team process

We try to stay as agile as possible using the Scrum method. We use an internal Product Owner who acts like the client. Our marketing department acts as the Stakeholder. We have a Scrum Master who makes sure we follow all Scrum principles, meetings are attended, agendas are set, and impediments removed. This does not differ much from our normal client work, except in Open Social we have a bit more space to experiment. For example, we started with the design team (interaction, visual, and front-end) working on stories for the development team. But we noticed input from the back-end developers was important early on when making design decisions. So, in the current Sprints we include both designers and developers writing stories and tasks together.

Approach to the Design

Getting the interface right is a huge challenge. We want to make the distribution look really good out of the box and also have a theme that is customizable to an organization's brand.

Also, to make Open Social's interface intuitively understandable for a wide range of users we use Google’s Material Design principles, and as a base theme we use Twitter’s Bootstrap. Open Social is built on Drupal 8 too, so we want to stay close to existing Drupal Core and Drupal modules usability patterns. But the users of Open Social are probably used to certain conventions from existing social software they already use. A small example is the Group icon that Google uses for 'Groups', in Facebook this same icon means 'Friends'. So, when testing with real users (which we do each Sprint) the users were confused and we had to redesign a new Group icon.

Tooling

Project Management

Our most important project management tool is Atlassian Jira (with Tempo and X-Ray add-ons). For internal team communication, we use Slack, and Skype for video conferencing. For resource planning, the team uses Timewax. Google Docs is our favorite when it comes to writing down more extensive research.

Design

We use Axure for low fidelity prototyping. For visual designs, we use Illustrator. The front-end is done from a components strategy, which means building a living style guide based on the atomic design principle. We use Gulp for automated front-end development tasks, and Jade for rapid, high fidelity prototyping.

Development

Wow, tools and frameworks are really exploding these days :). Some of our favorites we used for this project are: Docker, Composer, GitHub, Behat, Drush, Drupal Console, PHP Code Sniffer, PhpStorm, and MailCatcher.

Organizations involved: 
Modules/Themes/Distributions
Why these modules/theme/distribution were chosen: 

We want organizations to use Open Social to create their own unique projects, ones that are performant and maintainable. We made a lean and mean distribution; each extra module was carefully debated in the development team. The modules listed here are all of excellent quality, well maintained, and provide valuable functionality for open communities.

Drupal 8

In terms of development Drupal 8 brings lots of advantages over Drupal 7. Highlights for our team are: Configuration Management (instead of Features), Entities, Services, Event Listeners, Twig, and PHP Unit. Since we are early adopters we submit patches and improvements whenever we can.

Some highlighted modules we use:

Address - a great implementation with over 200 address formats and validation right out of the box.

Composer Manager - temporary solution for composer integration since we are early Drupal 8 adopters (not necessary anymore after Drupal 8.1.0, so it will be deprecated ;).

Group - a great new module to create arbitrary collections of content and users. It has a separation of concerns, using a full fledged Group entity getting all the richness from the Entity API in core!

Message - integrated as part of our activity stream, because it works well with tokens and translations.

Search API - a framework for easily creating searches on any entity known to Drupal, using any kind of search engine (as Apache Solr). In our case, it allows us to build flexible searches on content (Topics, Events) and users.

Profile - conceptually different than user account settings. With multiple profile support and private profile types, the Profile module gives great flexibility for configuring user profiles.

Community contributions: 

We agree with Dries when he says that without Drupal distributions, Drupal won't be able to successfully compete with commercial (product) vendors. Drupal distributions have great potential, but they have to be done right and be sustainable.

GoalGorilla doesn't just want to provide the community with a base platform for their social projects. We hope the community will get involved, to expand the diversity of perspectives that will make decisions about the distribution, contributions to translations, and so the distribution will not solely depend on our efforts in the future. To do so we try to be as transparent and welcoming as possible. All development is done out in the open at:

We use a Docker Image, so contributors from the community are up and contributing in no-time.

Project team: 

Taco Potze - Product Owner
Evelien Schut - Scrum Master
Mieszko Czyzyk - Marketing
Xinyu Ma - Interaction Designer
Frank te Riet - Visual Designer
Bas van Os - Visual Designer
Moritz Arendt - User Testing

Our multidisciplinary team is obsessed over user-centered design. That means passionate discussions over the smallest things. This takes time, but we believe this investment is crucial to make great easy-to-use software.

But, we need your help making the platform even better! Please check out what you can do at: https://www.drupal.org/project/issues/social - or drop us an email at info@getopensocial.com to get involved or stay tuned through @OpenSocialHQ.

The Stream or Timeline function of Open Social:

The Stream or Timeline function of Open Social

The Notification feature of Open Social:

The Notification feature of Open Social

We hope you like our design choices!

The pretty Group page
Fully responsive for a variety of devices
Make your people bloom with Open Social at getopensocial.com

Comments

golchi’s picture

This is really awesome and great work; kudos !

Taco Potze’s picture

Thank you Sam, we hope you find it useful for your projects as well!

Shaun Holt’s picture

I have just got it installed and running on one of my computers to test out and play around with. So far I am liking it. Installation was a breeze. So simple to setup. Great Job!!! I am looking forward to using it.

Taco Potze’s picture

Hi Shaun, we are happy to hear your feedback! Composer is a bit different for most Drupalistas than they are used to, but it should indeed work like a breeze and we are working on making it even easier. Any further feedback or questions are welcome in the issue queue on the project page. Have fun!

Shaun Holt’s picture

I am still up working with it... i have had to do a few re installs and mess around with it. Only issue I have had is I can't install modules via the drupal interface but I am sure that is a problem on my end with my setup... but drush and composer take care of that with no issues.... now that i have the kinks on my end worked out, i am working on setting up the appearance and installing languages to play with.

I can already see I will probably upload it to my hosting server at some point soon.

The layout is definately different but I like it and love the stat bar that keeps track of all the details like data usage and memory usage. I find it very easy to move around in and get things done.

So far I say well done and look forward to see what else ya'll do with it.

Taco Potze’s picture

Please add any issues you might have to: https://www.drupal.org/node/2755643 so our team and others can learn from the experience :)!
We are already working on improvements as is in the D.o team to get more out of Composer we need.

I hope you will find some good uses for the platform, we certainly are working for some cool clients already to get them running on Open Social!

pampullo’s picture

Hi!
I would like to know If I can create my own social network with opensocial.
Is it only a demo?
Thabks.

GoalGorilla’s picture

The idea behind this open-source and free Drupal distribution is anyone can create their own social network! You probably want to learn a bit more about Drupal first and how to install it, or contact a local Drupal development agency, there are lots! You can see 41 active in Spain alone here as well: https://www.drupal.org/drupal-services/all/all/Spain - goodluck with your social network! ^Taco

pampullo’s picture

Thank you so much, for your time.

MartinMa’s picture

Can I integrate it in an existing D8 webstite or is it only a stand alone project?

jochemvn’s picture

Hi MarinMa,

It's an installation profile, so you would need to make a new install based on the installation profile.

kind regards,

Jochem

MartinMa’s picture

Thanks for quick answer.

Can I export it as feature? (as far I see, features doesnt cover graphics and so on, only information about the structure and so on)

jochemvn’s picture

Hmm I'm not entirely sure if I understand what you mean. The profile does contain some features (see: social_features). You might be able to use those separately.

pampullo’s picture

I want install "Open Social" but I have two error. I NEED YOUR HELP please:
1º_ Opache
2ª An AJAX HTTP error occurred.
HTTP Result Code: 200
Debugging information follows.
Path: /xxxxxx/core/install.php?rewrite=ok&profile=social&langcode=en&continue=1&id=2&op=do_nojs&op=do
StatusText: OK
ResponseText:
Fatal error: Call to undefined function node_access_rebuild() in C:\xampp\htdocs\xxxxxx\profiles\social\social.profile on line 118

GoalGorilla’s picture

For technical advice please read the documentation on Composer carefully. If you run into any issues you can find advice or post your question at: https://www.drupal.org/node/2755643

jochemvn’s picture

Hello pampullo,

You could also try to download the distribution from github. That one is a bit more up to date. We will deploy a new release on drupal.org as well shortly.

Jochem

oyekeye’s picture

Hi, I'm new to Drupal but I want to know if I can add an additional module to Opensocial such as SSO module? Would it work out of the box?

GoalGorilla’s picture

Hey oyekeye, thanks for your interest in Open Social. It is probably wise to learn a bit more about Drupal before diving into Open Social. SSO will not work out of the box (there is no real box when it comes to Drupal, although we do our best ;). SSO is on our roadmap for this or next months though! Also by next month you will be able to easily install the platform in the cloud and get a already setup developer environment. Stay tuned through our newsletter or Twitter (@OpenSocialHQ), sign-up: https://www.getopensocial.com

marqpdx’s picture

I'd love to get a jump start on this; am looking to federate open social with a couple of other core sites (Drupal and other).

Have you decided on a technology direction of Single Sign-On?

Much appreciated.

Thanks,
m

GoalGorilla’s picture

It is definitely on our roadmap, but we have not started research yet. Do you experience with this?
Best place to have the discussion is in the issue queue of the project (I see you already created the topic there): https://www.drupal.org/node/2810807

marqpdx’s picture

hi, this looks amazing. well done!!

two questions:
1) if one uses this install profile, and then in the future, needs to update parts of it outside the profile, is that possible? i realized it may no longer be an Open Social install, but as long as it won't break, that seems ok.

2) are you accepting pull requests from community members?

Thanks,
m

nielsvandermolen’s picture

Hi M.

Thanks for your kind words.

2) Yes we do accept pull requests from community members. We use drupal.org for issues from the community and you can fork and create a PR in github.

https://www.drupal.org/project/issues/social?categories=All
https://github.com/goalgorilla/drupal_social/wiki/Contributing-to-Open-S...

1) Update paths are a tricky issue but we are currently working on it. For updates of the installations of the distros this will probably require some custom actions from the site maintainer because we do not want to override any custom configuration. You can expect more information being shared in the coming month when the beta version is released.

Cheers,
Niels van der Molen

Enes’s picture

I can not make the menu language translation.

Words can not be found.
How do I get the menu arrangement?

drupal

ronaldtebrake’s picture

Hi Enes,

We have uploaded a patch on the issue you opened.
https://www.drupal.org/node/2792835#comment-11577371

Please have a look there to see if that resolves your issue.

GoalGorilla’s picture

You are welcome :)

dudi3000’s picture

this is a life saver

GoalGorilla’s picture

what kind of project are you working on? We'd love to hear more.

dudi3000’s picture

i have been trying 2 create a social media plat from 4 me and my friends finding this distribution was a heaven send. the only problem is during installation it refuses 2 finish installation due to some missing modules. thank u

GoalGorilla’s picture

We are using the Composer workflow for Open Social. Please read the project documentation:
https://github.com/goalgorilla/drupal_social/wiki

If you still have issues installing please post an issue in this list:
https://www.drupal.org/node/2755643 (there is also lots of common issues in there and how to solve them)

Goodluck!

tekila’s picture

I am really happy that a drupal based social software has come. Just recently I was thinking of launching a Social Networking like Community website. But I was not sure which open source software to select. though not expert, I am familiar with drupal and so with Drupal Commons.

It was when I decided to launch Drupal Commons based website that I come to know about Open Social. This project seams a serious one. so which one is best for collaborative Social Networking Community website: Drupal Commons OR OpenSocial, or else I have saw the feature of Dolphin.Pro? But I am not sure on how to host OpenSocial on one of drupal certified hosting companies that I have already purchased a hosting plan.

Anyway great work. Nice team.

GoalGorilla’s picture

Hi Teklehaimanot,

Thanks for your comment on this post and your positieve feedback on our project.
With Open Social you will have all the benefits of Drupal 8 and our team that continuously works on the project. Every 3 weeks we will release a new version with new features, improvements on existing functionality and bugs that are solved. The Commons project is currently in maintenance mode. So when planning for the future I would definitely go for Open Social.

The Dolphin.Pro project of Boonex states to empower 300.000 web communities, which is an amazing achievement. However their claim to be open-source is not as pure as we in the Drupal community think of open-source and freedom of software: Dolphin can be used free of charge for unlimited period of time under the terms of ​CC-BY public license. According to this license they require Dolphin-based websites to display visible attribution links/banners referring to Boonex.

I am not sure about your, but I hate banners on my platform that probably can't guarantee the privacy of my users data either.

Open Social does not come with this kind of trickery. Our license is the same as Drupal itself. Free as in free beer for friends, not as in free beer while dancing around in a Heineken suit advertising some brand. ;)

Your last question about hosting is a good one that we hear more often. We heard you and came up with a great solution we are currently implementing. This makes sure you get a pre-installed version of Open Social with full access on an amazing Drupal hosting platform. We are preparing to launch this just before the DrupalCon Dublin in less than 2 weeks. So sign up for our newsletter on www.getopensocial.com or follow @OpenSocialHQ on Twitter to be the first to hear more on this exciting announcement and check-out the service!

Please let us know if you have any more feedback or comments. We'd also love to hear more about your community project and of course hope you will join us in our effort to make Open Social even more awesome :).

Cheers,

Taco

ThriLLz’s picture

you guys did a really great job!
compliment and a big thank you!

zhgenti’s picture

Great work guys! Thanks so much for making it available to all of us. We know what it takes to build something like this first hand. We've built http://fowcommunity.com on D7 (community is closed so you can check what's inside here http://www.devengineering.com/work/fow-community). And we will definitely try Open Social on our next project. I think it would be great to catch up on skype to share experience and maybe even integrate some of the features we've built for the FOW guys into Open Social, like mention by name "@Dmitry Zhgenti" feature and hashtags.

Taco Potze’s picture

Really nice work and we can definitely learn from you and the things we you have build. I am reaching out in a private message to talk more!

esafwan’s picture

Hello GoalGorilla Team, Let me start first with congratulating you on what you have achieved so far. It's contribution as this that enriches the eco-system. I can see that you have put a lot of effort in executing this as a real client project with all process, toolings etc in place and above that you taken the time to document most of it.

I had one question to the team. I have been recently researching a lot about newsfeeds/activity streams and got exposed to several notes on it by Yahoo, Twitter, Facebook and getstream.io. I also came across the open source project stream framework which is Python and various details on their implementation on top of Redis & Cassandra. From all the learning, one thing was clear. Scaling activity streams in production is really tricky. I came across methods like "Push" or Fan-Out which denormalizes the user's activity data and pushes the metadata to all the user's friends at the time it occurs.

So naturally when I came across this project, scalability of newsfeed/activity stream in production came to my mind. From what I understand, you use message module thereby utilising the flexibility of Messaging stack and potential use cases with rules, flag, notification etc... But however, I not able to understand if you(or message module) uses any denormalization or Fan-out type methods to enable scaling. Or does it give an option to do it ourselves if required? This is one question that is stopping me from feeling confident about using this at scale, for example site cases with 100,000+ active users.

Would really appreciate if you could take time to give your thought on this. Again, really loved it. <3

jaapjan’s picture

Hi esafwan,

Thanks for your kind words.

We feel informing users about activity on the platform is crucial to the success of social communities. We've been reading a lot about this as well. The examples from Facebook, Pinterest, etc are certainly a great inspiration. However, when building a Drupal distribution it's also important to use Drupal standards as much as possible. We don't want to enforce the use of Redis or Python for that matter.

The message module is used only to store the activity in the database and generate a read-able sentence from tokenised input. E.g. "[username] created topic [node:title] in [group:title]". We use a custom entity called 'Activity' to generate the text for the user(s) and make sure this is shown in the relevant activity stream. Also each activity item is either shown in a global stream (anonymous home page) or in a personalised stream (notifications).

I believe the current architecture will enable the use of any method to store, display or generate these activity entities for high-traffic sites. It would require some additional coding on the modules though by making a few more parts of the the code plugins. But we are open to any patches, suggestions or discussions about this.

By the way @ribel wrote a blog post about the Activity stream architecture last week, see: https://www.getopensocial.com/blog/architecture-activity-streams

esafwan’s picture

Hello Jaap,

Really appreciate your reply. The link you posted was really helpful, I had not seen in before.

The architecture you have in place using Message module and custom Activity modules looks really good, especially after reading a lot of papers/articles on activity feed designs. I also agree with the point that when building a Drupal distribution it's important to use Drupal standards. However, I wanted to know your opinion on something as there are chances you have already considered this and another effort in something you ruled out would be a waste of time. I will try to put it in points below:

  • Is the activity module you build into opensocial build on top of standard entity build using entity api?
  • If yes, have you considered the possibility of using remote/external entities as an option? For example option to have the activities written to some NoSql backend or a managed service such DynoDb or CloudStore? Or even some PubSub solution along with some backends.

I have been exploring for ways to make the activity feeds scalable while keeping opensocials design decisions in place as much as possible. So if just change the entitys storage, we might be able to keep all features including view support in place to some extend.

I saw some really nice resource with this regards:

  1. https://colan.consulting/blog/integrating-remote-data-drupal-7-and-expos... (D7)
  2. https://www.drupal.org/project/external_entities (D8)
  3. https://www.drupal.org/project/wsdata
  4. https://www.drupal.org/project/efq_views

Hoping to see your take on this. Also advice if this discussion should move to issue queue.

Thanks.

jaapjan’s picture

All activities are entities so in theory that would definitely work. I think it could also make sense to consider the search_api module for retrieving the stream.

Let's move the discussion to the issue queue. I would love to be involved in this as well.

esafwan’s picture

Hello Jaapjan,
It has been a while since I posted the above comment. We are currently diving fully into Open Social and we are planning to build a social platform based on it. There is one quick question, that I am confused about. In the distribution, you have used Flag module and created an option to follow any content. However, you have not used it to create a "follow user" option. While both seems to be a similar feature, at least some would argue that being social platform following users is more integral than option to follow content. Can you tell me if there was any particular reason for this decision?

Thanks.

jaapjan’s picture

Hi esafwan,

We just felt that the 'follow content' is more valuable at this moment. Since it would allow users to follow certain 'event' nodes or topics they are interested in. Especially in the use-case of events it is really important that the users have the possibility to receive notifications about any changes or comments on the event. "Follow user" is on the roadmap though and we plan to work on it in Q3 of this year.

Enes’s picture

Hello there;
First of all thank you very much for the project that you have done.
I've been using since the first day I met you Opensocial.

What you do is really beautiful. You did every job I want. I would like to offer you some feedback as well.

1 - If 3 column theme can be very beautiful. (Like Twitter or Facebook ...)
2 - People tagging system can be beautiful. labeling may occur after notification.
3 - HASTAG system can be established.
4 - User menu should be changed. (At the top right menu)
5 - Notice not yet created a good way. This problem can be solved.
6 - Most important of all; content, users, groups, etc. The term outside may divert. Thus, the problems we have can be solved with a new update installation.
Etc.

Thank you for the work you have done and support.

I'm waiting with great excitement each update.
Best regards

florsita’s picture

Hi there! Awesome extension!!! You guys have done an outstanding job, thank you for making it available! My question is, can Open Social be implemented as a headless implementation? Also, what's your experience with scalability of activity streams, are there any issues or limitations we should be aware of?

Thanks again!
M

Taco Potze’s picture

Thanks for your kind words M! We did not make Open Social headless since this would require too much effort on our side. There are many (many) features to take care of. Since Drupal 8 has webservices in core I do see cases where parts of the project are made headless as for example private Messaging/Chat. For us this is still down the line on the roadmap and we haven't made any decision on this feature yet. On scalability of the streams please see the reply of Jaap Jan up here: https://www.drupal.org/node/2754275#comment-11743924

florsita’s picture

Taco, thanks for the quick reply! Do you think social streams are in general too complex to make headless or is it just a matter of a time/roadmap for Open Social? Curious, when do you think you might get to it?

Thanks again!
M

Taco Potze’s picture

We are not planning to make the streams headless for now.

lule75’s picture

This is very nice guys, you just might have solved some of the old puzzles and blocks i have had with D7 concerning Drupal for social network development. I will definitely bring feed back after developing this new app.