I had a similar problem with the quadratic sieve I was developing.
Someone developed an extremely nice trick for speeding up the quadratic
sieve, implemented it in MAPLE (I'm not sure if it is actually part of
the core functionality of MAPLE, since it seems to factor extremely
slowly), then wrote a paper on the subject.

I'd really like to pinch that algorithmic trick, and in fact, had I
discovered the paper on the web myself, I probably would have
implemented it. But it was actually pointed out to me by someone who
knew the author.

The author obviously didn't want his idea GPL'd, but probably would
have no problems with me using the trick in a home brew program.

In short, things like this force one to be innovative and come up with
one's own unique solutions.

Another neat trick for the quadratic sieve is one used by an extemely
fast implementation called msieve, by Jason P. I could have just
pinched his big idea, but I consider Jason P to be a friend.

In the end, I found my own unique strategy which seems to accomplish
pretty much the same thing by completely different means. It is still
not clear which will end up being faster when I finally add in all the
other known tricks for the quadratic sieve.

Some of Jason P's code from msieve has ended up in GPL'd works (most
notably GGNFS), but with attribution. I suspect they sought special
permission from him to use it. He may have even contributed it himself.

In short, sometimes contacting the author can be a help. Other times it
is better to not know the author too well.

Another difficulty I have is, how does one give attribution when the
code you write is heavily based on code by someone else (where their
code *IS* GPL'd), but your code has been rewritten to the point where
you can't just put their copyright notice on the code?

There is an example of this in a very small section of my quadratic
sieve. I rewrote and made use of some (but certainly not all) of the
F2Matrix code used in Pari (and made it 20 times faster on some
architectures). It is still recognizable, but virtually no line is
precisely the same as used in Pari. Any ideas how I properly attribute
this? I've tried contacting the original copyright holder, but didn't
yet get a response.

A similar issue is likely to arise for portions of the NTL replacement
library I am writing. There I can just contact Victor Shoup and see
what he wants me to do to properly credit him.

Some portions of the code are so similar (virtually just translated)
that it might be appropriate to just make them copyright Victor Shoup
and note that I had made contributions!! Other parts are of course
uniquely mine.

Note, that the similar portions can't just be submitted to be included
in NTL, since they work completely differently and are not compatible
with that product.

Bill.

P.S: Unfortunately msieve itself is (currently) only fast on an Athlon
machine and is otherwise not portable due to the use of assembly
language (if I understand correctly), so we can't just use it in SAGE
for factoring (it's about 8 times faster on an Athlon than the current
factoring implementation).

Jason P's license restrictions are actually compatible with the GPL I
suspect, so this would be theoretically possible, if it weren't for his
home brew MP library.


--~--~---------~--~----~------------~-------~--~----~
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://sage.scipy.org/sage/ and http://modular.math.washington.edu/sage/
-~----------~----~----~----~------~----~------~--~---

Reply via email to