Visualising the Jive Social Graph

Social Network Analysis of a Jive Community

Analytics has become a focus for me over recent months. I’ve been doing a lot of work with Google Analytics, event tracking with Google Tag Manager, and building reports in the newly released Google Data Studio.

I’ll explore that a lot further in future posts, but today I thought I’d shake out some old tinkerings I’ve had stuffed away somewhere gathering digital dust.

The return of the social graph

Back in my early days working with community platforms, I recall hearing the term “social graph”,  referring to the representation of a model of the participants in a network and the relationships, connections or interactions between them. It is accredited to Facebook’s CEO Mark Zuckerberg from back in 2007, and over the following years it became an important concept for businesses to understand and leverage.

Over recent years in the community space we’ve seen a focus on metrics showing more direct top and bottom line impacts and ROI of our communities. The deeper, more complex – and let’s be honest, given its statistical nature the academic feel of network analysis – seems to have been somewhat forgotten.

The recent news from Jive of their upcoming “PeopleGraph” promising to “re-establish people as the center of enterprise social networks” both caught my attention and took me back a decade! It will be interesting to see where this will take us, as arguably none of the platform vendors have yet delivered on the potential of the social graph in the enterprise context. I’m looking forward to hearing what Amazon’s Neptune graph technology can help enable here.

Back to analytics, the news also had me recall some simple Social Network Analysis (SNA) exploration I’d started but not shared or taken anywhere. My curiosity got the better of me, and buoyed by the thought that it might be worth revisiting, a cold wet Sunday afternoon provided the excuse to dig it out.

Graphing some social

I wanted to refresh my rusty memory, so started with something simple. I’ll share the steps I took in creating a visualisation of the team at Social Edge and who we follow. I’m using our internal Jive instance as the network, and have obscured or renamed people for privacy.

Terms and concepts

Before we get stuck in, let’s take a look at three SNA concepts and terms that we’ll touch upon:

  • Nodes – in our case, the people forming the network
  • Edges – sometimes called ties, these are the relationships or connections between the nodes in the network
  • Centrality – a measure or indication of the importance or influence of a node within the network

The wikipedia article provides a good overview and plenty more definitions.

Grab some tools

In order to create the graph, we’ll be using the network analysis and visualisation software Gephi, which is well-known, open-source, and available to download for multiple operating systems.

Once installed, if you’re a Gephi newbie, you’ll likely find this great tutorial as helpful as I did in order to get started.

I’d also recommend installing Postman, a great tool that will help us inspect and return Jive data via the REST API.

Now on to the Jive-specific aspects….

Step #1: People = Nodes

Our first step is to generate a list of nodes, which in our case we’re looking at list of registered users of our Jive community.

Unfortunately this isn’t as straightforward to get out of Jive as it could be. In my case I had the luxury of a previous report I’d pulled via the Jive API, which also gives me additional attributes from the user profile. These aren’t essential though, so one of the easiest approaches to get us started is a good old copy and paste from the People tab of the admin console.

I’d recommend deselecting include Deactivated Users and select just Standard-Access users.

I’d then show 100 users per page in order to minimise any repeat copy & pasting.

We need to copy the list of users, and paste into your spreadsheet tool of choice. We can then tidy things up. We’re going to keep the UserID and Name columns, delete the rest, and then perform the following steps:

  1. Re-order the columns to put the UserID first.
  2. Rename the UserID column to Id
  3. Rename the Name column to Label

I mentioned I had additional profile fields in my report, so in this example I’m keeping the Location column, which I may decide to use later.

Save this file, we’ll be using it to import our “nodes”.

Step #1: Followers = Edges

Warning! This stage was easily the most time-consuming… you may want to grab a beverage of choice before proceeding!

Unfortunately there is no simple way to export a  list of users and their followers, so we’re going to have to dive into the Jive REST API in order to pull out the followers for each user.

If you’re not yet familiar with how the Jive API presents a user profile, start with inspecting your own in a browser. Login to Jive first, then use the following link (replacing <jive instance> with the hostname of your Jive instance):

https://<jive instance>/api/core/v3/people/@me

We can also do the same in Postman, to get started, click New > GET Request

Give it a name and save to a collection.

