Archive for the ‘programming’ Category
* Sigil’s Future Direction (Post 0.4.x)
Posted on September 4th, 2011 by John. Filed under articles, Opinion, Sigil.
Introduction
With 0.4 my focus has been on getting the existing features in a stable state. I foresee 0.4 being around for quite some time as development shifts to accommodate new features. I wanted to be sure a relatively bug free version is available for people to use. If data loss is a constant then there wouldn’t be any point in using Sigil. Now that 0.4 is done it’s time to start working on what’s next.
Just what is next? For the time being I’ve marked a number of issues on the issue tracker as Milestone-0.5. My plan is to have 0.5 just implement the most commonly requested and most interesting features. 0.5 has no vision and is just a stop gap while I familiarize myself with Sigi’s code base. 0.5 is my short term plan. It’s not grand but it’s functional and sufficient.
Recently I posted the conclusion of my Sigil user study. The findings are Sigil is most used and most useful to power users and small professional ebook creating houses. Also, the overlap between the two is significant. Thus I want to target these two group and make Sigil even more useful for them. Keep this in mind because these two groups are who is going to shape my views of where I want to take Sigil.
Please realize that not everything I’m going to talk about is set in stone. A lot of it probably will never happend. Also, this is part plans, part what I want to do, and part rant about what Sigil does that I don’t like. This is what my ideal Sigil would look like and it is what I’m going to work toward. However, nothing is set in stone.
Plugins
If you’ve ever used calibre or Firefox you will know that plugins are amazing. They allow for easy and quick changes and additions to be made without having to change the main application. Both calibre and Firefox have large third party plugin communities. I would like to bring this to Sigil and I want a framework where all book manipulation is available over a plugin interface.
My feelings with Sigil are plugins should make small self contained changes. Similar to calibre’s heuristic processing. For instance, italicize common cases, up / down shift headings, and normalize CSS. To make plugins really useful I want to have a system where multiple plugins can be chained together and run in sequence. This would be super basic internal script functionality.
For plugins themselves I’m undecided about how they should be implemented. I don’t mean API wise because that isn’t even a thought at this point. I’m talking about what languages they should be able to be written in. C++ as a shared library will of course be supported because Sigil is written in C++. However, I want to Sigil to be able to load plugins written in scripting languages.
My first thought is Python because I’m very familiar with it and love to work with it. I’m also thinking about Lua and QtScript (Javascript without DOM). I don’t support frameworks for every one of these languages due to the amount of maintenance required. So I want to support only one scripting language. Python is big and slow. Lua is small but doesn’t have the advanced text manipulation libraries Python offers. QtScript is Javascript with is an abomination of a language. Added size of Sigil’s install, execution speed, ease of supporting, knowledge by contributors and text manipulation support are all major considerations.
Editor
Currently Sigil does not respect the structure of existing files. When you open an EPUB in Sigil it restructures the file layout. It even goes as far as to rewrite each XHTML file by running it through Tidy. With 0.4.0 cleaning with Tidy can be disabled but pretty printing is still used and alters the XHTML. I absolutely hate this! If I want my XHTML or file structure changed I’ll do it myself.
I want to change Sigil to not be as automatic. Restructuring and cleaning of the XHTML should be moved to plugins and run when the user requests it. This way a user can open Sigil, change the metadata, save, and the only thing that changes is the OPF with the metadata changes. Not every single piece of the EPUB.
I also hate WYSIWYG editing because it inherently must make drastic changes to the underlying code. I don’t think it’s a good idea to remove it though. I would prefer to have the book view default to a preview mode that is read only. There wouldn’t be any changes made to the code by using book view. Read only is the default but the user should be able to have an edit toggle that will set the book view to edit mode which will work like it already does. This way a user can make changes that may not be valid or work, check them, see there is an error (say a missing </a> tag) without losing any work. They can see the issue fix it and still be able to use WYSIWYG editing when they want.
Data Store
Right now XML (XHTML included) data is stored as a Xerces DOMDocument. This is then loaded into the book or code view depending on which one is focused. The use of a DOMDocument often leads to data loss. Putting malformed XML into a DOMDocument can have unintended consequences. Especially when then loading that into a QWebView and getting back a string.
I want to replace the DOMDocument with a plain string as the data store. This will prevent a lot of data loss, especially combined with the book view defaulting to read only. Further, this combined with not making automatic changes to the code will make the well-formed error warning unnecessary.
Not auto processing with Tidy and checking for errors automatically will allow Sigil to produce invalid EPUBs. I really don’t care that this can happen. The tools (FlightCrew) will still be there to check that the file conforms to the spec. It’s up to the author to ensure they’re publishing valid EPUBs. An EPUB that is being actively edited doesn’t have to be valid at all times. I’d rather put the onus on the person using Sigil to ensure their EPUB is correct before publishing versus having Sigil force validity at every moment.
Undo
Undo is terrible right now. Some actions cannot be undone, some can. The book view’s undo is completely separate from the code view. You can’t undo a replacement when doing it across all HTML files on files that aren’t open in a tab. I want to see a unified single undo that allows for setting back out of any change.
Further along this line I would like some graphical display where you can look at the changes that have been made to make it easy to find exactly how far back to undo. Something like Apple’s Time Machine but for the state of the book.
Conclusion
Here is where I want to take Sigil: less hand holding, less automatic changes and more advanced text manipulation though a plugin interface. The big question is, should I skip putting out a 0.5.0 release with just the Milestone-0.5.0 marked changes and get started on the above now?
* Sigil and Linux Distribution Packages
Posted on September 3rd, 2011 by John. Filed under Sigil.
The official Linux packages for Sigil are generic packages. They’re bundled in an InstallJammer installer and contain a number of libraries that Sigil depends on. This is not ideal but it’s not possible to provide Linux packages for every distro.
I’ve created a wiki page which I’m putting together a list of Linux distributions that have their own Sigil packages. These are the best packages for users to install because they’re smaller and tailored.
If your distro isn’t listed and it has Sigil packages let me know and I’ll add it to the list. If your distro doesn’t package Sigil let them know you would like to see them package it. I’m always willing to lend a hand to get Sigil in more Linux distros.
* Sigil 0.4.2 Released
Posted on September 2nd, 2011 by John. Filed under Sigil.
Sigil 0.4.1 is complete and available. This is mainly a maintenance release and fixes a number of bugs. Specifically a few bugs related to data loss. There was one major user visible change. The well-formed error dialog can be toggled not to show. This will cause errors to be auto fixed. Use this with care because the auto fix Sigil makes might not be what you want. As always see the changelog for a complete list of changes.
* Calibre Week in Review
Posted on September 2nd, 2011 by John. Filed under calibre.
Since taking over Sigil I haven’t had much time to spend working on calibre. However, I haven’t abandoned calibre. It’s still a priority and something I will continue to work on.
This week I focused on Get Books. Nothing new was added but I went through most of the store plugins and fixed a few of them to support changes to the stores. As of 0.8.17 all stores should be working properly. It doesn’t sound like much or very flashy but fixing bugs and keeping everything running smoothly is very important.
* Sigil User Study
Posted on August 31st, 2011 by John. Filed under articles, Opinion, Sigil.
Introduction
Since taking over as the maintainer of Sigil I have spent some time reaching out to specific people in the ebook community to ask them about Sigil. Specifically if they use Sigil? Why or why not? What do they see as Sigil’s shortcomings? How do they use Sigil in their work flow? Why doesn’t Sigil work in their work flow. Basically, their thoughts and opinions on Sigil.
I asked specific people privately because I didn’t want to be inundated with responses. The people can be broken down into three different groups: self publishers, power users, and professionals. After talking to professionals I’ve come to realize that they can be broken down into small and large. The size relating to the size of the company and production volume. I spoke with about 8 people total and I tried to keep it even between the various groups.
I wanted to find out who is using Sigil, who isn’t using Sigil and why so I can determine where I want to take Sigil in the future. The only ebook editing I do is cleaning up a few books here and there. Learning how people use Sigil will help me to determine the best direction to take the project.
Self Publishers
Self publishers are authors. These are people who write their book and then want to sell it as an ebook themselves. Typically these people are using Word for writing. they export their work as HTML, then import into an ebook editor for final adjustments and savings as an ebook file. The two biggest things self publishers are looking for are easy and high quality .doc or .docx import and one click send to store functionality.
Self publishers are also interested in WYSIWYG editing and don’t want to know about the internals of ebooks. They are primarily writers who see ebooks one of many distribution methods. They don’t care about the intricacies of EPUB for instance, they just want their work to look good and be readable by their audience.
The typical tools I hear being used by self publishers are calibre for format shifting. Atlantis Word Processor and Jutoh for formatting and base ebook creation. Atlantis and Jutoh both provide very easy to use WYSIWYG interaction and you can use these without ever seeing a line of code.
Power Users
These are people who prepare works in their spare time as a hobby. They are not motivated by money and do not sell the works they publish. Typically the works power users deal with are public domain such as Shakespeare. This group also encompasses people who do not distribute works covered by copyright but spend their time cleaning and reformatting their favorite books strictly for their own enjoyment and personal use.
Power users are comfortable using either WYSIWYG and code editors. The biggest feature requested and talked about by power users is robust regular expression support for search and replace. Many of the books power users work with have terrible and often non-existant formatting. These works typically started life as either a scanned copy of a print book or a PDF file. Both of which typically leave broken paragraphs and misspellings thought the document. Which leads to spell check being the next most common request from this group. They are trying to take a jumble of half sentences and put them back together into a visually appealing layout.
The tools used by power users are Sigil, calibre, Word or Open Office macros, and many custom scripts. Also an advanced text editor like BBEdit and Notepad++ are must have tools.
Professionals
Professionals format ebooks for one purpose, money. This is what they do for a living. An author comes to them and pays to have the company turn their work into an ebook. For a modest fee an author can have a beautiful ebook produced without any headaches or hassle. Many authors prefer paying someone to do this portion of publishing for them just like they will pay an editor to edit, a print house to print, cover artist to design a cover and so forth. Authors write and typically want to concentrate solely on writing. Many self publishers format their own ebooks out of necessity because of the cost of hiring a professional.
With both small and large professionals I’m specifically talking about ebook publishing and digitization services. I’m not talking about huge publishers like Macmillan that do everything. However, the larger publishers I talked to makes me believe their process is the same as the huge publishers. The big difference between small and large professionals are the tools they use.
Small
Small professionals tend to use either Sigil or Adobe’s InDesign for a good portion of their work. Both fill a very similar role in ebook creation. The big draw of InDesign over Sigil is InDesign supports print book layout creation. It’s an all in one tool. This type of professional tends to use off the shelf tools that are readily available. Sigil and InDesign are not the only exclusive tools they use but one or the other tends to be a heavily used tool in their tool box.
Large
Large professionals tend to use custom tools. They staff people who’s sole job is to develop and maintain ebook creation and formatting tools. They can afford to have custom tools that integration directly into their process. They don’t use off the shelf or vanilla tools. This group is all about custom everything. This allows them to quickly adapt to changes.
Professional Tools
Sigil or InDesign and custom tools are all I know. Many professionals are vague about their process and tools. Some even declined to talk to me at all. They use tools in some way that works for them but their methods and implementation are proprietary.
What Does This Mean For Sigil?
Out of all of these groups I have little desire to target self publishers. There are existing tools that do a great job of meeting this groups needs. Sigil has a WYSIWYG editor and it can certainly be improved but I don’t want to tie Sigil to a particular store or stores like Amazon or B&N. Also, I want to keep Sigil as an EPUB editor and not a generic ebook editor. I believe that Sigil’s strength lies in being able to manipulate the internals of the EPUB format itself. I want to target this aspect more.
Power users are the major group I want to target. Out of all of the people I spoke with power users use Sigil the most and get the most out of it. Advanced editing of an EPUB’s structure and code is where I want to take Sigil. That along with advanced text manipulation. Think expansion of calibre’s heuristic processing.
Small professionals are major users of Sigil and I do not want to discount them. I believe that their use of Sigil overlaps with power users enough that targeting power users will also target small publishers. I do not want to alienate small professionals and will continue to take their needs seriously. From what I’ve learned about small professionals tools that make code manipulation easier will be a benefit and hopefully reduce their need for other formatting tools.
The last group, large professionals, do not use Sigil. I don’t believe that changing Sigil to accommodate this group will get them to use Sigil. They use their own custom tools and Sigil doesn’t fit into their work flow and I don’t see it ever doing so. Thus I don’t see it being worth while to work toward making Sigil “the tool” for this group.
* Sigil 0.4.1 Released
Posted on August 26th, 2011 by John. Filed under Sigil.
Sigil 0.4.1 is complete and available. This is mainly a maintenance release and fixes a number of bugs. There are a few new features mostly around the code view. As always see the changelog for a complete list of changes.
* Sigil SCM Move to Git Completed Sucessfully
Posted on August 20th, 2011 by John. Filed under Sigil.
Last night I moved Sigil’s SCM from Mercurial (hg) to Git (git). The change was completed successfully and without any issues. 0.4.0 had locations for things like the user manual pointing to the git locations. These are now live and working again. These links are now broken in any release before 0.4.0. This is unfortunate but unavoidable.
* Calibre and HamsterSoft Conclusion
Posted on August 18th, 2011 by John. Filed under calibre.
Previously I posted about an instance of copyright infringement. It was found that a company called HamsterSoft was using portions of calibre in their proprietary and closed source ebook conversion program. The good news is the situation has been resolved.
On August 15th I was contacted by Pavel, one of the founders of HamsterSoft. He said that they are committed to their Hamster Free eBook Converter (HFEC) program and they feel compliance with calibre’s license (the GNU GPL v3) is their only option. He also informed me that they had stopped distribution of HFEC. Pavel ask if I could give them a few weeks to prepare the source code for release. He also wanted me to know that their support email address was posted in error and it is not checked.
I took the fact that they had stopped distribution and wanted to comply with the GPL as a sign of good faith. I told him that we’re happy to see people using calibre in new and interesting ways as long as it’s in compliance with the GPL. I also told him that as long as they’ve stopped distribution they can take as much time as they need to prepare the source code for release.
On August 17th I received another email from Pavel. He said that they are not experienced with the GPL and would like for me to look at the source package they have prepared. He also asked for me to confirm that it would comply with the GPL and they would not restart distribution until I approved the package or a subsequent version if this one was not in compliance.
I looked at the package and replied that as long as all source is included that it is in compliance. From looking though the package it appeared that everything was included. The binary component that was missing from the first package was included in source form in this one. I also suggested that that a license.txt file with information about the code licensing be included so there is no confusion.
As of August 18th HamsterSoft posted the following apology letter:
PUBLIC APOLOGY
2011-08-18
HamsterSoft, on behalf of all its members, would like to apologize to Kovid Goyal and John Schember for the fact that since the launch of the Hamster Free eBook Converter program our company has not satisfied all of the GPL v.3 license conditions.
Our Company developers realize that the creators of Calibre have made enormous efforts during the past few years, and we respect the labor of other programmers. It was distressing for us to discover that we, either directly or indirectly, have impeded the work of others – that we have not supported their idea of development of the new software on the basis of open code.
Over the last few days we have conducted a lot of work in order to eliminate the existing defects. We hope that Kovid, John, and the other Calibre developers will consider the license agreement met and community interests complied with, and that they will accept our sincere apologies so that our company can continue to efficiently and easily create new free software for forty world languages.
Also, as of August 18th they have posted the complete source code for HFEC. At this time they have not yet fully restored their website (it’s only partly) for easily downloading HFEC as an installable Windows program.
I’m willing to accept that any past dealings in regard to this matter are a result of a misunderstanding. I’m also willing to accept from communication with Pavel and HamserSoft’s actions that they genuinely wanted to comply with the GPL. I accept HamsterSoft’s apology and I am reinstating all rights afforded to them under the GPL to my work that is part of calibre. They are now in compliance with the GPL and no longer violating my copyright.
* Sigil 0.4.0 and FlightCrew 0.7.2 Released
Posted on August 15th, 2011 by John. Filed under Sigil.
The long awaited Sigil 0.4.0 release is now out. Along with Sigil is a new release of FlightCrew. FlightCrew version 0.7.2 is the latest version bundled with Sigil.
If you’re an OS X user then one thing need to be aware of is these two releases bump the minimum OS X version to 10.6 (Snow Leopard). The Linux builds (x86 and x64) are built on Ubuntu 11.04.
A lot of work went into 0.4.0. New features and bug fixes galore. See the ChangeLog for full details. I have to thank Strahinja Marković (the original creator) for leaving the 0.4.0 in a nearly finished state. Also, Charles King for being a bug fixing monster and helping make this release great.
One major change that is going to take place next week is, I am switching the source code management (SCM) system from Mercurial (hg) to Git. This will break the update checker in previous versions. Hence waiting a week before making the change. I have already converted FlightCrew (needed to test) so FlightCrew’s updater in previous version won’t inform you of an update. This is unfortunate but unavoidable.
Due to the change to Git the links for the manual in Sigil are not going to work for a week. This is because I’ve updated the locations in Sigil to point to the new locations that won’t be available until the switch to Git.
* Dealing With Copyright Infringement – Calibre Being Ripped Off
Posted on August 13th, 2011 by John. Filed under articles, calibre.
*** Update: HamsterSoft has fixed the issue and is now in compliance with the GPL. They are no longer in violation of my copyright in regard to calibre ***
Introduction
Copyright infringement is something many creators come face to face with. Over the past two months it has been something I’ve been dealing with. A third party is using portions of calibre in their proprietary application in violation of the GNU GPL version 3 (GPL v3) that calibre is licensed under. I have been helping deal with this violation.
In early July it was brought to my attention that a new ebook conversion utility, the Hamster Free eBook Converter (HFEC) made by HamsterSoft, was released. Since I work on calibre, looking at other ebook conversion tools is of interest to me. I’ve worked with other people on developing conversion tools and I’ve found that collaboration typically helps everyone.
About the Company
When I started looking into HFEC the fist thing I found was an announcement on the calibre Facebook page that the HFEC is using calibre for conversion in a non-compliant manner. Again, calibre is open source and licensed under the GPL v3. Using calibre’s source code in other programs is fine. We want people to do that and I’ve even helped people with doing so. However, the choice of license was deliberate. Kovid Goyal (the original creator of calibre) chose the GPL v3 because he believes in what the license stands for. Calibre using the GPL v3 is a major factor in why I started contributing to the project. All we ask is that if someone uses portions of calibre in their own project is that they abide by the copyright terms calibre is licensed under (GPL v3).
I looked at HamsterSoft’s website and they offer a variety of products; HFEC is their fourth application. What I noticed is two of their earlier products are very similar in design to HFEC. HamsterSoft use open source projects as the basis of these products. They create a custom interface around an open source base and release their program under a closed source, highly restrictive, proprietary license. In the case of the previous two products the open source projects they used are licensed under weak copyleft licenses. In the case of these two applications there is a good chance that they have not done anything wrong and have properly complied with those projects licenses.
Calibre however, uses a strong copyleft license. While investigating HamsterSoft I noticed that they had calibre listed as being licensed under the LGPL. The big difference between the LGPL and the GPL is the LGPL allows for incorporation in a proprietary application. The GPL does not. Under section 5 subsection C of the GPL v3 it states, “You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy.” Meaning HamsterSoft must release their entire work that incorporates calibre under the GPL v3 and the GPL v3 also requires access to source code.
Initial Contact
The announcement about the GPL violation was made on July 7th. That same day HamsterSoft responded in a a comment. They said, “@Calibre Got it! . We will fix this issues and ask you for your own acception. Thank you! Seems we mess much. Thank you!” I believe that by acception they mean exception. Kovid responded to them asking for an exception with, “@Hamster: Fix your GPL compliance. That means you have to make your product open source or stop using calibre. That much is required by the law.” It’s clear that Kovid has denied granting HamsterSoft a copyright exception to use calibre in HFCE without complying with the GPL v3. Also, even if Kovid had wanted to grant them an exception he cannot. Calibre does not practice copyright assignment. Each contributor retains the copyright on the work they contribute. To grant a copyright exception every contributor would need to agree and I for one would not agree to granting one. I purposely and knowingly put my work on calibre under the GPL v3 because that’s how I want my work licensed.
So, as of July 7th HamsterSoft was contacted in regard to the GPL violation in their HFEC program. Also, on July 7th they responded saying they undertand the issue and will fix it. Under the GPL v3 section 8 HamsterSoft has 30 days from receiving a notice of violation to cure the violation.
On July 11th HamsterSoft responded to their GPL violation via a FaceBook post. In this post they said, “Guys … seems we are much closer to the end of misunderstanding.” Closer is not fixed. Kovid responded to them with what needed to be done to come into compliance with calibre’s licensing (the GPL v3). This was the last communication from HamsterSoft that I am aware of.
Analysis of Steps Taken Toward Compliance
HamsterSoft appeared to make some effort to comply with the GPL v3. I cannot comment on motivations as they could be considered libel so I am only going to state facts as to the action HamsterSoft took. They clarified their licensed (EULA) that GPL components are not subject to their added restrictions such as disassembly, decompilation and reverse engineering. They modified their installer, website and Facebook page to make it clear that their product uses calibre. They uploaded some source code to their web site.
The source code that HamsterSoft uploaded was far from complete. It contains two non-complete binary builds of calibre. No mention if there are or not modifications. It is not clear if they modified calibre because the binary builds are only part of calibre not the entire program as it is officially distributed. No calibre source code, which they must supply (it’s not enough to point to the calibre project’s download page), was present.
Only a small amount of wrapper code that interfaces between calibre and their program was present. I found the following reference in the visual studio project file included in their source archive:
<HintPath>..\..\..\Bin\HamsterEbookConverterUI.dll</HintPath>
This is a reference to a linked, binary component. I’m assuming from the name that this is the actual graphical user interface (GUI). I will note that the GUI portions of HFEC are missing from the source archive. This component is clearly part of their application and was not included. Only portions that directly interact with calibre had their source included in the archive. The majority of the program was not released in a way that complies with the GPL v3.
No Answer Messages
With no response from HamsterSoft after July 11th Kovid sent an email to HamsterSofts support email address. Their support email is their only non-social network contact information.
On July 20th I sent them the following email and received no response:
Your web site says that the Hamster ebook converter program is based
on calibre which is licensed under the GNU GPL v3. This is request for
the all source code for the hamster ebook converter application. As
stated by you “Hamster Free eBook Converter made by HamsterSoft and
based on Calibre-engine created by Kovid Goyal and inherits all GNU
GPL 3.0 restrictions.” Under the GPL using part of a GPL application
in another application that application must be released under the
GPL. As such section 6 of the GPL requires that the corresponding
source code of a conveyed GPL application must be conveyed.John Schember
With no response I sent another email on July 28th and again I received no response:
Hello HamsterSoft,
I am one of the copyright holders of calibre.
I noticed that you released the source code to the Hamster ebook
converter. While you did release some source code you did not release
all of the source code that links to the project. Specifically the
HamsterEbookConverterUI in by the .csproj file referenced by:<HintPath>..\..\..\Bin\HamsterEbookConverterUI.dll</HintPath>
As of July 7th you said you would fix this situation. The above does
not fix the GPL compliance of the Hamster ebook converter. Under the
GPL all parts that link or create effectively a single program must be
licensed under a compatible license. The Hamster ebook converter is
effectively a single program and uses calibre (licensed under GPL) you
have released source code but only part of the source code. Other
parts are linked and used the HamsterEbookConverterUI. This needs to
be released in source form as well. The GPL does not permit the use of
a “wrapper” module that intefaces between GPL and non-GPL components.I want to point out that under the GPL you have 30 days from the first
time you have received notice of violation to fix the issue. As of now
you have approximately 10 days until the deadline where all rights
granted to you under the GPL to use calibre will be terminated. The
deadline is Sunday August 7th.Also, I want to point out that calibre is developed primarily by Kovid
Goyal but he is supported by a number of other developers around the
world. Due to the way calibre is licensed each individual developer
retains their own copyright. As such each individual developer can
claim copyright infringement if this situation is not rectified in the
allotted time.John Schember
After having been given 30 days (as required by the GPL v3) from notification HamsterSoft has not brought themselves into compliance with calibre’s licensing. So, on August 8th I sent them the following email informing them that I am, as a copyright holder, permanently terminating any all all rights granted to them under the GPL v3 in regard to my work in calibre due to non-compliance of copyright terms.
Dear HamsterSoft,
You are using a work that I own the copyright of. The name of the work
involved is “Hamster Free eBook Converter”. It appears on a site
operated by you at http://ebook.hamstersoft.com/en/home,
http://ebook.hamstersoft.com/en/download, and via direct download athttp://stuff.hamstersoft.com/software/hamsterfreeebookconverter.exe.
You have built your program on the open source ebook tool called
calibre. I am a copyright holder of portions of calibre. Specifically
I hold copyright on portions of calibre relating to ebook conversion
for the following formats: TXT, HTMLZ, PDB, PML, PDF, and FB2. This is
in addition to other components of calibre.My work on these components is available at
http://bazaar.launchpad.net/~kovid/calibre/trunk/files/head:/src/calibre/ebooks/.
Many of the listed components first appeared as part of calibre as of
2009.Your copying and or use of my work, which appear at the link above, is
unauthorized. You have not received permission to use the piece nor to
make or distribute copies of them in the manner you have. Calibre is
licensed under the GPL version 3 and you have failed to comply with
the terms of this license.You cannot incorporate GPL-covered software in a proprietary system.
The GPL states that any extended version of a GPL covered work must
also be released under the GPL if it is released at all. By embedding
calibre in The Hamster Free eBook Converter you have effectively made
them a single program. Also, the GPL does not permit the use of a
“wrapper” module that interfaces between GPL and non-GPL components.As of July 7th 2011 you said you would fix this situation. As of
August 8th 2011 you have not fixed. As of now any all all rights
afforded to you to use portions of calibre under the GPL v3 are
terminated due to non-compliance with the license. The following
issues remain:1) The component
<HintPath>..\..\..\Bin\HamsterEbookConverterUI.dll</HintPath>
referenced by your application has not had it’s source code released
under the GPL.2) The source code for calibre and any modifications you have made to
it are not available by you. By being a distributor of calibre in
binary form you are responsible for also distributing it in source
form including any changes you have made to calibre.Therefore, I believe you have willfully infringed my rights under 17
USC §101, et seq. and could be liable for statutory damages as high as
$100,000. Further, such copyright infringement is a direct violation
of the Digital Millennium Copyright Act and International Copyright
Law.I demand that you immediately cease the use and distribution of the
work and all copies of it, that you remove any further works you may
have stolen and that you desist from this or any other infringement of
my rights in the future. Furthermore, I demand that you post an
apology.You have already been given 30 days as afforded by the GPL from the
time you were notified of infringement. At this time, I shall consider
taking the full legal remedies available to rectify this situation
including contacting my lawyer.Sincerely,
John Schember
Termination of Rights
As of August 13th HamsterSoft has again not responded to any email I’ve sent them. They are also continuing illegally to distribute the application they have built (HFEC) using my copyrighted material. As of August 8th all rights to use my work were terminated by me per the terms of the license (GPL v3) I released my work under. Due to the way HamsterSoft handled this situation I have no intentions of reinstatement.
A Note About Copyright and the GPL
Copyright is copyright. It doesn’t matter if it’s software, a book, an article, or a magazine. The GPL is a copyright license granting rights under specific terms. Licensing a work under the GPL is not very different than an author giving a publisher distribution rights.
Just because calibre is open source does not mean it is freely available for everyone to abuse. As an author (including software) my work is still covered by copyright. The GPL is simply a way I have licensed certain works. If one does not comply with the license then they do not have the right to use or distribute my work.
Legal Research
Due to this entire situation being a copyright issue there are a number of legal options. These options apply to all authors (in the USA, I can’t speak for elsewhere) for any type of work that is covered by copyright.
Surprisingly I had an issue finding information on how to handle a GPL violation. The easy part is informing the party of the violation. I couldn’t find much information on what to do after. I tried reaching out to the Software Freedom Law Center for advice but I didn’t receive a response. Kovid reached out to GPL Violations and was told that our options are limited. Their research found that HamsterSoft is a Russian company and due to this there isn’t much they could do for us. They advised seeing about having HamserSoft delisted from Google.
The best resource I found is Plagiarism Today (PT). It is a website devoted to helping people deal with copyright issues. They provide some great resources including template letters. They have advice for all copyright issues not just ones dealing with software.
Really our options come down to filing a lawsuit or utilizing the takedown notice provisions of the Digital Millennium Copyright Act (DMCA). At this point I opted for using DMCA notices. They are easy and exercising your rights under the DMCA doesn’t cost anything. Filing a lawsuit would require hiring an attorney and paying potentially a large sum of money. If HamsterSoft really is in Russia there is a good chance that a lawsuit wouldn’t go anywhere. Utilizing the DMCA does not mean that a lawsuit cannot be filled; it is still an option.
Digital Millennium Copyright Act (DMCA) Takedown Provision
The DMCA has provisions for notifying hosts and having copyrighted material removed. Basically what happens is a host cannot be found liable for distributing infringing material posted by third parties or customers if they follow the notice and takedown process. I decided to target Google, Yahoo, Bing and Facebook. I think the GPL Violations advice of having the delisted will be the most successful route I can take. It’s also the most affordable first step to take.
When sending a DMCA takedown notice there are a number of requirements that must be met. What I found was not required is an account of what action was previously taken to stop the infringement. I included it anyway when possible because many hosts (and search engines) forward the notice to various parties. Google for instance sends the notice to Chilling Effects as well as the accused.
Google and Facebook both have a web form for submitting notices. Bing (Microsoft) has a number of ways to send them a notice. I chose email. I sent the notices on August 8th. Here is the email I sent to both Microsoft and Yahoo:
To Whom It May Concern,
I am writing to you to avail myself of my rights under the Digital
Millennium Copyright Act (DMCA). This letter is a Notice of
Infringement as authorized in § 512(c) of the U.S. Copyright Law. I
wish to report an instance of what I feel in good faith is an instance
or Copyright Infringement. The infringing material appears on the
Service for which you are the designated agent.You are registered with the U.S. Copyright Office as the Designated
Service Provider Agent to receive notifications of alleged Copyright
infringement with respect to users of the Service for which you are
the Designated Agent.1. The material which I contend belongs to me, and appears illegally
on the Service is the following:Hamster Free eBook Converter
2. The infringing material appears at the website addresses:
URLs Redacted
3. The original material appears at these addresses:
https://launchpad.net/calibre
http://calibre-ebook.com
4. The infringing material is available through the following search results
“hamster ebook”
URL Redacted
5. calibre is licensed under the GPL version 3. The Hamster Free eBook
Converter program uses portions of calibre in a way that is
incompatible with the GPL. As of July 7th 2011 Hamster was notified
and responded asking for an copyright exception. An exception was
promptly denied. It has now been more than 30 days and HamsterSoft has
not made the necessary changes to comply with calibre’s license. By
embedding calibre in The Hamster Free eBook Converter HamsterSoft has
effectively made them a single program. HamsterSoft released partial
source code for their program but neglected to release all parts.
HamsterSoft released portions of their program that constitute a
wrapper module that interfaces between the GPL and non-GPL components.
This is prohibited under the terms of the GPL.6. My contact information is as follows:
John Schember
Address redacted
Phone number redacted
john@nachtimwald.com
7. I have a good faith belief that the use of the material that
appears on the service is not authorized by the copyright owner, its
agent, or by operation of law.8. The information in this notice is accurate, and I am either the
copyright owner or I am authorized to act on behalf of the copyright
owner.I declare under the perjury laws of the United States of America that
this notification is true and correct.Signed: John Schember
DMCA Response
Yahoo was the first to respond. They said they get all of their search results from Microsoft via Bing and referred me to Microsoft. So no luck there.
Microsoft responded with a request for more information. After a week I haven’t heard back from them.
Google responded on August 11th and said they would remove the urls listed in my takedown notice. However, as of August 13th some of the listed urls are still returned by Google. Only a portion of them have been removed from their index.
Facebook was the most troublesome. They asked for clarification three times. I had to explain that on the HFEC Facebook info page there is a big button that says “Free Download”. When clicked it downloads the program which illegally (rights were terminated by me due to non-compliance with the GPL v3) uses my copyrighted work. I ended up having to take a screen shot of the page and put big red arrows pointing to the button. After this Facebook responded saying that they’ve removed the user generated content I reported as a copyright violation.
Conclusion
Having your hard work ripped off is not any fun. It’s even more of a slap in the face when you put your work out under a license that encourages and allows reuse and remixing. The GPL v3 was chosen because it’s restrictions are designed to keep a work from being taken and locked down. If HamsterSoft doesn’t want to abide by these terms then they cannot use calibre as the basis of their program.
Fortunately, there are options for us to peruse. As of now we’ve started taking the easiest and cheapest. I don’t agree with certain parts of the DMCA, specifically the anti-circumvention clauses. However, the notice and takedown provision are very helpful when dealing with copyright violations.
I wish I could end this account with news of a crushing victory but I cannot. HamsterSoft is still distributing their proprietary application based on calibre and they are still able to market their program. I’ve been able to make some progress into stopping them and hopefully I will be able to make more once Microsoft gets back to me about the DMCA notice. At this point it looks like I’m going to have to explore other legal options.
Notes
- I am very much against Digital Rights Management (DRM) and it would not have helped in this case.
- I am not a lawyer and this is not intended to be legal advice. It is an account a specific situation of copyright infringement.
- I purposely did not include any links to HamsterSoft’s website.
*** Update: HamsterSoft has fixed the issue and is now in compliance with the GPL. They are no longer in violation of my copyright in regard to calibre ***
Tags
Archives
- January 2012 (3)
- December 2011 (2)
- November 2011 (1)
- October 2011 (3)
- September 2011 (9)
- August 2011 (15)
- July 2011 (5)
- June 2011 (3)
- May 2011 (4)
- April 2011 (2)
- March 2011 (2)
- February 2011 (4)
- January 2011 (4)
- December 2010 (2)
- November 2010 (1)
- October 2010 (1)
- August 2010 (3)
- July 2010 (4)
- June 2010 (1)
- May 2010 (2)
- March 2010 (1)
- January 2010 (8)
- December 2009 (5)
- November 2009 (6)
- October 2009 (4)
- September 2009 (2)
- August 2009 (6)
- July 2009 (6)
- June 2009 (4)
- May 2009 (6)
- April 2009 (4)
- March 2009 (2)
- February 2009 (4)
- January 2009 (4)
- December 2008 (7)
- November 2008 (2)