Herqq UPnP

Apr. 17, 2011:

The first alpha of HUPnPAv (0.0.1) is out!

I'm extremely pleased to announce that the first alpha of HUPnPAv is finally out. This is the beast that has shaped the HUPnP core library more than anything and has ruthlessly and continuously demanded more and more of it. It has required several major refactorings, some serious design effort and a lot of hard work in general to get thus far. But it is by no means complete. Not even close. I'm currently implementing / finalizing quite a few ideas that didn't quite make it to this day and I have a much longer list of other ideas waiting their turn.

The most important aspect of this release is the API, which I've tried to make usable and extensible at every level through the stack. It is the combination of these two aspects that has been difficult to achieve, but I sincerely believe HUPnPAv reached it. Time will tell.

I also released a simple test application for HUPnPAv, which demonstrates some of the capabilities of HUPnPAv, albeit a bit coarsely. ;-) The application is heavily based on the HUpnpSimpleTestApp provided with HUPnP core library, but it should give you a glimpse of what can be done with HUPnPAv.

Mar. 28, 2011:

The first HUPnP stable release 1.0.0 is out!

When I made the first beta release in January 2010, I knew there were going to be many fixes and improvements and things to do in general, but I never anticipated how difficult it would be to stabilize the API. If there was one thing I thought would not change much, it would have been the API. Had I known the depth of changes to come, I would have delayed the first beta release a bit longer, say, half a year? ;-) In any case, the 1.0 is now done and I'm quite pleased with the result.

The 1.0.0 is backwards compatible with 0.9. It fixes a few bugs, updates documentation and changes the project files and project structure slightly. For more information please see the change log and the status page.

Mar. 21, 2011:

The HUPnP API / ABI is locked for 1.0

It has been a few months since the last API / ABI breaking changes were introduced and because of that, I consider the API stable enough for 1.0. In other words, the API introduced by the 0.9 will be the API for 1.0. I will create a branch for 1.0 (from revision >= 106), do a file release and update the web page later. In addition, I may have to restructure the repository to prepare it for HUPnPAv development.

Feb. 1, 2011:

The HUPnP beta release 0.9.0 is out!

Still not the 1.0, but we're getting there. This release doesn't change much, but what it changes affects a lot of client code, hopefully for the better. More specifically, the 0.9.0 is about finalizing the client-side action invocation API and making the handling of HActionArgument(s) clearer and safer.

In an attempt to improve the HUPnP API I analyzed some user code and noted these two aspects to be usual sources of errors, confusion and dangerous coding practises. Especially the HActionArgument handling was often done in an unsafe manner that could have easily resulted in crash bugs. The new API makes this impossible. The changes in action invocation in turn unify the eventing API to be similar to other eventing APIs HUPnP use. That is, the signature consists of a sender and of an event info object, which details whatever information the event is supposed to convey. The changes also make the HAsyncOp more extensible and add the possibility to abort a running operation.

The release includes some other additions, which I think some will find very useful. See the changelog, reference documentation and version control history for more information. And as usual, there's some bug fixes as well.

We'll have to wait and see if the HUPnP 1.0 is finally ready in March 2011.

About HUPnPAv

The design is ready for the first alpha, and once I get a few missing implementation details done, the implementation is ready for the alpha as well. I'm currently testing and documenting the library, but considering the size of the API, this will take a while. I'd like to put a release estimate here, but since the time I've been able to dedicate to this has been quite volatile lately, I better not.

Dec. 19, 2010:

The HUPnP beta release 0.8.0 is out!

A few months back I was very near certain that the API then was going to be the API for the 1.0. Well, not quite. Long story short, some time away from the project helped me to see few design mistakes that also resulted in some poor implementation decisions. I couldn't let mistakes of that magnitude swim into the 1.0.

HUPnP is still a work in progress, but 0.8 definitely shows the path I'm going to follow with HUPnP. I also know now that trying to abstract server-side and client-side object models behind a same interface is often a pipe dream that just isn't worth the effort. In my experience this often causes the implementation to be much more complex than it needs to be and the interface to be too generic to be optimal for either case. Regardless, I'm wondering is the HUPnP's API finally ready for a stable release?

I've usually let time answer that question; if there are no API breaking changes within a two-month period, then the API is ready for a stable release. However, the year 2011 is closing in fast and that has been my personal dead-line for the 1.0. But I don't want to rush the stable either, especially when there are no external incentives for me to do so. So unless someone convinces me to do otherwise, I'm giving the 0.8 time until the end of January 2011. If there's no real reason to break the API within that period, I'll make the stable on the 1st of February 2011.

You may want to view the changelog and the revision control history for more detailed information of what has changed, but here's the main changes in a nutshell:

About HUPnPAv

For the past few months I've been very busy with the job that pays me and as that has nothing to do with UPnP, I haven't had much time to work with HUPnPAv. So unfortunately the first alpha release has to wait a little longer. I'm hoping to get the time in January 2011 to finish the alpha and release it before the 1st of February 2011. Now if only I could work with UPnP for a living... ;-)