Now enter the same URL into the URL field, and select Basic Auth from the Type list on the Authorization tab below it, and enter your Jive username and password.

We’re all set, and you can hit the big blue Send button.

Give it a second and you’ll see returned the same text representation of your user profile as you did  in the browser.

You’ll notice I have collapsed the resources and tags sections here for readability.

It is actually buried in this resources section that we can find the reference to both followers and following:

However these are just links I hear you cry!

Unfortunately Jive doesn’t provide us with even the UserID’s of our followers directly within the user profile data.

So we have to go and get it, using another request to the API.

This time we’re going to need the UserID of the person we want to return the list of followers for, and our GET request URL is (replacing <Jive Instance> and <UserID> appropriately):

https://<Jive Instance>/api/core/v3/people/<UserID>/@followers?fields=-resources,id

I’ve added ?fields=-resources,id here to limit the data returned to just provide us the minimum, we’re only after the UserID’s of the followers.

What we get back will look like this:

Note the links section at the top. If the user is following more than 25 users, the results are pages, and we can click through the pages using the next link.

So what I did was simply copy these results, and drop them into column C of a new spreadsheet.

You’ll want to note the UserID in column A for each user, doing so in the row against the UserID of the first follower will make things easier in a moment.

I repeated this copy & paste exercise for each of the UserID’s in my nodes file, and for each page of results for users with more than 25 followers.

Next, I used the following formula in Column B to extract the clean UserID’s of the followers from the mess in Column C! A row without a UserID will remain blank:

=if(LEFT(C1,3) = “id:”,REGEXEXTRACT(C1,”[0-9][0-9][0-9][0-9]”),””)

Note: I’m using Google Sheets, the formula may vary slightly in Excel.

We then need to fill the gaps in Column A. Here I’ve also added the column headings Source and Target we’ll require.

We can then simply use a filter to remove the empty rows, I then copied Columns A and B to a clean sheet which we’ll save as our “edges”.

Still with me?

Good effort!

Since I was working with a fairly small set of users to begin with, I felt I could live with it this time round.

It could be done programmatically however – insert future post here! 😉

Step #3: Getting started in Gephi

If we’ve recovered enough from that effort, and now armed with our files of “nodes” and “edges”, we can fire up Gephi.

We’re going to start in the Data Laboratory tab, and as per the tutorial, we’re going to import our files of nodes and edges.

In the menu File > Import Spreadsheet and select your nodes file.

In the dialog, check the correct worksheet is selected, review the columns and Nodes table is selected in the Import as dropdown. Select Next.

The second step allows you to review the columns being imported, and change data types if required.

Here I have a file containing Departments and Locations as additional columns for my nodes. If all is well, we can Finish. We’ll get an import report dialog that will show any errors encountered.

We’ll repeat the import process, selecting the edges file, with Edges table in the Import as dropdown.

Important: On the Import report dialog, select Append to existing workspace to keep the nodes and edges in the same workspace

If all has gone well, we can now switch to the Overview tab, and meet our graph…

Underwhelming at all!? Let’s smarten things up…

The initial layout is random, so we can apply an algorithm to improve things. In the layouts pane, select Fruchterman Reingold and have a play with the parameters. Select Run and watch the graph stabilise. Then click Stop.

Now in the Statistics pane, we’re going to run the Network Diameter calculation.

We can then use this to color and size our nodes.

In the Appearance pane, click Nodes, then the palette icon, and the Ranking tab dropdown, select Betweenness Centrality. We can then choose a colour range, and adjust to taste. Click Apply at the bottom of the pane.

icon, and the Ranking tab dropdown, select Betweenness Centrality. We can then choose a colour range, and adjust to taste. Click Apply at the bottom of the pane.

We can repeat these steps, but selecting the Size icon, and adjusting the range.

Our graph is no looking something like this:

Betweenness Centrality is a measure of the number of times a node lies on the shortest path between other nodes. In other words, we’ve made larger and darker nodes for users who are being followed by more of their peers.

We can further adjust the layout, the Noverlap and Expansion options are useful.

Switching to the Preview tab, we can further adjust the presentation of our graph, including show the node labels – our users’ names. I’ve also mentioned including other user attributes in the node file, we can use these as alternatives to style the graph, for example colouring by department or location.

