Some comments regarding new licensing policy for Image Uploader 6

posted by Andrew on 8 June 2009, 00:03

Hi there,

We made pretty serious changes in the licensing policy for Image Uploader 6. It is not similar to the old one and someone may be confused with it. However I strongly believe that it is much more straightforward. That’s why I decided to write this post to explain our point of view on the licensing questions.

Single Domain vs. Express/Standard/Professional

From the very first version of Image Uploader, the primary license type was a Single Domain license. It was issued for a website with one full-qualified domain name, and it was limited by a single server. For more servers, a separate license type called Web Farm license was provided (the reason why multiple servers require additional licenses is outlined below). Things were getting complicated when such websites required multiple domains, etc.

Taking into account our past experience with customers’ licensing demands, we have reviewed our licensing system. Now each website requires only one license. This license allows using it with a single server and one domain (other limitations are omitted for brevity, so refer licensing pages for more details on this). If this is not enough, you should extend the license with so-called connectors. There are two kinds of connectors – server connectors and domain connectors.

This license plan is called Standard. It has a sibling – a license plan called Professional. The only difference is that the Professional version includes some additional features primarily interesting to the photo printing companies.

These license plans are more consistent comparing to the Domain and Web Farm licenses. However they may seem pretty expensive for a number of customers. But we wanted to keep Image Uploader affordable for startups and small websites as well. That’s why we offer an Express license plan in addition to Standard/Professional. It is very similar to the old good Domain License, but however it includes fewer technical support features.

I would like to comment this point with support. For a long time, our policy was to provide the same level of technical support to everyone. But in the course of time we got a number of customers who have special requirements for the support - guarantied response time. That’s why we made a difficult decision – we provide unlimited high-quality technical support with guarantied reply in 24 hours to Standard/Professional customers only.

But it does not mean that Express customers do not get any support at all. They still can submit up to 2 cases, and of course they can post messages on forums. According to our statistics, it should satisfy a big number of our customers.

About Server Connectors

Some people wonder why the price for the client-side software like Image Uploader depends on the number of servers, their CPUs, etc. Let me explain.

Ideal fair measure for a software price should be the intensity of its usage. When we talk about common standalone desktop applications, it is easy to estimate – the number of workstations where the software is installed is a good appraisal. That’s why this licensing model is so popular for such kind of applications.

However when we consider such application as Image Uploader, it is not so easy. On one website Image Uploader may be downloaded by 1000 people, on another one – by 1000000 people. And the worst thing is that a website owner is not always able even to calculate this number. The same situation we see if we try to use some similar metric, like amount of uploaded data or something like this.

That’s why we decided to use another metric – the power of the server side which processes the upload (i.e. the number of servers, etc). This value is clear and easily managed by the website owner. And it seems to be fair enough, because it is unlikely that someone will purchase and configure large web farms and let it be idle. So to make the licensing policy scalable, we just deem each additionalserver, CPU, or CPU core as a separate unit which requires purchasing a connector to the main license.

The arguable question here is whether to interpret multi-core CPUs in the same way as multiple single-core CPUs. On the contemporary market all new server CPUs are almost always multi-core, so it may seem not very good idea. But on the other side, it is obviously that 32-core SPARC is not the same as typical multi-core Intel or something like this. So the decision worthy of Solomon would be to set a threshold value for the number of cores which divides typical multi-core CPUs from something special like SPARC. In our case we consider CPUs with up to 8 cores as a single unit.

And the last aspect I would like to discuss regarding server connector is what to do if you use a virtual hosting rather than run it on real servers. This is especially actual because of growing popularity of such services as Amazon EC2, and similar.

Of course we do not have anyone to purchase licenses for all underlying hardware of Amazon EC2. Virtual hosting providers allocate resources in so-called Computing Units. Each such Computing Unit has the power comparable with common server with typical configuration. That’s why we just interpret such Computing Units as servers requiring connectors, not the real underlying hardware.

Single-owner Website vs. SaaS/Commercial Apps

In the previous section I explained how we make the price scalable based on the product usage intensity. But this is not the only parameter which should be considered. One more crucial parameter is whether the website is used by a single owner or itis an application used by multiple third party companies.

Imagine you build Image Uploader into a CMS engine. You host this engine on your server and let your customers an account, and create websites based on it.  From our point of view such usage of Image Uploader may be interpreted as reselling to third parties.

