Open source: where/how, and general discussion

Pages: 123
closed account (z05DSL3A)
From what I understand, under US law (and probably other countries) if you buy software you buy everything, source code, the rights to sell it on, and so on. To get around this, you sell, or give in the case of open source, the user a license to use the program/source code in a manner laid out by the license agreement. I also understand that as you are now dealing with a license with terms of use, you are now in the realms of contract law and not copyright law. This is just the same in Open Source, you do not own the source code, just have permission to use it under the terms of the license.

Disclaimer: I am not a lawyer, so do not take this post a legal fact or advice. ;0)
I just opened up an account at sourceforge.net and applied for a project.

Do they accept highly specialized projects? I am afraid that since I am providing a bunch of math code they can turn it down.
Last edited on
I'm fairly sure they'll accept pretty much anything as long as it's open source and isn't plagiarism.
Last edited on
And finally I got my open source project :) Thanks a lot for the advice guys!

http://sourceforge.net/projects/vectorpartition/

Sourceforge looks at first glance one of the best places in the internet!
Personally I love open source. I can learn from all the open source programs out there. I learnt how to use #define by reading some code from a 2D game.

Anyone who creates open source software is, in my opinion, worthy of greater recognition than those who create proprietary software. Owing to that, whenever I create a program (even if it is something ridiculously easy like a calculator or something) I always create a 'build' and 'source' folder for it. Just to get into the habit -- if I ever get particularly good I'll make almost only open source software.

By the way, Tition, what does it actually do?

And yes, SourceForge is brilliant. I've downloaded numerous open source projects for study from there.
Last edited on
At the moment it just provides a couple of mathematical functions via a dll. My reasons for posting this program were more to protect my possible claim of an algorithm, than to give an easy to use program (I explained that in my first post). That is why I have paid extra attention on the math description of what I am doing (I write it parallel with the code).

Although the program is not useful "as is" I do hope it could, one day, help a stuck math graduate student like myself. That is why I plan to write an interface to one of the popular math programs (for example, it could be MAPLE or MAGMA).

So here's what it does: (disclaimer: some math ahead!)

My program is about solving the following problem. Say you are given a set of vectors with positive integer coordinates (mathematical vectors lol: that is a sequence of n numbers. n is called in this case "the dimension" of the "vector space"). Let those vectors be v_1,...,v_k. These vectors are concrete integer vectors: for example:

v_1=(1,0)
v_2=(0,1)
v_3=(1,1)

The dimension of the space in the example is 2.


Then you are given another vector, say w=(x_1,x_2,...,x_n), however, x_1,...,x_n are not concrete numbers, but are formal parameters. The question is:

In how many ways can you write the vector w=(x_1,...,x_n) as a non negative integer sum of the vectors v_1,...,v_k ?

In our example, let us take the vector w=(2,2). Then it can be written in 3 different ways as a non-negative integer sum of the v_1, v_2, v_3:

w= 2*v_1+2*v_2 = 2*(1,0)+2*(0,1)
w= v_1+v_2+v_3= (1,0)+(0,1)+(1,1)
w=2*v_3= 2*(1,1)

Wait a minute... I was asking my question for general values of the vector w=(x_1,..,x_n), not for concrete values of w! Cheater!

Ok, but for this simple example, you can actually solve the problem for arbitrary w=(x_1,x_2). For fun, I will write it directly in c++ :

1
2
3
4
5
6
7
8
int NumWays(int x_1, int x_2)
{ if (x_1<0 || x_2<0)
     return 0;
  if (x_1<=x_2)
    return x_1+1;
  else
    return x_2+1;
}


Now I leave it up to you to reason why this is so for this concrete example. (it is very easy to see).

What do we see from this example:
1) there exist finitely many inequalities that determine different answers (in this case, two pairs of inequalities x_2 > 0, x_1 > x_2; and x_1>0, x_2>x_1)
2) if we know which of the inequalities are satisfied (and there are only finitely many), the answer is a polynomial expression with respect to x_1,...,x_n (in our concrete example, the polynomials x_1+1 and x_2+1)

Note: 2) is actually a lie; the true answer is a bit technical and involves the word "quaipolynomials", however the main idea is completely the same. The problem comes from the example: take one-dimensional vector space and let v_1 be the vector (2). Then the vector (3) cannot be written as a non-negative integer sum of copies of v_1.

So, what my program does is the following:
0) You feed it in vectors
1) It computes you the inequalities that were explained on the example
2) It computes the (quasi)polynomials that give the answer

