Posts tagged ‘api’

January 15th, 2013

How to Create a Successful Open Source Business Model

by Zohar Babin

This post was originally published on the Computer Weekly Open Source Insider blog. It was written by myself and Dr Shay David, co-founder of the Kaltura.

open source comapnies icon v2

Open source projects are measured by the size of their developer communities, by market adoption, by the number of downloads and other such metrics; companies are measured in terms of revenue and profits.

Often, attempts at maximising profit can conflict with the interests of the community or the adoption metrics. So how can competing interests be aligned?

What makes for a successful balance that allows a commercial open source software company to thrive while serving all of its masters?

Open sourcing commercial software poses many challenges, the biggest of which revolves around the meaning of ‘FREE’. At the heart of the matter is the need to release code for free vs. protecting existing business interests, staying ahead of competition, and allowing customers to own their commercial deployments.

There are various ways to make money while developing open source software, including:

● Providing integration and support services (Acquia)
● Selling subscriptions to updates and support (Red Hat)
● Selling proprietary components to segments of the user base (Funambol)
● Selling premium plugins, applications, services and themes (Joomla, WordPress)
● Selling hosting services (i.e. Software as a Service SaaS model, adopted by companies such as Acquia, Alfresco)
● Selling the software under a commercial licence and releasing the code under an open source licence simultaneously, aka Dual licensing (MySQL).

As an example, at Kaltura we chose to maintain a combination of business models, leading with a dual licence model that is combined with a SaaS offering and an API centric architecture. Released under AGPL and a commercial licence, Kaltura has rapidly grown to be the leading media management platform on the market.

Adopting a dual licence approach enables developers and customers to adapt and modify the open source software to their needs, while the commercial licence allows companies to provide customers with the ability to keep derivatives – or to embed the software in proprietary solutions along with warranty, indemnification, and professional services. For those who need help running their system, a SaaS offering provides a set of affordable hosting services.

An open API architecture is also important. It provides platform-agnostic means for developers to create video-centric applications quickly and cost effectively. As an example, Kaltura’s community and partners program (dubbed the Kaltura Exchange), enables developers and third party vendors to play an important and valuable role in extending the Kaltura software, by building innovative solutions on top of our video platform and expanding its reach to new markets while supporting the ever-growing needs of the existing customer base.

The last few years have shown us that open systems win every time: Android, for example, now outsells the closed iOS 2.1, despite Apple’s huge early lead. Every large organisation in the world now relies on open source software for mission-critical infrastructure. By combining different open business models software vendors can do well by doing good. Gone are the days where customer retention was achieved by locking data into proprietary formats or developing secret software.

With its extreme transparency, open source forces vendors to focus on creating customer value – or risk becoming obsolete. Entering the virtuous cycle of value creation that customers are willing to pay for, rapid development that leverages the community, and quick cycles to create more value… this is the promise of good open source business models.

June 21st, 2012

Want to Improve Search and Video Recommendations? Try The New Tags Editor

by Thomas Huzij

Tags are awesome, but only if you really give them the attention they deserve. Just like kids (or pets) each one is different and deserves special care. However, what do you do when you have 100s of them? We had this problem with the Kaltura Video Portal and we needed a smarter way for metadata management. While the KMC (Kaltura’s Management Console) provides many robust versatile tools for managing your media and its metadata, simple fields like tags, are managed only at the entry level, while missing the overall-view of your content library.

 

Introducing Tags Editor… 

 

 

 

 

 

 

 

 

Tags Editor is a new tool to let you quickly and efficiently add and remove tags from your media entries. What used to be slow and tedious has now been made a painless process. Updating the tags for your videos has never been easier.

 

Before the Tags Editor

 

  • To update the tags for your videos, you would have to go through each individual video in the KMC and update the tags. This would be slow because the KMC has to track a lot more metadata than just the list of tags.
  • Updating individual entries could lead to many redundant tags. For example, one video might be tagged with “aquarium” while another may be tagged with “tank”. There was no way to track all of the tags you were using across your entire media.list
  • If you no longer wanted to use certain tags, you would have to track down every video with those tags and remove them manually.

 

How the Tags Editor makes things easier

 

  • Keeps track of all the tags in your media.list and even counts how often they show up. This lets you know just how many videos are using certain tags.
  • Rather than typing out tags for each video, you can add tags to your temporary tag database. Once a tag is in that database, adding it to individual videos is much faster and ensures that no redundancy occurs.
  • When using the “Remove Tags” form, removing a tag from the database will go ahead and actually remove it from all of your videos so nothing is left over.

 

The libraries used to get the job done

 

  • Kaltura’s PHP5 Client Library
  • Harvest’s Chosen to make all the delightful and user friendly select boxes
  • Loadmask, a jQuery plugin to mask elements while they’re loading and prevent any hiccups

 

A trick used to access all the media entries

To generate the list of tags for the user’s entire media.list there is no choice but to traverse every entry and retrieve its tags. However, doing so without a filter and using a pager to increment the page index will not end well. The server has a hard limit of 10,000 entries when accessing the media.list. A user may in fact have more than 10,000 entries stored but without the proper filters you cannot simply go in order and access all of them using a pager. There is however a way to get around this and it involves a clever use of filters.

As the entries are traversed there are two properties that we keep track of, their creation time and their entry id’s. The page index on the other hand is not used at all. Instead of blindly going through each page, we set a filter that arranges the entries by their createdAt times in descending order. So when a call to the API is made to retrieve 500 entries, it retrieves the 500 newest entries it can find.

So now we’re starting to get somewhere. However, if we were to create a loop, this would just keep giving us the same 500 entries over and over. This is where the filter’s “createdAtLessThanOrEqual” and “idNotIn” fields come into play. Each time the loop iterates, the id of every entry examined is added to a list and we record the entry’s createdAt time as well. That way, the next time the loop iterates, createdAtLessThanOrEqual and idNotIn ensure that the 500 entries being pulled from the server have not been traversed yet. This is much faster than using a pager and gets around the server limitations.

 

Source Code

The source code for the tool can be found at our Github page.

Feel free to fork it or suggest new features!

 

Demo

You can view a demo of Tags Editor by clicking the thumbnail above or right here.

 

Stay tuned for more API best-practices and apps. To learn more now, check out the Kaltura API Documentation Set and subscribe to the Kaltura Newsletter.