In such situation Express/Standard/Professional license plans do not work here. This is where we use classic license model for software component market. The idea is the following: instead of purchasing a website license with connectors, you purchase SDK licenses per each developer on the application development stage, and when you run it to the production, you purchase deployment licenses per each client.

Depending on your situation and what is preferable for you, you either purchase blocks of deployment licenses which cover all your present and future customers, or acquire a license for each separate customer.  But the general rule is simple – the price depends on the number of your customers, not on the intensity of the software usage.

We divide single-tenant and multi-tenant applications pretty long (at least from version5.0 or even earlier), but earlier it was less obvious, and it lead to misuse of some kind of old licenses. Hopefully now we managed to make it clearer.

Where is an IP license?

One of the main questions our previous customers may have is what an analogue for the IP license is.  This is quite ambiguous question.The answer depends on the nature of the website you run.

1. If you have single-owner website and need the IP license to cover all its domains (e.g. www.example.com, www.example.net, www.example-alias.com, subdomain.example.com etc.), you should switch to Standard or Professional license + appropriate number of domain connectors. If the number of domain connectors is not reasonable, we can provide special connectors for IP address or whole domain tree on aspecial request.

2. If you have a hosted application,you should switch to SDK/deployment model. If the number of clients of your application is more or less constant and do not grow extensively, most likelydeployment fee will be a block of licenses which will cover all your customers for the nearest year or other period of time.

Holders of the old IP license may have a concern about the price of deployment license block or IP connector. However I would like to ensure you that there will be no price skyrocketing. At least its order is the same as for old-fashion IP licensing.  

 

I hope I shed some light on new license policy and made it clearer. If you have any feedback or would like me to write one more post about some aspect of licensing questions, do not hesitate to leave a comment here.

Image Uploader 6 Available on Site

posted by Dmitry on 21 May 2009, 22:05

So, long awaited Image Uploader 6 is posted to the site today. Everybody can download this version and try it out. If you have some questions, difficulties or just something to say us, do not hesitate to contact us. We always value your feedback very much.

Image Uploader 6 - Coming Soon

posted by Dmitry on 10 May 2009, 23:13

Started planning of new Image Uploader version we decided to focus on three goals: support of images of big size, usage simplicity, and wide support of browsers.

The first goal – support of big images – is the solution for well-known problem when Image Uploader was unable to create thumbnails for big images and sent icons instead. We realized that modern cameras increase megapixels from year to year and the problem became serious. Our development team had to reimplement image processing modules of both ActiveX and Java versions and as a result we have support of large images and have increased the quality of thumbnails.

The second goal – make Image Uploader easier to embed to customers’ solutions – required to survey what platforms were used by our customers. We found out that two of them – ASP.NET and PHP – form absolute majority. We implemented special solutions for each platform (Image Uploader ASP.NET control and Image Uploader PHP library) wrapping Image Uploader and allowing to use it in a straight forward way on a platform.

The third goal is support of modern browsers. In recent times several new browsers were released – Chrome and Internet Explorer 8. We made some efforts to test Image Uploader on these new ones and adapt the control to them. As a result Image Uploader supports these two browsers and Opera 9 additionally.

Here is the overall list of new features and improvements in Image Uploader 6.

Both ActiveX and Java Version Improvements

  • Three editions of Image Uploader are available: Express, Standard, and Professional.
  • Memory friendly image processing.
  • Image Uploader ASP.NET Control and Image Uploader PHP library solutions making Image Uploader usage easier on corresponding server platforms.
  • Support of cloud storages: Amazon S3 and Nirvanix. Now Image Uploader can upload files and metadata to these online storages.
  • Support of AJAX-enabled applications. Now visibility of Image Uploader can be handled via CSS.
  • The ability to customize POST request sent by Image Uploader was improved.
  • Image Uploader supports review of response sent by web server back in the ImageUploader.PackageComplete event.

ActiveX Version Specific Improvements

  • Support of Internet Explorer 8.
  • Support of new non-admin ActiveX controls feature in Internet Explorer 8.
  • New installation progress of Image Uploader ActiveX control.
  • Improved estimation of remaining upload time in the progress bar.
  • Refactored memory management. Several problems that could be potentially led to crash were found and fixed.
  • The problem when Image Uploader froze on “waiting for response from server” stage was resolved.
  • Fixed several problems with drag-and-drop functionality in upload pane.
  • Thumbnail in the progress dialog can be hidden now.
  • Fixed the problem when some methods and properties of Image Uploader became unavailable in the case when InitComplete event handler was specified.
  • Fixed several problems with saving and restoring of upload list.
  • A number of minor improvements and bug fixes.

