Jump to content

The "backspaceware" issue is silly


Oluseyi
 Share

Recommended Posts

Hi.

I've been using Paint.NET for a long time now, probably since just before its 1.0 release. I've upgraded frequently, installed it on every Windows box I've owned/maintained, and recommended it often to others. I use Photoshop, I use GIMP, but for a lot of things I prefer quickly bringing up Paint.NET - especially for quick bitmap edits required in my job as a web developer. I think the refusal to add tablet support for Windows XP is silly, but I eventually decided it was probably something I should look into since it was burned into my memory long ago that Paint.NET was "open source."

I finally grab the sources, install Visual Studio 2008 onto my desktop and fire it up to build. Juggling around some general .NET annoyances not covered in the readme.txt file (specifically, that mt.exe does not like filenames with spaces in them, but no biggie), I get all configurations to build and attempt to run the binary. Missing resources. I click repair repeatedly, but the resources keep coming up as missing. Finally I figure it out - this thread was no help, and the respondent's attitude was damn-near hostile - and copy the resources from my existing Paint.NET installation. (Oh, and btw, by default PdnRepair.exe was not copied into the output directory for pdn itself, so I had to copy that, too. Very sloppy.)

After all of this, I felt moved to make this post, and specifically this point: stop it.

There are too many frictions involved in obtaining, unpackaging and building the source. While this may "protect" Rick in his mind, and while it is entirely in his rights to do so as the creator/owner of pdn, it discourages people from contributing in ways that could benefit everyone. I'm going to spend a couple of days implementing an Ink interface for non-tablet XP, and whether you like it or not that's something that a lot of your users would appreciate. There are probably people who, despite early fumblings, would have found one way or another to add value to the community (and, by extension, to you and your product), but they've been deterred by the complexity of even attaining a working build and the sheer hostility on this forum.