The finished graph

Gephi allows us to save our work as a project file, and also export the graphs in various formats, making it easy to share a visualisation of our network.

In the end, the hardest work was in processing the data in order to create the graph!

A social network graph showing Jive users and their followers, coloured by department and identifying those being followed by more of their peers as larger in the graph.

Appetite for more?

I’m currently sitting on a nice analytics dataset from Jive’s Data Export Service (DES). Since this contains actual actions such as likes, comments, follows, I’ll be looking to explore further what visualisations I can create from that.

If you’re compelled to give this a go yourself, I’d love to see what you come up with, and what the results look like!

What other network analyses would you find interesting? Let me know what you think!

A blog reboot

It has been over 5 years…!!

Is a blog still a thing in 2018?

I’ve been feeling a bit of blogging mojo coming back, so dusting of the archives!

I’ve done a bit of a cleanup on the backend, cleared out some plugins and re-installed the bare minimum for now.

A few minor but important updates:

  • Added a privacy policy, including a section on cookies
  • Added a Cookies acceptance notification
  • Re-added Google Analytics via Google Tag Manager

More tweaks to come if I can build some momentum….

For “outside-in” thinking to really take off…

Just an observation to wrap up the week:

For “outside-in” client-centric thinking to really take off, procurement processes need a major rethink! Remove the barriers. Let your partners reach you, help them help you.

Time to kill off the RFP! 😉

Social Business is growing up.

Starting on a tangent…

One of the beauties of the written word, particularly in digital format, is that it cannot be “worn out” in the physical sense which makes me think that overuse is the digital equivalent where we become desensitised to the significance and numb to the meaning being conveyed.

At the current rate, words and phrases such as “change”, “paradigm”, “new world”, “connected economy” and “radically different” are being overused to the point of being worn out of meaning – and I know I play my part in that!

But how else do we talk about the significance and magnitude of some of the converging trends racing towards us as businesses, industries, nations and societies?

Back on topic…

Much of my between-the-ears pondering of late has been grappling with what I see as the significance of Social Business and how it relates to these trends. Trying to get beyond some of the “nice” idealistic notions and at the heart of why it needs to be understood as relevant to our leaders and core to their organisations’ ability to thrive tomorrow – whether they be in industry, education or government.

Steve Denning, in concluding his Forbes article Why Apple and GE Are Bringing Back Manufacturing, identifies a number of the changes that we are already beginning to see from some of today’s thriving organisations, and highlights themes I’d expect to hear in conversation with any Social Business strategist worthy of the title:

Success in this new world of manufacturing will require a radically different kind of management from the hierarchical bureaucracy focused on shareholder value that is now prevalent in large firms. It will require a different goal (delighting the customer), a different role for managers (enabling self-organizing teams), a different way of coordinating work (dynamic linking), different values (continuous improvement and radical transparency) and different communications (horizontal conversations). Merely shifting the locus of production is not enough. Companies need systemic change—a new management paradigm.

Cause or Effect?

Perhaps it is a question of maturity, further evidence that it’s just the first innings of social in the enterprise is over, and the reality the hype cycle waits for no-one? Emanuele Quintarelli shared some insight in a recent post:

The fascinating thing is that we moved to the Through of Disillusionment without ever fully experiencing the Peak of Inflated Expectations given that most executives have yet to understand the meaning of this social revolution while pundits are ringing the bell of a next new thing.

Which leads me to think of things in the context of Denning’s words. Executives don’t need to understand “social”, they need to recognise the change under way and the disruption ahead of us. We should objectively question the current state of play in the Social Business space – the vendors, initiatives and case studies we are familiar with – and whether they are truly cause, or rather effect?

We need to see Social Business efforts morph into systemic change programs of the scale Denning eludes to, that will ensure organisations can continue to thrive.

A new end game for Social Business

So whilst we may be rewriting the end game for Social Business, I don’t feel we’re moving the goalposts. To borrow a few more words from Emanuele:

We can call it Social Media Marketing, Social CRM, Enterprise 2.0 or Social Business. Nonetheless we’ll be still missing the point until the broader picture will come together by connecting social to the digital landscape and embedding digital into the real business realm.