Java Version Specific Improvements

  • Support of Chrome and Opera 9.
  • Improved quality of resize.
  • Increased speed of folders tree navigation.
  • Windows 2008 network shares are supported now.
  • Fixed the problem with proxies on Windows platforms.
  • Now files can be deleted after upload.
  • Now files can be deleted from folder pane.
  • Fixed the problem with checkboxes on Mac platform.
  • Fixed the problem with tree pane refreshing.
  • Fixed several problems with saving and restoring of upload list.
  • Fixed the problem with extracting of UserComment fields from EXIF.
  • Fixed the problem with deleting of temporary files created by Image Uploader.
  • A number of minor improvements and bug fixes.

Video Uploader. Why WMV?

posted by Dmitry on 15 April 2009, 18:14

Nowadays video content becomes more and more popular on the Internet. Social networks as well as corporate web sites require hosting of video content and playing it online.

The major problem for video content on the Internet is that current internet browsers do not include any video decoders. So if you want to play video online you will have to install some stand-alone platform. I would highlight two major platforms allowing playing video movies:

  1. Adobe Flash.
  2. Microsoft Silverlight.

Let us consider these two platforms in terms of video support in detail.

Microsoft Silverlight

We all know that Silverlight is officially supported on Windows and Mac platforms. Also there is Moonlight project which is Silverlight implementation for Linux platforms. Starting from the very first version Silverlight supports decoding of WMV format. Moreover, Microsoft has opened WMV decoder source code and granted its usage in Moonlight. So decoding of WMV format is supported on the major computer platforms.

Adobe Flash

During the last years Flash became standard de-facto for playing video on the Internet. The most of users know the video format supported by Flash as FLV but it is not exactly true. FLV is the video and audio container used to deliver video and audio content from server side to the client. The format of this container was opened by Adobe on May, 1, 2008. The container itself can contain the following video formats:

  1. Sorenson spark, minimum required flash player version 6.
  2. On2 VP6, minimum required flash player version 8.
  3. H.264, minimum required flash player version 9.

Now we know what video formats are supported by Flash and Silverlight. Let us examine licensing policies for them.

We get used that image formats usually have open format and reference encoder libraries. You can use these encoders for free. Video formats unlike images get the problem here. They all are patented and have an interesting trick. Decoding is free for end users and does not require any royalties though encoding is not royalty-free. So even if you get Mpeg4 format reference (H.264) and implement encoder by yourself, you will have to pay royalties for its usage. So then…

Video Formats

WMV format

It is Microsoft format for storing and streaming video widespread on Microsoft platforms. There is free for use Windows Media Encoder which allows encoding to WMV. The only limitation is that it works on Windows only.

Sorenson Codec

This video Format is extension for H.264 designed by Sorenson Media, the specification is not opened. The encoder is the part of Sorenson Spark SDK. It seems that this codec was licensed by YouTube and Google. Sorenson do not publish the pricing on their site but anyway it is not a free encoder.

On VP6

Like Sorenson Spark On2 VP6 is the extension for H.264 designed by On2 Technologies, the specification for this format is not opened too. This company sells encoders for this format as part of On2 VP6 Codec SDK and Flix SDK for Direct Show. On2 do not publish pricing on their site as well.

H.264

It is known as Mpeg4 format which is standard de-facto in the world of digital video. In contrast to the previous formats it has opened reference. Nevertheless it is heavily patented and there is a special company MPEG LA that manages licensing royalties for this format. We examined licensing policies and found that there are two major options:
  1. For decoder/encoder suppliers who integrate them in end-user solutions.
  2. For service providers like IP TV and so on.
In both these cases royalties are required either for each copy of product or for each movie transcoded and streamed server-side. There are a lot of codec suppliers for Mpeg4 format but it seems that they provide implementation only. The licensing stuff is a headache of the company which purchases the codec and wants to use it in its solution.

Video Uploader