Oct. 6, 2010:

The HUPnP beta release 0.7.0 is out!

Whew. This beta release took awhile. Not that I couldn't have done it earlier, but whenever I was about to make the release I thought of an important API change that I just "had" to do. In addition, the upcoming HUPnPAv library has taken a ton of my time, as I really want to get the first alpha out within this year. But enough is enough. This beta release should have been out a few months ago.

You may want to view the changelog and the revision control history for more detailed information of what has changed, but here's the main changes in a nutshell:

At the moment (and at last) I'm confident that the current API resembles closely the API I'll use with the first stable. Some fine-tuning may be required, but I don't expect the main design to change anymore. At least, if it will, that'll be done for 2.0.

There are still some features to implement, such as the support for multicast eventing, but that shouldn't take much effort once I get down to it. Complex data types in description documents aren't supported yet either, but currently it seems that support for those will not be added for 1.0.

About HUPnPAv

As I mentioned above, I've been working intensely with the library for some time now and it has evolved to a point where I'm starting to finish up the implementation for the first alpha.

The library is very extensive and there's still a lot of testing and documenting to do, but the design and architecture is pretty much set, client-side support is very near complete and server-side support for the first alpha is looking good too. If I'm able to allocate time for this within the next few months, there's a good chance the alpha will be out within this year.

June 25, 2010:

The HUPnP beta release 0.6.0 is out!

Although this HUPnP release introduces several important fixes and improvements, the most important change concerns licensing. That is, starting with this release the HUPnP core library is distributed under the LGPLv3 license. For more information about the release, please see the change log.

Announcing HUPnPAv

For some time now I've been working with a UPnP A/V library built on top of HUPnP called HUPnPAv. The main purpose of the library is to ease the implementation of UPnP A/V devices (MediaServer and MediaRenderer) and the use of them from the client side. The implementation of the library is progressing well, but there's still a lot of work to be done before the first alpha is ready for release. That said, I'm trying to get the alpha out within this year.

May 1, 2010:

The beta release 0.5.0 is out!

Since the initial release in January this is by far the most important beta release to date. Not only does this release contain numerous fixes to various issues ranging from better interoperability to better stability, the API is starting to stabilize too. It is quite possible that the first stable release will provide an API much like this. For more information about the release, please see the change log.

About licensing

When I started the development of this project I decided to go with GPLv3 at least until the first stable release is at hand. As the first stable is getting closer and closer the licensing issues are getting timely again. At the moment I'm leaning on releasing the stable under LGPL v3. However, this isn't cast in stone, so if you have opinions relating to this please feel free to share them with me.

Mar. 4, 2010:

The beta release 0.4.0 is out!

This beta release comes with a few important API changes. The changes involve action arguments and state variables and it is because of these API/ABI breaking changes the minor version number was incremented. In addition, the beta release fixes a number of issues and partially circumvents a compiler bug (figuring this out was *not* too fun). For more information about the release, please see the change log.

Feb. 17, 2010:

The beta release 0.3.0 is out!

This beta release is the result of a large refactoring process done to HUPnP. The API didn't change much, which is good, but some parts of the implementation and project structure were changed notably. This includes fixes to a few fairly nasty errors and several smaller ones. In addition, a simple example application demonstrating the basic usage of HUPnP is bundled with the release. The example application isn't much, but it should give you some idea how HUPnP can be used. For more information regarding the release, please see the change log.

Finally, a few important changes/additions/fixes didn't quite make it for this release, so a patch release will be coming soon. Also, check the SVN repository every now and then. Minor fixes are usually there much before the next release.

Feb. 2, 2010:

The beta release 0.2.0 is out!

This beta release sets the second milestone towards the first stable release. The project, file and class structures were significantly refactored to improve maintainability and future development. However, only small additions were made to the API. This beta release also fixes several important issues found in 0.1.x. For more information, see the change log.

Jan. 26, 2010:

A patch beta release (0.1.1) is out!

This patch release contains several fixes and updates to the release 0.1.0. For more information, see the change log.

Jan. 18, 2010:

First beta release (0.1.0) is out!

The 18th of January 2010 is an important day for HUPnP. It marks a significant milestone in its development; I, the author, finally considered the HUPnP core ready for the first beta release. All the usability and functionality tests I've been running for quite some time seem very promising. There are still issues to be sorted out, but for the first beta release HUPnP has been ready for some time. At this point, the HUPnP needs feedback from actual users. I whole-heartedly invite anyone to try it out!

Additional APIs are coming

Currently, classes that simplify the implementation of UPnP AV devices, services and control points are being implemented. Similarly, classes for UPnP Lighting devices and services are almost done. All of these classes are built above the HUPnP core and they will be distributed as separate libraries. Furthermore, other similar libraries are being planned.

Example program about to be released

The first example program that uses HUPnP is about to be released. The program shows how you can create and host your UPnP devices using HUPnP as well as how to use the HUPnP's control point class for discovering and interacting with UPnP devices on the network.