Developer Advocacy on Social Media

Introduction

Developer Advocacy builds out their thought leadership through social media and community engagement. The tips and strategies shared here can be used by team members and the wider community to help build their own profile as an evangelist and advocate for GitLab.

Topics:

  • Education and Learning: Tips from own experience. Workshops, slides, blog posts, videos, etc.
  • Events live posts. Amplify talks with screenshots, pictures and messages.
  • Release Evangelism: Share feature insights with personal views.
  • Community and customer best practices and GitLab insights.
  • Contributions to GitLab, encouraging customers to co-create with GitLab.

UTM Tracking

Developer Advocates at GitLab are encouraged to add UTMs for URL tagging and tracking to provide analytics and insights on how well content shares are performing. This method helps to verify KPI metrics.

Target Platforms

LinkedIn is the main target platform for content distribution, release evangelism, and customer engagement.

Note: With the platform changes on Twitter/X in 2024, and lack of content engagements thereof, we have de-prioritzed Twitter/X as platform for Developer Advocates in FY25Q4.

Social platform evaluations:

General Social Media Tips

The following sections provide best practices for social media to increase engagement, reach, and amplify content.

Message Tips

  • Keep the message short and appealing. If you have multiple sentences, break them down into a list.
    • πŸ’‘ Use emoji as list markers, this one to learn something.
    • πŸ— This way users learn what you want to share and build together, for example CI/CD.
    • πŸ”₯ Pick the right emoji, this one expresses a fast success for example.
    • πŸ›‘οΈ This emoji can be security related.
    • 🌱 Starting something new, or first MR merged as contribution can be illustrated with this emoji.
  • Use 3-4 hashtags at maximum, at the end of the message. LinkedIn allows to search for hashtags, but will not amplify content with many hashtags similar to Instagram or Threads.
    • #development and #DevSecOps are good examples. You do not need to include them every time though.
  • Too many emoji can hide key messages.
  • Use an appealing screenshot image or animated GIF to make people stop when scrolling.
    • When attaching images to your posts, make sure to include an ALT text describing the content.
  • Do not start with an @ character on Bluesky and Twitter/X, this will be hidden as reply and hinder audience reach. Escape it with a leading . or an emoji. Example: .@gitlab 13.9 adds ....

Limits:

  • LinkedIn: 3000 characters, including URLs.
  • Bluesky: 300 characters
  • Twitter/X: 280 characters
  • Mastodon: 500 characters
Media files for messages

Follow the tips on resizing images and creating GIFs to learn more about image and video conversions for social media, resizing GIFs, etc. Always use the best source available, or convert to a common file format. For example, macOS exports a proprietary HEIC image format which is not supported by LinkedIn on the desktop. Instead, use JPG or PNG for better compatibility. You can use ImageMagick and macOS Finder to convert HEIC to JPG.

Media limits:

  • LinkedIn allows to upload up to 20 images to a post.
    • File size limit: 5 MB
    • You cannot mix images and videos.
    • The post editor allows to reorder images with drag&drop or cursor keys.
  • Bluesky allows to upload up to 4 images, or 1 video of 60 seconds length (since 2024-09).
  • Twitter/X: 4 images, or 1 video of 140 seconds length and 512 MB size.
  • Mastodon: 4 images.
Tagging users
  • On LinkedIn, type @ to start searching for companies, brand accounts and users to tag.
  • On Bluesky, Mastodon, Twitter/X, you can use @ to mention users.
Accessibility
  • Always add ALT tags to attached media files (images, GIFs, videos).
  • Do not use bold/italic formatted looking text. Generator tools use special unicode characters, and this breaks screen readers and accessibility. Use emojis and formatting techniques instead.

Social Card Validators

Use the social card validators to verify the social preview of included URLs before sharing.

Fast Emoji Workflows

Optional efficiency tip.

Raycast is a productivity app and can replace Spotlight on macOS. Open Raycast with your preferred shortcut (option + space by default) and start typing emoji, press enter and type the emoji name. You can also assign a shortcut to the emoji view by opening the extensions settings. Open Raycast and type extensions and select Extensions Raycast Settings in the prompt. Search for emoji and assign a keyboard shortcut, for example cmd 2.