I certainly agree, and thanks to the likes of Dion Hinchcliffe‘s Architecture Of A Social Business, and The Community Roundtable‘s Community Maturity Model, we have some great direction.

But what is ever so challenging to capture in a diagram are the levels of complexity, the strength of leadership and commitment needed, the variables and unknowns, the “human factor”.

What began as the enterprise adopting Web 2.0 approaches continues to take on new meaning and significance. It is now core to building and leading organisations fit for purpose.

Social Business is growing up.

Life’s Change Agent

This quote (emphasis mine) comes from Steve Jobs’ 2005 Stanford Commencement Address, and speaks to some core fundamentals of what for me is a big part of “Enterprise 2.0” or “social business”. It’s the hard part, the change.

No one wants to die, even people who want to go to Heaven don’t want to die to get there.

And yet, death is the destination we all share. No one has ever escaped it.

And that is as it should be. Because death is very likely the single best invention of life.

It’s life’s change agent; it clears out the old to make way for the new.


Your time is limited, so don’t waste it living someone else’s life.  Don’t be trapped by dogma, which is living with the results of other  people’s thinking. Don’t let the noise of others’ opinions drown out  your own inner voice, heart and intuition. They somehow already know  what you truly want to become. Everything else is secondary.

Uncertain, Yet Exciting Times

Friend and colleague @NigelBarron earlier today passed me this post from Don Tapscott of Macrowikinomics fame: Davos: New Realities and Managing New Global Risks – Don Tapscott, which contains this inspirational line:

the industrial age is finally coming to an end and to achieve economic development and social justice we need to rebuild civilization around a new set of norms and values.

This hit right home. We are living in uncertain, yet exciting times, much like our predecessors did, during what we now term the industrial revolution.

Whether we call it Enterprise 2.0, social collaboration, or social business is pretty irrelevant, but for those of us working in this space in the enterprise, I truly believe this is what we’re really about. This is what we’re doing with our companies. We are helping them recognise the end of one age, and helping them adapt and move into another.

I think it’s important we don’t lose sight of this bigger picture, the scale and importance of this, as we deal with the realities of the day to day.


PS: Don, I have a copy of Macrowikinomics which I am desperately trying to find the time to read, I’ll get there, please bear with me!

New Year’s Non-resolutions

Tapping a Pencil

Photo Credit: Tapping a Pencil by Rennett Stowe

First of all, a belated “Happy New Year” to you all!

I’m not a big maker of New Year’s resolutions, never have been. Not that I haven’t made resolutions, or attempted to make a personal commitment or an effort to change something, just that I tend not to see the New Year as an excuse for doing it.

That said, there are however a couple of things at the front of my mind which I guess could be considered New Year’s resolutions:

Procrastination – OUT
“Work out loud” – IN

So what do I mean with these?

Following the Christmas break, and a chance to relax, take stock and reflect on the year gone by, one thing I felt personally was that my online “energy levels” had dropped, or were rather being consumed by other things. To be honest, this was leading to a level of frustration. I seemed to be finding myself slipping into a rut of procrastination around things which previously had simply flowed.

So resolution #1, out with procrastination, it’s a horrid word anyway!

I then asked myself whether this frustration was coming from what I was perceiving to be a lack of “presence” or participation?

Which brings us nicely to resolution #2. “Working out loud” is a phrase I’ve heard often and even used on occasion in conversation around Enterprise 2.0 and social collaboration. For me it amounts to one heavy-hitting use case for C3, and sums up nicely my thoughts when discussing the evils of email for example. It is more of an attitude or behavioural approach to our work, rather than a specific action or technique, and revolves around a proactive commitment to doing as much of our work as possible out in the open. I should probably also state for the record that I’m not going to pretend we can all “work out loud” to the same extent. Neither is it realistic to expect everything we do be out in the open, there are times when things need to be kept private or be done offline. In fact, I believe an important aspect of “working out loud” involves an awareness and understanding of the intended and appropriate audience for our work.

I hope to go into more detail on this in future posts. Today’s is meant to simply serve as a reminder to myself to do more where I can in this area, and hopefully help me keep resolution #1!

What do you think, worthy New Year’s resolutions? What about yours?