Summarizing, we all understand that there are a lot of video formats worldwide in addition to listed ones. Nevertheless, if we want to play movies via the Internet we have to transcode them to formats that can be played back in internet browsers (using Silverlight of Flash). And the core feature of our Video Uploader is transcoding of video movies to a single format relieving server platforms of encoding operations. This way all operations with movies are shifted from server side to the clients simplifying server logic and decreasing server hardware requirements. We have chosen WMV format. Why? Since you do not need to pay anything if you use it on Windows platforms. Today when we released beta version of Video Uploader ActiveX and started getting the feedback from you, our customers, we are searching the way to implement Java version of the product and decide on the question with video-related licensing for our customers.

 

Video Uploader Beta Released

posted by Max on 14 April 2009, 18:20

Video Uploader Beta

We finally release the beta of Aurigma Video Uploader, a tool that enables you to feature your web site with video uploads with as little hassle as possible.

Below I explain how exactly this is achieved.

Before the videos are uploaded, they need to be transcoded. Aurigma Video Uploader performs transcoding on the user PC, which benefits you in three ways:

  • Your web server(s) is relieved of an ultimately performance-taxing task.
  • You receive already compressed files, which greatly reduces inbound traffic.
  • You don’t need your web server to have every possible codec that your users might have. You just receive the videos in compressed Windows Media format, ready for playback over Web.

Next, you plan to have every video watermarked with your logo and arbitrary text. Also, you want to have every video frame downsized to, say, 512 by 384 pixels.

Video Uploader resizes and watermarks video clips while transcoding. Again, this saves much time, server load and inbound traffic. What is also important, Video Uploader works with any web server platform out there.

The end user does not have to install any software, only the ActiveX control. The uploads are made directly through browser, without leaving the target web site. The user can start the upload in only a few clicks, selecting target movie duration and starting time, frame size, bitrate, and frame rate. When transcoding and upload take place, respective progress bars are displayed to track the progress.

The transcoder was provided courtesy of Medialooks company, video streaming and coding/decoding experts.

The uploaded videos are readily played back via Web. Here, any free Silverlight video player that supports WMV can be used.

We encourage everyone to suggest features and report bugs.

Video Uploader beta can be downloaded at http://www.aurigma.com/Products/VideoUploader/FreeTrial.aspx

Aurigma Flash/Flex experiments

posted by Alex on 14 April 2009, 18:00

Recently we have decided to widen our experience (and maybe products line) and to investigate new Flash/Flex platform. The task was to create file-upload solution with some client-side image processing. This post contains a summary of our experiments. However, I'm a full newbie in Flash/Flex, so feel free to add your notes and comments.

The beginning was great - I have just opened FlexBuilder and found many cool things. Stable and fast visual forms designer, easy-to-learn syntax, all major OOP concepts and even compile-time type checks. Oh, and of course - shaders! Really amazing stuff. However, after few days my impressions were not so bright. Why? Here the whole list of reasons.

Security restrictions

It is really a problem number one. As I was interested in upload functionality, I started with URLLoader class. It cannot post anything to server if this action is not initiated by user directly. Very reasonable. So, each time when you call URLLoader.load() you should have something like button click handler higher in stack. It prevents malicious apps from stealing user data. But...

There is another thing about Flash/Flex which you should know. It is event-driven platform with many asynchronous calls. E.g. if you want to load file - you should call FileReference.load() and wait for "complete" event fired by this object. If you want to load SWF movie or JPEG image - you should create Loader object, ask it to start processing and just wait for the event. Very simple! If you are not going to upload an image you have, to go to fullscreen or do anything else from the list of restricted actions. But if you are - you are in a big trouble. By the reason of the fact that "complete" event fired from another thread - there is no UIA (user-initiated-action) handler in stack and, hence, you have no permission.

Adobe docs says - "you should show message and ask user again". You have to ask, even if a user just clicked "Do this" button just because you have asynchronous call in the middle of your operation. Really annoying. Actually, I don't understand why a bad guy cannot show message and ask user some innocent question? User will give him a permit (why not, if question is innocent?) - and he will do his dirty business...

And there is also another bug with URLLoader - it doesn't fire progress event while uploading data from binary buffer. It is a known issue and I even voted for it. I would recommend you to do the same if you experience a similar problem.

So, URLLoader was evidently not the best choice. Next thing I tried to use was Socket. Yeap, it is not so easy to use, however, from the other hand it gives much more flexibility. Nevertheless, a few hours later it was evident that Socket is not the option at all because even if you are going to make uploads to the same domain where you host your SWF file you should have special policy server installed on the server. You cannot obtain permission policy from your HTTP server, no, only via special policy server...