Raycast extensions: Emoji keyboard shortcut

LinkedIn Tips

LinkedIn: Group posts

LinkedIn provides groups where users can join to follow a stream of community curated content. Identify groups that are relevant for thought leadership strategies and engaging with the wider community.

Benefits: Increase reach of content shares (for example, the GitLab blog), attract new followers using the creator mode profile.

Some groups require moderators to approve the posts. Please follow these guidelines:

  • Ensure that the post is helpful, provides a short summary of the linked article
  • Check the social card preview and replace them with screenshots or GIFs that make folks stop scrolling.
  • Do not spam the groups with messages every day. Be thoughtful about shares and help the group owners to create a helpful stream of free learning content.

Example: The GitLab CLI announcement post by Michael which shows the CLI interface with CI/CD pipelines, job traces, and CLI API calls as attached screenshots created 92 likes, and 5,200 impressions in 24 hours. The same post to the DevOps group on LinkedIn, once approved, got 40 likes and 9000 impressions in 9 hours.

LinkedIn: Use Creator Mode Profile

LinkedIn defaults to connections between users, and everyone uses a different strategy to manage connections, for example, only having met in person, etc. Sometimes users want to follow and engage with your content, without the direct need of a LinkedIn connection. This is a great strategy to share thought leadership content on LinkedIn too, for example automated schedules in the same way as Twitter.

LinkedIn provides the Creator Mode for profiles which brings multiple benefits:

  • Content is highlighted by moving the Activity and Featured sections on top of the profile.
  • Users can follow you as the default action.
    • Connections are an extra step in the dotted menu. This can also be helpful to reduce connection requests to review.
    • Your followers will see your content in their feed and can engage.
    • Connection requests are automatically following you, even if you decline the request.
  • Number of followers are displayed on the profile. Your profile might be shown to others as influencer profile and suggestion to follow.
  • Possibility to add a URL to your profile introduction to drive traffic there.
  • Creator Analytics
    • Impressions, engagements, profile view metrics are displayed on the LinkedIn profile.
    • Required for thought leadership strategy metrics in Developer Advocacy.

Example profile from Michael Friedrich with Creator Mode enabled:

LinkedIn Profile with creator mode enabled: Michael Friedrich

LinkedIn: QR Code Connect on Mobile

When attending events, networking and connecting to new folks often is a thing. The LinkedIn mobile app provides a QR code for your profile, and an in-app feature to scan other QR codes. This makes in-person connections more efficient.

  1. Open the LinkedIn mobile app on iOS or Android.

  2. Tap into the search bar.

    LinkedIn iOS app: Search bar

  3. This action brings up the QR code icon on the right side of the search bar.

    LinkedIn iOS app: Search bar, QR Icon

  4. Tap on the QR code icon to bring up the QR code to share.

    LinkedIn iOS app: QR Code view

  5. The QR Code view also has a tab to scan other QR codes. If you don’t want to grant access to the camera to the LinkedIn app, you can also scan the QR code using your mobile camera and open the LinkedIn app from the scanned profile URL.

Bluesky Tips

Bluesky is a new platform and the user base is growing. It is important to both grow followers, and engage with other users to grow your own network.

Bluesky account and settings

Bluesky uses a federated protocol and started with a single instance on bsky.social. The community has since created multiple instances. It is recommended to create an account on the bsky.social instance.

  1. Register for an account at bsky.app.

  2. Optional: Download the app

  3. Login into Bluesky.

  4. Setup your account.

    • Upload a profile picture and banner image
    • Add a biography: Focus on role, topics you are interested in or offer content for. You can add mutiple lines and URLs. Example: @dnsmichi profile. Tip: You can mention the GitLab handle using @gitlab.com to render a direct handle URL.

    Bluesky profile from @dnsmichi, with @gitlab.com brand handle

