Free and open source alternative to ShareThis, AddThis, AddToAny
Update: Make sure you check out the comments! My post is just a launching point for some great commentary from staff at iBegin Share and Add to Any.
Every site with timely or useful content should utilize some on-site bookmark sharing tool. I’m talking about the bar of links to social networking sites like Facebook, Digg, Reddit, Twitter, etc. that you find at the end of a post. These buttons are preset to recognize the URL of the page they appear on, allowing visitors to quickly propagate your content to their digital lifestream. Wordpress specifically offers a ton of plugins that offer such functionality.
The most popular tools use Javascript to display all the sites in a popup: Add to Any, AddThis, and ShareThis. Speaking in terms of pure function, these tools are great: they make sharing functionality readily available without cluttering up the display.
However these JS-based bookmarkers possess some significant downsides. First and foremost are the performance concerns. These tools are all stored remotely, and get loaded on your page as a javascript include. Here’s an example of the code from ShareThis:
<script src="http://w.sharethis.com/button/sharethis.js#tabs=web%2Cpost%2Cemail&charset=utf-8&style=default&publisher=abc123" type="text/javascript"><!--mce:0--></script>
Pay attention specifically to src="http://w.sharethis.com/button/sharethis.js[...]". It’s just a normal URL, like any page you visit. This means that each time the page is loaded, the user’s browser goes off to retrieve a copy of the javascript required to display the button. Aside from the obvious bump in bandwidth usage, they can cause an obvious delay in page loading. Worse, if the service is experiencing any kind of slowdown or outage, including these services can cause your site to hang and timeout. And these services do hang on a regular basis. I’ve seen it last so long on my own blog that I’ve had to disable to the plugin until service returned. That the delay is not your fault does not matter; it slows your page down, making you the laggard in the eyes of users. Not good.
But while these services are not focused on reliability and uptime, they do spend an awful lot of time on data collection/aggregation, legal, and advertising. None of these are good for you, the site owner. All activity surrounding the button on your site is tracked. They can partner with ad networks, packaging in extra ad cookies when the button is served up. Aside from the privacy issues, this again increases bandwidth. Imagery — specifically the branded icons of each service — are copyrighted, making them subject to usage restrictions and leaving you open to dealing with pain-in-the-ass take-down requests. Update: Per conversation with Add to Any Founder Pat Driven in the comments, Add to Any actually avoids this type of language entirely, limiting all their legal jargon to a plain-speak Privacy Policy.
To be clear, there’s nothing inherently wrong with any of this. These are businesses, they provide a service and have to make money to stay alive. However I think the vast majority of users just want the fancy javascript popup, everything else is excess baggage.
Enter iBegin Share, a free, open source alternative for javascript-powered bookmark sharing. Instead of going offsite to retrieve code at each page load, iBegin Share runs locally on your site, saving you bandwidth and decreasing load time. iBegin Share tracks usage like its corporate counterparts, but that data is stored in your database and used for your own data tracking purposes only, saving more bandwidth (since it doesn’t have to communicate back) and your privacy. Finally, since its open source you can modify the code any way you want: change the look, layout, color scheme — the tool includes 4 preset color schemes, plus an option for text vs. button link — even add totally new share options. A Wordpress plugin version is available.
On the downside, external documentation is pretty thin at the moment, but the code is well-commented. There is also a forum, but activity there is rather limited right now — a discussion on a seemingly common issue started earlier this month has yet to receive any official word. So you’re on your own with any heavy customizing or problems, but I suppose that’s the tradeoff for eliminating any third party eyes poking around your traffic. Assuming it works as advertised, I’d argue that it’s a far better deal than the other tools, even without any customization ability.
If you decide to give iBegin Share a shot, or if you’re using it already, I’d love to hear how it’s working for you. Please share your experiences in the comments.