(a screen shot of my program with what the answer looks like for a set of vectors in 3 dimensional space (the graphics represent the different "combinatorial chambers" that are determined by the inequalities):

https://sourceforge.net/project/screenshots.php?group_id=263224

)

What do I need this program for is a reaaaaaally long story, but let's just say I never wanted to write it, I just wanted to have the output for a concrete set of 15 vectors lying in 5-dimensional space. However, when I googled with the expectation of seeing 10 different programs doing this (you should google vector partition function), well... I found a bunch of articles and a program that could only compute the number (actually a little bit more, I don't want to go in details), but not at all the algebraic expression that I presented in the above example (the program is called Latte).

So this is how I came about to meet the world of C++ :)
Last edited on
Another way to interpret my problem:

You are playing Starcraft, and you have 3 resources: crystals, gas, and support/control points. You have a list of different unit types and how much resources each unit requires.

With a given amount of resources, how many different armies can you build? (using *completely* your resources) (This problem is a variation of a problem I have heard people name "knapsack problem").

My program can do that for arbitrary # of types of resources (not just 3) ("space dimension"), and for arbitrary unit types ("starting list of integer vectors"). Something more, my program doesn't simply compute the number of different armies you can construct, it gives you *a formula* how to compute that number.
Last edited on
(After reading the comments at the top of the file) Oh... :/
You know? Most academic works use a permissive licence, not a copyleft licence. Seems to me like it makes more sense to allow more people to use a mathematical algorithm rather than less, even if it has a limited application.
Umm... could you elaborate more? I can always change the license hehe :)
In a nutshell:
Proprietary: You can use the binary, but you can't look at the sources. The sources are copyrighted.
GPL: You can use the binary and see the sources, but if you modify the sources, the derivative must be licensed under the GPL. A software under any of the licences below or the GPL may link to the unmodified code. The sources are copyrighted.
LGPL: Same as GPL, with the exception that a software under any licence can link. Derivative works must still be licenced under the same conditions. The sources are copyrighted.
Permissive licences (BSD, MIT, Boost, and a long etc.)*: Anyone may use the software for any purpose, provided they follow a short list of conditions**. Derivative works may be licenced under any terms. The sources are copyrighted.
Public domain: No restrictions of any kind. The sources are not copyrighted.

*The 4-clause BSD licence is no longer considered open source for merely practical reasons. The fourth clause stated that derivative works needed to maintain a list of the authors of the base distribution (such that the original included A, the child included A, B, and C, the grandchild included A, B, C, D... and so on). There's one instance where the list had been maintained during 75 generations, IIRC.
**For example, the 3-clause BSD licence states that unmodified distributions of either form (source and/or binary) must include the copyright notice, the clauses, and the disclaimer. The third clause states that the names of the authors may not be used to promote derivative works.

I don't really agree with the idea that spawned the GPL, which is why I suggested you use a permissive licence. Sometimes I wonder if everyone who uses it really understand it and have given the choice any thought, or are only using it because it's what everyone else is using.

First, here's a rather long post someone who either knows his legalese or is talking out of his ass. In any case, it's amusing, particularly near the end. Although I don't agree with him on everything:
Opinion: "GPL Written By A Monkey" -- GNU GPL (a.k.a. "Please rape me!")
http://www.mail-archive.com/gnu-misc-discuss@gnu.org/msg04542.html

Now, I'll briefly explain why I don't use it (at least as a hobbyist).
The first reason is that I think the GPL gives an incomplete form of freedom (although my political views are less popular, this is actually one of my main qualms with [indirect] democracy, as well). It protects the licencees' freedom at the expense of the licensors' freedom. If you want to look at a source and fiddle with it then you're in luck. However, if you want to modify it considerably and redistribute it under a different licence, then the GPL is like a giant "FUCK YOU" at the top of the source. I've actually heard of someone who stirred some controvercy because he decided he didn't like the GPL anymore and decided to switch to something else. Too bad I can't seem to find the link anymore.
The second reason is that I, as a user, don't really care too much whether something is OS or not. IMO, openness has to bow down to overall quality. If the code I wrote could possibly help make great software, then should I really care whether my successors think like me or not? That is, I think, the main point of OSS which the GPL stealthily undermines. Generosity. To give without expecting anything in return. Actually, I've seen Stallman explicitly state that he thought of the GPL to prevent the situation where someone takes without giving back. Again, I can't remember where, which kinda annoys me.