Recommended settings:

  1. Two-factor authenticaton: Require email code to log into your account.
  2. Accessibility Settings:
    • ALT text: Require ALT text before posting media.
    • Media: Disable autoplay for videos and GIFs.
  3. Chat Settings: Review the Allow messages from setting to determine whether to accepted them from everyone, users I follow (default), no one.
  4. You can use your domain as custom Bluesky handle, for example @gitlab.com, @sugaroverflow.com or @dnsmichi.dev. This can help to make your handle more memorable and easy to share.
    • Follow the instructions on the Bluesky blog or @dnsmichi’s tutorial to setup the DNS TXT record verification.
    • Consider changing your handle early. All historical tags and quotes will be redirected, but incoming URLs to starter packs, etc. will be broken and need external updates.
    • Ensure to register the old handle with a secondary email address, and add a note moved to @newhandle into the biography. This helps avoid name squatting.

Optional suggestions for Bluesky

  1. Add Bluesky to your GitLab profile.
  2. Review the Bluesky Getting Started guide by Dean Lofts.
  3. Explore alternative UIs
    • deck.blue is a Tweetdeck alternative for Bluesky.
  4. Review available moderation block lists (search for block list on Bluesky). You can click Subscribe and select whether to mute or block all accounts in the list.

Review the options for importing data from Twitter/X:

  • The Sky follower bridge Chrome extension will search through Twitter/X follower lists and can help find users on Bluesky.
  • Automated data import:
    • Open source data import: twitter-to-bluesky imports a downloaded Twitter/X archive zip file. Test it with a test account first.
    • Paid data import: BlueArk
  • It is recommended to keep your Twitter/X account to avoid impersonation. You can protect the account and update the biography with new social media locations.
  • You can also start fresh on Bluesky and do not import anything.

Missing features, 2024-11-11:

  1. Bookmark action to save posts (issue).

    • Workaround: Pin this feed to your home timeline. Use the πŸ“Œ emoji on a post to make it appear in your personal πŸ“Œ feed.

    Bluesky feeds, with pins

  2. Show exact follower count if your followers are more than 1,000.

    • Workaround: Use a raw API call with the handle: https://public.api.bsky.app/xrpc/app.bsky.actor.getProfile?actor=YOURHANDLE in your browser or on the CLI with curl and jq. Example for dnsmichi.dev:
    curl -s 'https://public.api.bsky.app/xrpc/app.bsky.actor.getProfile?actor=dnsmichi.dev' | jq -c '.handle,.did,.followersCount'
    "dnsmichi.dev"
    "did:plc:orvu3nk4bdy7edgw3bvnk4pm"
    2605
    
  3. Add user to Starter Pack from their profile view (issue).

Follow team members and their followers

Name Bluesky handle
Cesar Saveedra @cealsair.bsky.social
Daniel Helfand @dhelfand.bsky.social
Fatima Sarah Kalid @sugaroverflow.com
John Coghlan @john-cogs.bsky.social
Michael Friedrich @dnsmichi.dev
William Arias @pywarias.bsky.social
Abubakar Siddiq Ango @abuango.me
GitLab brand social @gitlab.com

Bluesky Starter Packs

Starter packs provide a list of users to follow, and help quick start with potential users to follow and read in your feed.

Users can create starter packs on their profile for specific topics, community groups, events, etc. and share them with the wider community.

GitLab team members have started to create and maintain the following Starter Packs:

Starter Pack Maintainer
GitLab Community @dnsmichi
GitLab DevRel team @dnsmichi
AI/ML @dnsmichi
Platform Engineering Bryan Ross

Other community maintained starter packs:

Starter Pack Maintainer
DevRel Matty Stratton
DevOps Matty Stratton
CloudNative Justin Garrison
The world of open source Lorenzo Sciandra
Diversify Tech’s Starter Pack Diversify Tech
Ruby, Rails and Web JuliΓ‘n Pinzon
Ruby on Rails Joshua Wood
Python Savannah Ostrowski
NLP Researchers Maria Antoniak
Data Chris Albon

Complete lists and Bluesky threads are also available, but are changing fast. Last updated 2024-11-11, external URLs.