(I moderate GameDev.Net, and I'm a well-known a******. But I'm always kind to beginners. It's punks who think they know everything I wantonly crush underfoot.)

The worst part is that all this it still doesn't protect you, really. Okay, it took some doing, but I now have a working debug build. I'm skilled enough to subvert, reverse or modify most of your means for identifying that my build is derivative of your work, if I wanted to. All you've succeeding in doing is annoy me enough to actually post on your forums and rant about you in my first post. Wow. That's a record.

Please, impress me - and lots of other people - and make it trivial to download, unpack and build a complete working install of Paint.NET with no external dependencies. It's good for everyone. Don't worry about the backspaceware specialists. Anyone buying their stuff was clueless to the superior value provided by authentic Paint.NET anyway. Don't hurt your real customers going after people who were never going to "do business" with you, like the RIAA.

Peace and blessings.

Link to comment
Share on other sites

Missing resources. I click repair repeatedly, but the resources keep coming up as missing. Finally I figure it out and copy the resources from my existing Paint.NET installation. (Oh, and btw, by default PdnRepair.exe was not copied into the output directory for pdn itself, so I had to copy that, too. Very sloppy.)

To clarify, I did not build release and packaging. Given my early build problems, I proceeded to begin with a debug build (finally succeeded), then a release build (succeeded immediately afterward), and then attempted to run the binary. I presume the installer would have set up all the necessary references and so forth, though I really don't want to formally install a work-in-progress build from source. But that's just me. The rest of my post remains valid.

Either way, thanks for making available an excellent application. Question: do you accept user feature contributions? In what format? I was thinking of creating a patch file and sending it to you so you can test and integrate it as you see fit.

Link to comment
Share on other sites

...discourages people from contributing in ways that could benefit everyone.

You see, the thing is, the Paint.NET project is not Open Source to the point that anyone can contribute to the project. Rick does not accept code written by anyone other than himself. It is nice that you want to contribute, but this is not the way.

Click to play:
j.pngs.pngd.pnga.pngp.png
Download: BoltBait's Plugin Pack | CodeLab | and how about a Computer Dominos Game

Link to comment
Share on other sites

If you'd read the whole error message, you'd know that the missing resources dialog, when running in a Debug compile mode, will show "Since this is a Debug build, add 'skipRepairAttempt' to the command line to ... skip the resouce check" or something like that.

Paint.NET is not open source, it's source-available. It's Rick's project. He puts a lot of time into it, and is free to do whatever he wants with it. If you had put as much work into a project as he has, you'd want to protect it from being ripped off as well.

xZYt6wl.png

ambigram signature by Kemaru

[i write plugins and stuff]

If you like a post, upvote it!

Link to comment
Share on other sites

Question: do you accept user feature contributions?

No, not unsolicited ones. There have been occasions where I have gone and requested code from certain plugin authors so that I could release it with Paint.NET.

I think the refusal to add tablet support for Windows XP is silly...

Don't mistake the lack of a feature for "refusal". Paint.NET supports Tablet PC on Windows XP just fine. Awhile ago I volunteered to add the support for Wacom, etc., if someone would buy me a tablet, but nobody did. I can't write a feature for a specific piece of hardware if I don't actually have that hardware. At this point, adding extra code to support something that is only necessary in Windows XP is a losing battle. Day after day, fewer people are using XP and more are using Vista. I only have so much time, and if I can leverage things built-in to the OS then I will. If that means that down-level OS versions (XP) can't use the feature, then that is just the price of free. I'm not saying this to communicate disdain for XP users, it's just the reality of engineering: time (aka cost) vs. benefit. If I have some code that only runs on XP, then I have to make sure that I do lots of extra testing on XP. It's just a lot of my time that is continually taxed, and if I can avoid it then I will, which then lets me focus my time on other development.

However, going forward, it may be possible that Paint.NET becomes modular and then other developers can write plugins that add functionality that I am not willing to ship "in the box" (which mostly means I'm not willing to support and maintain it, it doesn't mean I dislike the feature at all). Maybe one type of plugin would be an input device plugin. (As an aside, this is also why I do not ship all the translations published here on the forum -- I have no guarantee or contract for their maintenance, let alone their correctness or "cleanliness" [how great would it be to ship, oh let's say Chinese, where the menus were swear words? oops!])

Anyway, the source code is made available so that people can study and learn from it. It isn't open source in the conventional GNU/GPL fashion (i.o.w., "community developed"). That's where the confusion comes from. Paint.NET is structured more as a "commercial" application, but I happen to also give it away for free and release the source code.

As for backspaceware, the changes I made were to plug-up the holes for all the really easy ways to rip off users or myself. You it is still legally permissible to sell copies on a CD or download links on eBay -- but the text, "Paint.NET is free!" in the installer will at least make sure that those you sell it to are just as informed as you. Yes, you could go and make "Oluseyi Paint" from the Paint.NET source code, I'm sure you're capable of it. But you'd have an uphill battle: you'd have to write your own installer, or do some hacking/decompiling of the existing one. Then you'd still have a licensing issue because the string and graphic resources are not available for use in derivative works. Let's say you rewrote all the text and re-did all the graphics ... that's a lot of work. Anyway, like I said, you're capable of it just fine. Whether or not you'd actually want to go to all that trouble is another matter.

My point with making these changes was that I identified most of the "backspacewarezers" were lazy and just wanted to put something out there with their own name on it. However, I still wanted to release the source code for legitimate students of the code. My goal was not and cannot be to prevent any "illegitimate" use of Paint.NET or its source code. That's like saying you can design a building that can't be broken in to. There's always a way, even if I have to dig a hole and come in from the bottom or something. But, if someone goes to all that trouble, would it be worth it to them? Or, on the more extreme side, maybe you'd require Star Trek teleporter technology to jump in and steal $100k worth of diamonds ... at which point, if you have that technology, why would you care about the diamonds? (Anyway I could keep rambling on here, but the crux is that there is an actual "threat" identification and mitigation process you can go through on stuff like this, and that's what I did.)

So, I identified certain uses that I did not want to permit or enable, and made them either legally disallowed (through the license), or a lot of work. And in the case of "a lot of work", if someone really wants to take the Paint.NET source code and make a new piece of software then they're probably (hopefully) going to put a lot of other work into their fork, at which point the extra work is much smaller in comparison to the total of what they're doing, and thus isn't that big of a deal (for them).

And pyrochild, you could be a little nicer about it.

The Paint.NET Blog: https://blog.getpaint.net/

Donations are always appreciated! https://www.getpaint.net/donate.html

forumSig_bmwE60.jpg

Link to comment
Share on other sites

I apologize, Oluseyi, if I seem rude or even hostile. Usually, that's just because of the way I phrase things. I forget that text-based communication loses a lot of what helps separate sarcasm from sincerity, facetiousness from anger, etc. (Usually. :roll: Sometimes I do intend to offend, and sometimes it's hard to tell the difference.)

xZYt6wl.png

ambigram signature by Kemaru

[i write plugins and stuff]

If you like a post, upvote it!

Link to comment
Share on other sites

Rick does not accept code written by anyone other than himself.

What about Tom Jackson?

Yeah! And, what about me!!!

Oh wait-

Question: do you accept user feature contributions?

No, not unsolicited ones.

I'm guessing that he actually asks Tom to help.

Click to play:
j.pngs.pngd.pnga.pngp.png
Download: BoltBait's Plugin Pack | CodeLab | and how about a Computer Dominos Game

Link to comment
Share on other sites

You see, the thing is, the Paint.NET project is not Open Source to the point that anyone can contribute to the project.

You see, the thing is, it's either open source (take a look at item 4) or it's not. I'm not telling Rick how to run his project; if he wishes to adhere to the principle of open source, however, then there has to be a way for third parties to distribute patches to the source (and modified versions, so long as they remain under the terms of his original and give full credit - ie, maintain the original copyright notice, etc).

It's a niggling, niggling philosophical point, given the benefit of Rick giving this product away for free, so please don't look at it as complaining! :)

Question: do you accept user feature contributions?

No, not unsolicited ones. There have been occasions where I have gone and requested code from certain plugin authors so that I could release it with Paint.NET.

I understand the rationale, plus the ultimate determination of what goes into Paint.NET is up to you, so that's fine. I do think there's value in adding digital tablet support, though, and I'll explain why in a bit.

Don't mistake the lack of a feature for "refusal". Paint.NET supports Tablet PC on Windows XP just fine. Awhile ago I volunteered to add the support for Wacom, etc., if someone would buy me a tablet, but nobody did.

At some point in the near future I might make that investment, then, especially if I have a patch/changeset to accompany it. :)

At this point, adding extra code to support something that is only necessary in Windows XP is a losing battle. Day after day, fewer people are using XP and more are using Vista. I only have so much time, and if I can leverage things built-in to the OS then I will. If that means that down-level OS versions (XP) can't use the feature, then that is just the price of free.

So here's where I elaborate on the value of adding this functionality to XP. The first thing is that the work to do so would mean you'd need a generic interface which is specialized for different specific environments. This could help those who are trying to expand Paint.NET's audience far beyond your original imagination, all while validating the power and portability of the .NET Framework. If it requires minimal work on your part - basically, validating a contributed patch and massaging it for stylistic consistency - and you get free hardware out of it...?! Whoo! :P

Anyway, as I said above, I'm cool. I've got it working and I've decided on an attack vector. I'll share my progress as it occurs. (Don't hold your breath - PyWeek 6 starts tomorrow!)

If you'd read the whole error message...

I did. Several times. It wasn't in the dialog box. See the attached image file.

(I know about internet text amping up hostility. No hard feelings. I've been guilty of it many, many times myself. :) )

14504_26b3780ee4abadc479c1e7c9b9c74b29

Link to comment
Share on other sites

And IMHO Paint.NET should move in the direction of being more plugin-based.

I believe Rick wants to do that, too, but that's a lot of work and will probably be a while.

Here are several plugin system ideas: Blend-mode plugins, Custom Brush Plugins*, Output Plugins and Custom Toolbar Plugins

*I can't do this in my plugin because reflection in a plugin :shock: and I can only get reflection to work when the plugins go in a sub-directory of the main executable due to the interface library

KaHuc.png
Link to comment
Share on other sites

Rick does not accept code written by anyone other than himself.

That's not exactly the correct story :)

You see, the thing is, it's either open source (take a look at item 4) or it's not.

You're talking about Open Source as defined by that website or by other political organizations. There's also "open source" as perceived by the public or defined by the media, which basically means "the thing is free of charge and there's source code too." In reality, there are various concrete terms that stem off of "open source", including community-developed software, and "released source" software, of which Paint.NET falls into the latter group.

I do think there's value in adding digital tablet support ...

I never said there wasn't value. I was merely explaining my budgeting rationale for not implementing it. And to be pedantic, there is digital tablet support, just not for the device and OS combination of your choice. Like I said it's a self-fixing problem as XP wanders off into obscurity (which will take 5+ years admittedly). Wacom, etc. work fine in Vista because of the way things are set up there.

... all while validating the power and portability of the .NET Framework ...

The .NET Framework was never really meant to be generally "portable". I personally find "portability" to be a farce of a word, as anyone who's actually written "portable" software can tell you what a giant pain it is to deal with. But that's another discussion!

It wasn't in the dialog box.

It's only in there if you run in Debug.

The Paint.NET Blog: https://blog.getpaint.net/

Donations are always appreciated! https://www.getpaint.net/donate.html

forumSig_bmwE60.jpg

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
 Share

×
×
  • Create New...