Threads & Asynchronous calls

As I mentioned before - Flash/Flex is an event-driven asynchronous platform. But it doesn't support multithreading. Sounds strange, yeap? As far as I understand from blogs and forums - all ActionScript code is executed in a single thread. And asynchronous calls are just enqueued in some internal dispatcher. What does that mean? That it is simple to develop, it is hard to make a hardly-debuggable synchronization error. And this means, that you cannot run anything in background. There are workarounds which emulate "background processing", but they were not applicable in my case. Oh, I forgot to mention that shaders engine works in another thread, so if your task can be expressed in shaders programming language - you will be able to do it asynchronously and very-very fast. ;) Unfortunately, it isn't my case as well.

Summary

What do we have at the end? A very strange feeling. Get me right, I like Flash/Flex - it provides a bunch of great features, it allows to develop really fast, it works in a stable way... But sometimes it stalemates you, and you cannot do anything. Users will have nothing to do than bear user interface freezing or answer useless questions shown because of security restrictions in Flash.

It would be great to have the following things in the future:

  • Signed SWFs or any other mechanism to use instead of UIA concept. Or some mechanism which will allow passing UIA-permission via event chains.
  • Multithreading or at least something like yield() method.
  • Ability to work via sockets. At least with native domain. Without any "special server on XXX port", because it is not usable in real world with hosting providers, firewalls, and proxies.

Cast Votes for Aurigma Products at CodeProject

posted by Max on 26 March 2009, 00:43

Hi!

CodeProject is a great site for developers. Also, I believe that we produce componentry that's useful for dev guys. So, I've submitted some Aurigma products into the CodeProject catalog. You can vote, telling others about your overall impression from using our stuff:

Your opinion is really important to us.

Image Uploader and Drupal

posted by Andrew on 13 March 2009, 22:34

Hello,

Today I was amazed to learn that Image Uploader is popular enough to cause open-source community to create applications which use Image Uploader. I have discovered an Image Uploader based addon for Drupal - very popular open-source CMS. It is called Aurigma Uploader for ImageField. It allows to upload files as attachments to the pages and stories posted on the website.  This addon was submitted to the Drupal website by Aaron Wolfe.

Although this addon is pretty raw (I had to modify the source code to get it working, and it still displayed some warnings), it was great to learn that such addon exists. I believe it will be improved and people will find it useful.

I had an idea about series of addons for various open-source CMSes, but unfortunately we had not enough resources to get involved into it deeply. I am glad to know that open-source community finds it interesting to do it.

By the way, if Aaron or any other person involved into this addon development need any assistance with it, we will be happy to help. Just let us know. 

Graphics Mill 5.1 released

posted by Dmitry on 15 February 2009, 22:46

Last week we released new Graphics Mill 5.1. It was minor release containing bug fixes. The most important are:

  • Several problems with support of TIFF format;
  • Problems with color management engine lead to displaying error popup;
  • Problem with deleting of temporary files;
  • Improvement of speed of image formats codecs;
  • The problem with reading of PSD frames.
We came to decision to release this minor version because some of the issues listed before were critical for our customers. So we just took the version 5 branch of source code, roll out the fixes from the current development version and walked through the tests to be sure that everything was okay.

Nevertheless the team is working on new functionality that will be included into the new version of the product.

Why not Get a Free Upgrade to 6.0?

posted by Max on 12 January 2009, 15:21

Everyone likes freebies, either openly or covertly. Here at Aurigma, we also like having freebies -- why not? So, when you like to have something, you obviously ought to give something. If you want to sell something -- buy something first. They say that's basically how business works and money flows. Bla-bla-bla.

Anyway, what I'm driving at is: our customers who bought Image Uploader on January 1, 2009 or later get upgrade to version 6.0 for free. Should be a nice cheer up in these stirring economic times :)

Private label 2009 buyers (upgraders): you'll need to pay for re-signing your private label -- but the upgrade itself is free, of course.

Those who have bought through resellers: sorry but you are not eligible for free upgrades -- only those who purchased directly from us are.

Sure, you might want to ask: when 6.0 is scheduled for release? The release is scheduled for the beginning of March, 2009.

Your questions get answered at sales@aurigma.com. Be sure to post your suggestions into this blog thread.