Followers and engagements on Bluesky

  1. Ask team members and friends to get added to Starter Packs.
    • Users tend to click the Follow all action button in Starter Packs. Example: @dnsmichi’s follower count grew from 200 to 1,200 in 3 weeks when the tech community moved to Bluesky in late October 2024. Michael is in the DevRel, DevOps, CloudNative starter packs.
  2. Engage with posts and start discussions, help users with their questions from your experience.
  3. Balance GitLab focussed content with general technology thoughts, helpful tutorials, tips, memes, pictures.

Mastodon Tips

  1. Choose a Mastodon server with a trusted community and moderation, and create an account.
  2. Mobile apps
  3. A Tweetdeck alternative is built into the Mastodon web interface.
  4. Mastodon does not track post impressions. Always use UTM tracking with short URLs for GitLab owned content.

Content

Sharing Content

The composer features of Twitter, Linked, Mastodon, etc. are available for posting live content. Note When sharing content that points to GitLab blog posts or the marketing website, always create short URLs with UTM tracking.

  • LinkedIn web app. Start a new post to find the clock icon in the lower-right corner to schedule posts.
  • Bluesky: Log into the app and post content.
  • Twitter/X web app. The composer also allows to send scheduled tweets.
  • Mastodon: Log into your instance and use the composer form. The Mastodon scheduler allows to schedule posts.

2023-07-01: Twitter/X announced rate limits for all users on the platform, and only authenticated users can see tweets. This introduces an accessibility problem: Website-embedded tweets and previews are visible, but additional engagement requires a Twitter/X account and login. According to Twitter/X, these limits were temporary but the login requirement is still there on 2024-11-11. When sharing a Twitter/X URL internally, always create a screenshot/text copy so that everyone can access the content and contribute.

Content Sources

Newsletters

Community platforms

Other content sources

Analytics

Please see Content Effectivness for our methods and tools.

Thought Leadership Strategy

This strategy can help amplify impressions and build out thought leadership.

  • Attract more active followers and therefore improve impression numbers and engagements.
    • Users can follow you on LinkedIn, you do not need to accept every invitation. If you plan to extend your business network, ensure that profile details such as private email/phone are not shared with anyone.
  • Help and educate users
  • Analyse profile statistics
    • The why on the most impressions, top media tweet or most engaging tweets
  • Follow users who share interesting stories
    • They may follow back, increasing the follower count.
  • Retweet with comment and add your own thoughts or a funny emoji.
    • Mix this with “normal” retweets.
  • Engage with tweets, like often, add replies and join the discussion.
  • Listen to criticism and ignore hate speech.
  • Do not criticize GitLab competitors.
    • Instead, engage with their communities and learn how to improve.
  • Channel back feedback to product and engineering teams.
  • Adopt new ideas with live streaming or community coffee chats.
    • Engage community members in discussions.

Example: Chromium build times discussion led to Self-Managed GitLab with auto-scaling runners on Monday. On Wednesday, we decided to try it live on YouTube in the #everyonecancontribute cafe. Max wrote a blog post afterwards.

Build your Social Profile

  • Add a personal note and allow users to view a window into your life. Be it food, leisure activities, or a quirky habit.
  • Share your impressions and thoughts with #allremote and #remotework
  • Regularly tweet about daily work. Use the hash tag #LifeAtGitLab to share insights and funny moments.
  • Pick outstanding GitLab features from another stage/group and post about them (could be a blog post, screenshot, etc.).
    • Share praise in Slack with linking the Tweet/LinkedIn URL.
  • Post something funny, use an animated GIF which relates to a tech story. Something which makes you laugh when you look at it.

When you find something interesting to be shared with our brand account, please share it on Slack in #social_media_action and retweet by yourself too.

Social Campaigns

Release Evangelism

GitLab releases add lots of value every month. As a developer, you know about use cases and workflow enhancements they may solve specifically. Use this knowledge to describe why this new feature helps you.

The product kick-off provides insights into planned features. As we plan ambitiously, there is no guarantee that everything gets released as planned. Therefore release evangelism campaigns need to happen short notice around the release date.