Phew! Well, there you have it. If you agree with me, I think you'll find that permissive licences or PD will more than suit you. If you don't, well, at least you gave it some thought.


PS: Hey, I think this is the first post in this thread actually discussing OSS and not copyright.
Last edited on
Well, I do not agree that GPL does not protect the rights of the licensor. The licensor is free to contact previous contributor(s) of the source code and get it under any other license. Otherwise the work of the previous licensors is "free beer". I think the important accomplishment of the GPL license is to *not* that it makes the licensed work "free". The word "free" is altogether wrong, and is one of the worst criticisms I have for the GPL. I think that a correct reading of the GPL is:

"you pay the price for this source code by making your subsequent work available under the same conditions, and by surrendering your rights to make money out of its distribution in binary form".

Now I see no problem in putting a price to things I made. As far as the giant "Fuck you" on top of the code goes - well, that is precisely what I would like to say to anyone trying to obtain something without paying its attached price (aka steal).

GPL might be, in some sense, putting a very high price for the code, from the perspective of a developer. That is its major flaw: overpriced items never sell! LGPL looks like lowering the price significantly, but the other three licenses I read about (BSD, MIT, Academic) look like putting your code for free out.

Finally, I think it makes sense for me to switch to LGPL license, since what I am doing is a library, first and foremost. Anyways, the above discussion barely applies to my code, since it is tightly specialized; I doubt anyone would do anything with it without writing me a mail.
Last edited on
The licensor is free to contact previous contributor(s) of the source code and get it under any other license.
Except the list of contributors is in some cases ridiculously long. The longer it is, the more likely it is that someone will refuse.

surrendering your rights to make money out of its distribution in binary form
The GPL doesn't forbid charging money for your work, nor for someone else's work.

the other three licenses I read about (BSD, MIT, Academic) look like putting your code for free out.
Aren't we generous?
Last edited on
Aren't we generous?


Who said open source is generosity? Will Microsoft give me Windows for free, together with the ability to modify it the way I please, and without running "remote access" processes via svchost on my computer? No?

Well, I am not a generous person either. If anyone wants to use my code, he has to pay the price: use the (L)GPL license. He wants it for free, no obligations? Too bad for him/her, we don't live in a communist world (communism= mine is personal, yours is common). We actually have laws to protect our property and pricing (and (L)GPL is a *small* price to pay!). Copyright law is such a good thing!
Last edited on
Who said open source is generosity?
I can't think of any other reason someone would spend years working on something to then release it at no charge.

Will Microsoft give me Windows for free, together with the ability to modify it the way I please, and without running "remote access" processes via svchost on my computer? No? Well, I am not a generous person either. If anyone wants to use my code, he has to pay the price
So... You rationale for using the L/GPL is "there's people who enforce their rights to not share information; therefore, instead of setting a good example, I will share my information only under certain conditions".

Unless I misunderstand communism, it's not "mine is mine, yours is ours"; it's "all is ours, take as needed" (or maybe that was socialism). Either way, the LGPL doesn't prevent code from being used in closed source programs. It only prevents the LGPL'd module from being closed.
Actually, I feel a little inflammatory, today, so I'll just go ahead and say that it doesn't even prevent that. For every GPL violation that's known, there's around 10 more that aren't known. Let's be frank: reverse engineer is hard, and obfuscation is easy, and even when that's not true, a medium-sized company can provide closed L/GPL'd code to their clients without raising any suspicions, particularly if the software is running on their servers. Plus, there are countries, mine included, where copyright laws are relatively unenforced.
I can't think of any other reason someone would spend years working on something to then release it at no charge.

I can't think of any reason why one would spend years working on something just to earn money from it. Months perhaps - yes. No wonder "hobbyist" programmers are often better motivated than their paid colleagues.

I am working half a year now on a program just to do my mathematical research (I am a wannabe algebraist) and have no interest in earning more money on it (my scholarship is sufficient for all needs of my family).

Richard Stallman worked for 15+ years in the name of his ego and of dubious social/philosophical ideas (which I personally totally disagree with).

Torvalds spent his first few years of programming Linux just because he had no operational system to play with.

Some of the people visiting this forum will end up working months or even years to make a computer game just because they like computer gaming.

***

So why did all these people spend years of their time, instead of purchasing the ready product at a low affordable price from three-four competing companies? 1) Because it wasn't available (or affordable, which is the same) and 2) Because they needed it.