Data security without software or hardware
First, you did a great job articulating some of the differences between sharing widgets and home-brewed/OSS.
Second, iBegin Share is a sibling user of the Open Share Icon, and I’m very partial to open source.
Third, my counter-argument.
AddToAny is a deploy and forget solution. Those living in the golden age of AddToAny’s ‘06 widget code still have a 100% functional sharing tool.
The tiny cost of using AddToAny is external dependency, which has been traditionally averted anyway by locally hosting the script and receiving periodic updates (for those who can’t have dependency for policy reasons).
The advantages are:
* Deploying once
* Giving your users access to the latest relevant sharing tools
* Not having to worry about changes:
– updates to URI schemes, services names, icons, new services, defunct services (these things change all the time)
* Automatic updates that improve the speed, compatibility, and usefulness of the widget
* Cheaper: you don’t have to serve the static content
Performance-wise, AddToAny is optimized like crazy. It’s cached, minified, and served quickly. If you use the WordPress plugin or Drupal module, the external script is the last component to load (if not already cached to serve locally) so your content always loads first even if the user can’t reach static.addtoany.com.
I won’t go into other functional/technical specifics, but versus iBegin right now, there are only 2 – 4 other HTTP requests to iBegin’s 14 when either drop-down appears.
I know, dear OSS brothers and sisters, that that can be helped.
So in my of course biased assessment, the advantages of using AddToAny outweigh the cost of external dependency (which isn’t always requisite to utilizing AddToAny).
Now I do have issues with some of the points you made, and I mean this politely, but frankly your 5th paragraph is full of FUD. We’ve never been focused on legal, definitely not ads, and being focused on reliability/uptime simply comes with the territory. A takedown notice for favicons? Never once in 3 years has this been an issue, and I’ve never heard of such a case.
Aside from those glaring issues, I enjoyed reading again about iBegin and welcome your thoughts on AddToAny anytime. Thanks, Frank!
I’m flattered that I attracted the attention of Add to Any’s founder. Glad to have you in the conversation, Pat.
You’re quite right that tools like Add to Any are “set it and forget it” solutions in comparison to iBegin Share. The difference of course is in the download; I have to grab a code package for iBegin, while Add to Any is a copy-paste job.
However I’d say that’s a non-starter, because they still require roughly the same amount of effort to install. The basic Add to Any button code requires me to edit at least one file and upload it to my server, I just upload a few more files with iBegin Share. The steps are identical if I use the widget/plugin versions of either one — download, optionally configure, upload to site.
Now all that being said, bandwidth and load time penalties are still more important than saving a few seconds in setup. Add to Any will certainly sway non-technical users, and more power to you for serving that market. But most technically savvy webmasters and web developers place greater emphasis on performance, especially when the alternative has the potential to cause timeouts.
Which is why I found this part of your response so interesting…
Are you saying that I can download and serve a complete copy of the Add to Any code locally from my own server, without any URL requests? If so, the Add to Any site is doing a horrible job of advertising this functionality. After reading this I scoured it looking for how I might go about implementing it and came up empty. Again, savvy webmasters would be interested in this type of functionality for all the reasons I’ve described.
Regarding my comments on the use of ads and tracking, it’s not FUD if it’s true. The Terms of Service for both ShareThis and AddThis contain verbage speaking to the concerns I raised. The ShareThis Privacy Policy also has some language worth considering. In contrast and to your credit, Add to Any only contains a Privacy Policy, and uses much less legal jargon and verbage in general. I’ve updated the post accordingly.
Finally I have to call you on some FUD of your own…
iBegin Share doesn’t make any HTTP requests. At the end of
share.js, there are 14 calls to a method calledaddService. Each call corresponds to one of the 14 services that appear in the latest version of iBegin Share. This method is used to add those services to the menu. One of the arguments is a preformatted URL string representing the submission link for each service, and is used to create the link for each service. Note the__TITLE__and__URL__strings in there, which are replaced at runtime with the title and URL of the page being served. No external communication occurs in this process.I’ve been through the code several times now to be sure, but let me know if you’re referring to something else. Assuming we’re on the same page, the correct number of HTTP requests is actually 2 – 4 in Add to Any vs iBegin’s none.
“Are you saying that I can download and serve a complete copy of the Add to Any code locally from my own server, without any URL requests?”
Yep, we help with that on a case-by-case basis, and you’re right that it’s not something we’ve advertised yet.
Friendly performance comparisons:
iBegin initially:
share.css
share.js
iBegin on drop-down:
20 requests – all images
Keep in mind that all iBegin files ideally need to be cached, and minified or smushed.
AddToAny initially:
page.js
AddToAny on drop-down:
2-4 requests
– 1 transparent pixel
– 1 sprite image of icons
– 1 optional Digg API lookup for # of diggs/comments
– 1 optional Delicious API lookup for # of saves
Yep, we help with that on a case-by-case basis, and you’re right that it’s not something we’ve advertised yet.
Just my $0.02: you need to publicly launch that feature yesterday. You and I can talk load times and compression all day, but I’d wager that the majority of users don’t see much difference between you and your competitors: a pretty button that reveals a pretty menu. The ability to run the code locally is a real differentiator.
Alright so your 14 http requests argument has become 20 image downloads. The story’s changed a little, but I’ll grant your point: Add to Any eliminates multiple images using an image map, and reduces all the surrounding imagery (menu borders, etc.) to CSS definitions. Good optimizations, to be sure.
A little balance to your performance comparison: I tested iBegin and found that their code also does not download the images until the menu is loaded. Activate “Network Monitoring” in Firebug and check out the image load timeline.
As for the images themselves, Add to Any has all the icons in a single PNG — http://static.addtoany.com/menu/icons_15.png — and weighs in at 24.94 KB. Great example of CSS image mapping, btw.
iBegin has 7 images (7.91 KB total) that load each time automatically, and an additional 14 images (12.48 KB total) when the menu loads. That’s 20.39 KB total, so total imagery in iBegin weighs slightly less.
Of course image size is only part of the puzzle; we’re not accounting for JS file size, CSS code size, minifying, etc. iBegin only displays 14 total services but utilizes a larger display. Add to Any can expand to show a ton really obscure networking sites, but the font size is excruciating at larger resolutions. 21 small images versus 1 that’s slightly bigger…
My point in all this? The performance comparison is so close and so nuanced as to be negligible, and makes external dependency the deciding factor. No matter how much optimization you do, if your service goes down and I’m serving the Add to Any button, my pages timeout.
Add to Any’s functionality would have to attain an interstellar level of awesomeness to overcome this shortcoming in a side-by-side comparison. I’m not worried if my users can’t link directly to Shyftr, or Eskobo, or Rasasa (until they tip anyway), so local hosting wins.
Which again brings me back to your unofficial local hosting feature. If you begin to support that on a broad scale, I’m out of arguments. There’s more share options, no legal concerns, and its continuously supported. That’s some of the juiciest low hanging fruit I’ve seen in a while.
Fun times – fun times
Thanks for the wonderfully glowing review Frank – it has motivated me to get a better job done.
I kind of find it unfair that AddtoAny compared graphic sizes – we have big bold graphics, and as we are a customizable system (adding your own services is pretty easy), using one image and CSS would break everything. This of course does not mention our big easy-to-remember icons vs the smaller ones for AddToAny.
Lastly, and I believe this is most important – iBegin Share was a little script we developed to use on the site – but never did end up using (as priorities changed). ShareThis, AddToAny, et all are fully functional websites/companies – and yet at the end of the day the offerings are quite identical. Fun times.
Just a quick note, we fixed a few issues tonight, including the issue with My PC and Printer not showing up in the WordPress plugin.
Thanks for the support!
This is quickly becoming one of my favorite posts.
Ahmed, David, glad to see you both made your way over here. I completely missed the fact that the customizability pretty much requires individual images, so I’m glad you decided to chime in.
Let me take this opportunity to give my heartfelt thanks for the work you’ve done on this product thus far. It’s fantastic. I hope it provides the professional exposure you deserve for the work.
To be fair, I think Pat does an excellent job articulating the strengths of his software, and those arguments are not without some merit. I do genuinely believe that Add to Any could break away from the pack if they started pushing the localized version of their software.
But open source software always provides a unique advantage over any corporate product. All things being equal — which in this case I’d say they are — open source always has the advantage.
David, I’ve installed the update and it works beautifully. Thanks for the fixes!
Touché.
You wrote:
Pay attention specifically to src=”http://w.sharethis.com/button/sharethis.js[...]“. It’s just a normal URL, like any page you visit. This means that each time the page is loaded, your web server goes off to retrieve a copy of the javascript required to display the button
This isn’t true; it’s the user’s browser that fetches the URL, so there is no impact on your server’s bandwidth. There is an impact on the page load time for the user, and on w.sharethis.com’s bandwidth, but not on your web server.
You’re absolutely right, Sacha. Remote javascript is download by the browser at the request of the page being served by your web server. The server’s only job is to tell the browser, “Hey, get this from over there.”
My verbage was simply a typo, consequence of a train of thoughts getting smashed together while writing the post. I’ve changed the entry, and thanks for pointing it out.
Thanks for this informative post. We’ve been debating which bookmarking plugin to use for our wordpress powered blog and this gives us something to work from.
What I initially like about iBegin Share over the others is the ability to convert posts to pdf and word docs, which is an important features to offer our users. We’re a travel blog and letting them make their own travel guides this way is useful in travel planning.
Thanks, Frank, for all this.
awesome article and many comments that are useful
i have realized that flashy shiny icon as social bookmarking slowed my page down, so right now i am testing various one, including ibegin.
great site
Thanks. Great discussion. I’ve been researching the Flash tracking issue with AddThis and have pretty much decided to switch to AddToAny. For me, the AddToAny design is so well resolved, and the fact that it updates itself is so helpful, I just can’t resist it. The level of polish is significant and very appealing. Having that 99% of the time is good enough for me (I’ve actually never had it go down for me on any of the sites I see using it.)
Now about the external dependency issue, the important thing to me is to choose my external dependency wisely. For example, unless I’m missing something, this page uses reCaptcha, which is an external dependency, right? I assume it’s being used because there is no free alternative? At my office we’re not allowed to use this reCaptcha tool because of the external dependency problem (so we had to buy a commercial version). However, we are allowed to use AddThis or AddToAny. For us, a security tool like captcha is more important than a sharing tool, so we disallow the external dependency for security-related functions and allow it for non-critical functions like sharing.
For sharing we go for beauty and user experience over all else, and that’s where I think AddToAny really shines.
Thanks again for the great site!
Hi Frank,
great article! Just found it, when I was desperately searching for a solution for a loading time of >1 minute for my site nadelspiel.com (seeing the attempt to loading static.addtoany in the browser bar).
Changed to ShareThis immediately (WP plugin) – loading time perfect now.
Will let you know, how it works for me…
Kind regards from Austria,
eliZZZa
If you have even rudimentary JS skills, Another option for solving the loading-time issue on scripts which may not be deferrable, is to use the noscript tag and a static, inline document.write to display a throbber if JS is enabled (I suggest one of the mid-sized circular ones from http://ajaxload.info/) and then, using an onDOMComplete wrapper (I use jQuery’s $(document).ready()), inject the AddThis/AddToAny code after the page has been fully rendered.
That’s what I’ll be doing as soon as I can find the time to implement it as a WordPress plugin. (I don’t like having to remember that I’m using a modified theme and jQuery doesn’t come standard)
Fantastic post Frank!
Great to hear the opinions from the developers too.
I’m doing a little research into the major social sharing providers such as: AddThis, ShareThis, AddToAny etc.
There’s no ‘About Us’ on the iBegin site.
Can someone provide details regarding:
01. Who founded iBegin?
02. Key People?
03. Current reach (how many users have installed it?)
04. Sites (how many sites is it on?),
05. Alexa Traffic rank?
06. Plugins / Extension supported?
07. Any examples of iBegin in use in the real world – on big named sites?
08. How often it’s updated
09. Last significant update
10. Future plans…Addtoany, sharethis and addthis have some good added value services e.g. ShareThisStream.
I prefer the iBegin model it’s faster and slicker and the large icons are great. (printer icon could do with being revised) but, I’m concerned that iBegin lacks features and will not be able to compete with aforementioned social sharing providers.
Cheers