Tip: GitLab team members can access the #release-post Slack channel to check for updates on the monthly release blog post. Wider community members can check the gitlab-com/www-gitlab-com repository for the release post MR, or follow the Developer Advocate issues with the DE-Release-Evangelism label.

Workflow:

  • Open the fiscal year epic for release evangelism, linked from the workflow handbook.
  • Developer Advocates review the release blog post draft.
    • Use the review app.
    • Add feedback and suggestions to the merge request before release day.
    • Add interesting items with social text examples into the release evangelism epic.
  • Developer advocates share and/or schedule their favorite features on release day.
    • Use the short URLs from the campaign manager to track release evangelism impressions.
    • Use the existing media (images, videos) from the release blog post, or create new screenshots/videos.
    • Link to the documentation, or the release post anchor if already released. Never link to the review app.

Tips:

  • 1-2 shares stretched over 1 week around the release
    • If you are on PTO, engage later. Do not schedule shares into your spare time.
  • Message format: Problem? -> Solution
  • Add emoji and a CTA URL.
  • Animated Gifs or videos can help with people stopping “doom scrolling”.
  • Target a time window for PT and CEST (9-11am PT)

KPIs:

  • Impressions and engagement

Release Post share

Use the social card validator to verify the social preview of the release blog post. There might be a situation where the preview does not render correctly, or otherwise needs more attention from readers. As a boring solution, resize your browser and take a screenshot from the header, including the sub title listing the features, and attach the image to the social shares. Examples for 15.1: Twitter, LinkeDIn

Release Evangelism MVP

The monthly release post awards the MVP to a community contributor. A personal shoutout from a Developer Advocate helps with community engagement, and helps increasing visibility so that everyone wants to contribute.

Workflow:

  • Open the release blog post
  • Create a screenshot from the MVP section
  • Prepare the social share in 280 characters
    • Use a personalized message based on the feature contributions
    • Tag the MVP using their social tags listed on their GitLab profile (Twitter, LinkedIn)
    • Add the #EveryoneCanContribute hashtag
    • Add the release blog post with the /#mvp anchor in the URL
    • Example from 14.9, LinkedIn: Shoutout to Timo Furrer for becoming the GitLab 14.9 MVP πŸŽ‰ Your work on the #Terraform provider, automating all things GitLab, is invaluable. Thanks for all your contributions! πŸ’œ 🦊 #EveryoneCanContribute https://about.gitlab.com/releases/2022/03/22/gitlab-14-9-released/#mvp
  • Post the MVP share on Twitter and LinkedIn
    • Add the URLs to the release evangelism issue
  • Ask Sid in the #ceo Slack channel to engage with the MVP shares
    • Suggested actions: Reshare/like, add a comment thanking for the contributions. Follow the CEO voice to suggest a text to copy.
    • For efficient copy/paste of suggested texts, add a comment in the Slack thread containing only the comment text.
    • Check the shares for comments, and engagement metrics

Release Evangelism Examples