P.S. My note on communism was about how the system actually worked, not what the party slogans said.
Last edited on
I can't think of any reason why one would spend years working on something just to earn money from it. Months perhaps - yes.
Some games have been several years in development. The best example is Duke Nukem Forever, which has been in development for twelve years. It's evident their motivation is profit, otherwise they wouldn't do it.

(Examples go here.)
Okay, that explains why they worked on it. It doesn't explain why they made their work available. They could have just as well kept their programs to themselves.
If it's not altruism, I don't know what it could possibly be.

Could you expand on your opinion of Stallman's ideas? I find it rather contradictory that you disagree with him, and yet you use his licence.
Last edited on
It is a fact that a large amount of code is written by people who do not plan on making profit by directly selling software, be it because of lack of facility or desire to do so. Keeping the software to themselves is pointless, and that is why people open their source.

Now, it is a matter of the biggest and strongest player around - i.e. society (at least in the western world) - to protect the interest of its members. From now on I will call the common interests of the regular computer users "society", although certainly this might not be the most accurate of terms.

So the price of the software that society wrote is called (L)GPL - a very sound price, protecting her interests. Against whom, you would say? Aren't the CEOs of the large software corporations also part of society? Well, high quality low priced (i.e. (L)GPL/related priced) reliable open software IS in the interest of society more than assuring that a handful of people can get an extra yacht or sports car they don't really need. Let me give a small example.

Count the non-fixed bugs/unnecessary dlls in Windows slowing down its boot time. I would say, at least 4-5 seconds per computer boot. Let us say we rate our lost time at 0.25 cents per second (say, 10euro per hour). Now multiply that by.... how many million?.... users, times .... how many boots?..., and you will get a good estimate of what the soft and small company "owes" to society with every switch on of a personal computer.

Now of course, society can't blame the small and soft company - there is no alternative, unless society writes her own software. Well, now she did, and certain individuals/companies want to steal it without paying the attached reasonable price (say, (L)GPL). Now, is society stupid or is she smart? Is she willing to protect her interests or not? I think she is, and one of the most effective tools of doing so is GPL.

PS. I chose Microsoft as a typical representative of certain business interests. Many other companies qualify as well.
Last edited on
That's all fine and good, but (unless I'm missing something) it doesn't explain how the GPL protects the interests of society better than permissive licences or public domain.

You complain about companies that release broken software and cost lots of man-hours. Fair enough. Now, wouldn't it then be better for everyone if anyone was able to use OSS, which has possibly already been scrutinized by many people ("given enough eyeballs, all bugs are shallow"), for whatever they wanted?

On the other hand, I think it's fairly obvious that the entire world can benefit by having less weapons, yet a licence that includes a clause static the code may not be used in, say, nuclear weapons research, is not considered a free software licence merely because it has more restrictions than the GPL.
I'm still trying to figure out how that makes any damn sense. So proprietary software is more harmful than mutual assured destruction?
OSS can also be used to power supercomputer computations on DNA simulations to aid anti-cancer research. The "good" or "bad" use of the the OSS (or any software for that matter) I think is a little bit off topic. Good infrastructure can be used for both good and bad purposes, but having it (in my opinion) is always better than not.

Giving items/work/source for free is inherently wrong. It contradicts human nature. I think we both seem to agree that open source is not completely free; especially from the perspective of a developer, its price is by no means low (but lower than most!). So, corporations want to get free source at high quality. I want free beer. And to see the source code of Windows and be able to modify it. I am not getting any of my two wishes. Corporations are not getting open source for free.

I think it's fair. And I don't think it's fair that we give our source for free when corporations wouldn't provide us the software we want at a reasonable price.


As you correctly mentioned, piracy is especially easy with open source. On the other hand there are many ways in which open source development is *economically* more viable than closed source development. There are also many schemes for making money from the development process itself, rather than just from the end-product. A great portion of the commercial oriented part of the Linux community appears to do that.
Giving items/work/source for free is inherently wrong. It contradicts human nature.
EXCUSE ME? So gifts, charity, and volunteer work is wrong? Is that what you're saying? Either what you meant to say came out horribly wrong, or you're simply an asshole. I'd prefer to think the former, but I honestly can't tell.

Believe it or not, there's lots of people willing to donate (as in, give away at their own expense) resources to some cause they believe in, or just because they want to. So no, it doesn't "contradict human nature".
Pages: 123