The HUPnP core library is stable
The first stable release of the HUPnP core library was done in 28th of March 2011. The release is about API stability. HUPnP 1.0 is not feature complete, there are optimizations, code cleansing and implementation refactoring still to be done (quite possibly bug fixes too), but the API has proven to be stable. What that means in practise is that any subsequent 1.x release exports API and ABI that are backwards compatible all the way to 1.0. This type of versioning policy is very similar with the versioning policy of Apache Portable Runtime.
In other words, this type of versioning offers source and binary compatibility amongst patch and minor versions within a major version. Because of that, the API is largely locked for change and the ABI must remain backwards compatible for the duration of a major release.
For this policy to hold any significance, I will maintain the HUPnP v1 at least until the beginning of October 2011. The maintenance will be mostly corrective, but also perfective to an extent. In addition, I may add new features if I consider the effort to be reasonable and the implementation doesn't require breaking changes to the API or ABI. Regardless, any change that would break the backwards compatibility requirement will be postponed to the next major version release.
The development of HUPnP continues and I already have some features planned for the next major release. However, as of March 2011 I have no real plans or schedules for HUPnP 2.0.
The HUPnPAv library is in alpha stage
HUPnPAv is currently in alpha stage. Version 0.0.1 is out and HUPnPAv is being pushed towards the first beta version 0.1.0. In practise this means that:
- The first file release will be done when HUPnPAv goes beta. Before that HUPnPAv is available only at the version control.
- While HUPnPAv is in alpha, anything may change at any time without of notice. Treat every svn update as a possible breaking change.
- The most important stepts to take next are about ensuring the architecture and the API achieve their goals in practise, since these form the foundation for stability and thus for the first beta.
From the author's point of view the first beta feels close. HUPnPAv has been in development for the past year and a half and the API has undergone several major refactorings and significant design effort in general to be what it is today.
Next major steps
These are the task areas that have priority over others.
- Stabilize the API enough to warrant the first beta release.
- Improve documentation.
- Ensure that every mandatory feature of the MediaServer:3 and MediaRenderer:2 are either implemented or that HUPnPAv provides building blocks for those, and that these components are fully compliant with their respective UPnP A/V specifications.
- Start working with the DLNA compliance requirements. Note, currently HUPnPAv is not DLNA compliant. No effort for this has been done to date.
- Improve interoperability with other UPnP A/V software.
- Test, test and test. Harden the implementation.
Next "minor" steps
These are the task areas that have lesser priority, but with which I try to work whenever I have time.
- Tweak and optimize the implementation.
- Extend the API to make it even easier to use. I have quite a few ideas for this.
- Implement as many of the optional UPnP A/V features as feasible. For instance, I'm currently implementing the Search for the ContentDirectory, as well as some persistence functionality for storing CDS objects.