High performing share examples for GitLab 14:

  • 14.9: MVP on LinkedIn (3,000+ views, 60+ reactions)
  • 14.8: MVP on Twitter (8,000 impressions, 150 engagements) LinkedIn (2,500 views, 32 reactions)
  • 14.7: MVP on Twitter (18,000 impressions, 600 engagements) LinkedIn (7,500 views, 150 reactions)
  • 14.6: Render markdown titles of issues on LinkedIn (3,000 views, 62 reactions)
  • 14.6: MVP on LinkedIn (1,500 views, 30 reactions)
  • 14.5: IaC Security scanning on LinkedIn (2,300 views, 28 reactions)
  • 14.5: Conditional includes with exists in CI/CD on Twitter (12,000 impressions, 600 engagements)
  • 14.3: Conditional includes in CI/CD on Twitter (21,000 impressions, 1,800 engagements)
  • 14.2: Stageless CI/CD Pipelines on Twitter (55,000 impressions, 1,900 engagements) and LinkedIn (9,000 views, 127 reactions)
  • 14.2: Open MR in Gitpod MVP on Twitter (43,000 impressions, 300 engagements) RT-quoted tweet
  • 14.2: Live Markdown Preview on Twitter (7,000 impressions, 300 engagements) LinkedIn (5,000 views, 62 reactions)
  • 14.2: Parametrize CI/CD include statements on Twitter (8,000 impressions, 400 engagements) LinkedIn (800 views, 13 reactions)
  • 14.2 Creating branches directly in @gitlab from a @Jira issue?! Yes please on Twitter (15,000 impressions, 900 engagements)
  • 14.2 Oh hey check it out. Pronouns AND name pronunciation is now in GitLab profiles on Twitter (5,000 impressions, 150 engagements)
  • 14.1: External API for status checks in MRs on Twitter (8,000 impressions, 500 engagements)
  • 14.1: Helm Charts repository on LinkedIn (1,100 views, 17 reactions)
  • 14.1: Kubernetes cluster image scanning on LinkedIn (2,500 views, 27 reactions)
  • 14.0: Pipeline Editor on Twitter (38,000 impressions, 1,400 engagements)
  • 14.0: Container Scanning in GitLab to use Trivy from @AquaSecTeam on Twitter (7,000 impressions, 100 engagements)
  • 14.0: Introduction of Terraform Module Registry on Twitter (4,200 impressions, 55 engagements)
  • 14.0: Cluster management project template using Helm 3 on Twitter (2,000 impressions, 64 engagements)

Past examples:

Wider community involvement is encouraged

  • Ask GitLab heroes in Discord to share their favourite upcoming feature on social.
  • Share the release MR with the review app, including this handbook URL for tips and best practices.

Review Features for Release Posts

Developer Advocates will take the end-user point-of-view and help review the release blog post items prior to a release around the 18th of each month. Reviews include:

  • Feature description and clarify on the problem/use case being solved.
  • Suggest promoting a feature to primary.
  • Add a feature from the Changelog, seeing huge impact or a missing addition.

The first pilot experiment was established with our Verify product group for GitLab 14.2 in August 2021. The DRIs were @jreporter (Group Manager, Product) and @dnsmichi (DE stable counterpart).

Product Feedback

Next to our user research campaigns and feedback in the project issues, we often see feedback and interesting ideas on social media. Sometimes users tag our brand account @gitlab, in other scenarios we discover them with searching for gitlab.

With moving this into a direct question like If there would be one feature you could add, what would it be?, this can help identify stakeholders and encourages for a more direct feedback loop.

This effort needs a cross-team collaboration between product & engineering, social and DE teams. Assigned DE DRI is Michael Friedrich.

Workflow:

  • Create a new DE request issue
  • Define the topic/scope
  • Propose a message for social, max. 280 characters.
  • Schedule the social share & document
  • Monitor the social share for responses
  • Move the specific responses to #product in Slack

Second iteration: Make this a self-service with a request form, and automated response collection/updates in Slack or similar.

KPIs:

  • Number of engagements
  • Issues updated/created

Team Evangelism

Move social shares into product channels, be it good feedback or additional experts required to answer. Tag GitLab team members and encourage them to respond/discuss on social media when they can benefit from the conversation. For heated discussions, stay within a small group of social media DRIs.

For incoming questions and involving more experts, Developer Advocates can help in Slack in #dev-advocacy-team.

Release Management

Example tweets for GitLab 12.9:

  • Pick a nice title and encourage everyone to try to create a new release: Have you created your first release through the in @gitlab yet? Let's do this!
  • Go to your demo environment and create 1-4 screenshots, including guiding steps (make this a mini tutorial)
  • URL to the release blogpost should be included
  • Mention @gitlab with the @ before the username
  • Use hashtags #gitlab #releasemanagement

Package

Example tweets for open-sourcing the registries:

  • Pick a cool title to encourage users to solve a use-case for them: Unstable npm mirrors no more: @gitlab got you covered - the NPM registry will be open sourced.
  • Go to your demo environment and create 1-4 screenshots, including guiding steps (make this a mini tutorial)
  • URL to the release blogpost should be included
  • Mention @gitlab with the @ before the username
  • Use hashtags: #gitlab #packages #registry