Official eMule-Board: Support For Offsystem - Official eMule-Board

Jump to content


  • (10 Pages)
  • +
  • « First
  • 8
  • 9
  • 10

Support For Offsystem Support for the Owner Free File System Rate Topic: -----

#181 User is offline   Stulle 

  • [Enter Mod] Dev
  • PipPipPipPipPipPipPip
  • Group: Members
  • Posts: 5804
  • Joined: 07-April 04

Posted 26 March 2012 - 06:57 PM

I am not an expert but if you use any code from eMules KAD implementation I believe your license choice will not be quite as free. See the following link, first reply.

http://stackoverflow...-other-than-gpl
I am an emule-web.de member and fan!

[Imagine there was a sarcasm meter right here!]

No, there will not be a new version of my mods. No, I do not want your PM. No, I am certain, use the board and quit sending PMs. No, I am not kidding, there will not be a new version of my mods just because of YOU asking for it!
0

#182 User is offline   DavidXanatos 

  • Neo Dev
  • PipPipPipPipPipPipPip
  • Group: Members
  • Posts: 1469
  • Joined: 23-April 04

Posted 27 March 2012 - 07:01 AM

View PostStulle, on 26 March 2012 - 07:57 PM, said:

I am not an expert but if you use any code from eMules KAD implementation I believe your license choice will not be quite as free. See the following link, first reply.

http://stackoverflow...-other-than-gpl


I rather read directly the GNU FAQ

http://www.gnu.org/l...MereAggregation

Quote

What is the difference between an "aggregate" and other kinds of "modified versions"?

An "aggregate" consists of a number of separate programs, distributed together on the same CD-ROM or other media. The GPL permits you to create and distribute an aggregate, even when the licenses of the other software are non-free or GPL-incompatible. The only condition is that you cannot release the aggregate under a license that prohibits users from exercising rights that each program's individual license would grant them.

Where's the line between two separate programs, and one program with two parts? This is a legal question, which ultimately judges will decide. We believe that a proper criterion depends both on the mechanism of communication (exec, pipes, rpc, function calls within a shared address space, etc.) and the semantics of the communication (what kinds of information are interchanged).

If the modules are included in the same executable file, they are definitely combined in one program. If modules are designed to run linked together in a shared address space, that almost surely means combining them into one program. By contrast, pipes, sockets and command-line arguments are communication mechanisms normally used between two separate programs. So when they are used for communication, the modules normally are separate programs. But if the semantics of the communication are intimate enough, exchanging complex internal data structures, that too could be a basis to consider the two parts as combined into a larger program.


As you see it is allowed to distribute GPL'd software together with non GPL'd as long as the programs are separated, for example when they only talk through pipes/sockets to each other and don't exchange any proprietary data structures obviously like when using a simple generic text based protocol.

http://www.gnu.org/l...NFUseGPLPlugins

Quote

Can I release a non-free program that's designed to load a GPL-covered plug-in?

It depends on how the program invokes its plug-ins. For instance, if the program uses only simple fork and exec to invoke and communicate with plug-ins, then the plug-ins are separate programs, so the license of the plug-in makes no requirements about the main program.

If the program dynamically links plug-ins, and they make function calls to each other and share data structures, we believe they form a single program, which must be treated as an extension of both the main program and the plug-ins. In order to use the GPL-covered plug-ins, the main program must be released under the GPL or a GPL-compatible free software license, and that the terms of the GPL must be followed when the main program is distributed for use with these plug-ins.

If the program dynamically links plug-ins, but the communication between them is limited to invoking the 'main' function of the plug-in with some options and waiting for it to return, that is a borderline case. Using shared memory to communicate with complex data structures is pretty much equivalent to dynamic linking.



Also here, separated processes are separate programs, so the license of the plug-in makes no requirements about the main program.


So sounds like using a GPL'd helper process by an arbitrary licensed program is perfectly fine.


David X.
NeoLoader is a new file sharing client, supporting ed2k/eMule, Bittorent and one click hosters,
it is the first client to be able to download form multiple networks the same file.
NL provides the first fully decentralized scalable torrent and DDL keyword search,
it implements an own novel anonymous file sharing network, providing anonymity and deniability to its users,
as well as many other new features.
It is written in C++ with Qt and is available for Windows, Linux and MacOS.
0

#183 User is offline   Stulle 

  • [Enter Mod] Dev
  • PipPipPipPipPipPipPip
  • Group: Members
  • Posts: 5804
  • Joined: 07-April 04

Posted 27 March 2012 - 05:55 PM

First quote does not apply because if you include the code in your executable it will not be a separate program. You said you plan to do one core and one GUI. You might be able to give the GUI another license according to the first quote, it's another case for the core then.

As for the second quote, I basically said it already. If you do an entirely separate KAD module you might be free to chose but you claimed you were aiming for GUI and Core in a single executable. In conclusion, the second quote does not apply either.

The best comparison would be considering the KAD code from eMule a library and I think it says quite clearly that distributing a program that makes use of a GPL licensed library requires the distributor to license his distribution under the GPL.
I am an emule-web.de member and fan!

[Imagine there was a sarcasm meter right here!]

No, there will not be a new version of my mods. No, I do not want your PM. No, I am certain, use the board and quit sending PMs. No, I am not kidding, there will not be a new version of my mods just because of YOU asking for it!
0

#184 User is offline   DavidXanatos 

  • Neo Dev
  • PipPipPipPipPipPipPip
  • Group: Members
  • Posts: 1469
  • Joined: 23-April 04

Posted 27 March 2012 - 06:08 PM

View PostStulle, on 27 March 2012 - 06:55 PM, said:

If you do an entirely separate KAD module you might be free to chose but you claimed you were aiming for GUI and Core in a single executable.

Did I really claimed that?

Did you read my entire posting?

View PostDavidXanatos, on 25 March 2012 - 09:16 PM, said:

The client is made modular using a text based (bencode/jsonn/xml) interface using pipes and/or (encrypted) sockets, so that the core and GUI can run in separated processes (though they are booth in the same exe) also as service/daemon.
The NeoKAD, TorrentDHT (MIT) and MuleKAD (GPL) modules will reside in separated processes and exe files.


You might want to take a closer look on the bold text part, especially the underlined part.

David X.
NeoLoader is a new file sharing client, supporting ed2k/eMule, Bittorent and one click hosters,
it is the first client to be able to download form multiple networks the same file.
NL provides the first fully decentralized scalable torrent and DDL keyword search,
it implements an own novel anonymous file sharing network, providing anonymity and deniability to its users,
as well as many other new features.
It is written in C++ with Qt and is available for Windows, Linux and MacOS.
0

#185 User is offline   Stulle 

  • [Enter Mod] Dev
  • PipPipPipPipPipPipPip
  • Group: Members
  • Posts: 5804
  • Joined: 07-April 04

Posted 27 March 2012 - 06:44 PM

Well, in that case I was not fully aware of your self-contradictory statement. I stuck to:

Quote

The client is made modular using a text based (bencode/jsonn/xml) interface using pipes and/or (encrypted) sockets, so that the core and GUI can run in separated processes (though they are booth in the same exe) also as service/daemon.


I am sorry and stand corrected in this matter.

Still, the KAD module will have to be licensed under the GPL. My original statement remains undisputed, you are not quite as free. Also, your second quote in your second last post says:

Quote

If the program dynamically links plug-ins, and they make function calls to each other and share data structures, we believe they form a single program, which must be treated as an extension of both the main program and the plug-ins. In order to use the GPL-covered plug-ins, the main program must be released under the GPL or a GPL-compatible free software license, and that the terms of the GPL must be followed when the main program is distributed for use with these plug-ins.


So again, given that finding sources and storing files in a network is core functionality of any P2P tool. Hence, "the GPL must be followed".

Thank you for providing me with these quotes, it makes arguing with you so much easier and I will happily wait for your second down vote for the day. :respect:

This post has been edited by Stulle: 27 March 2012 - 06:45 PM

I am an emule-web.de member and fan!

[Imagine there was a sarcasm meter right here!]

No, there will not be a new version of my mods. No, I do not want your PM. No, I am certain, use the board and quit sending PMs. No, I am not kidding, there will not be a new version of my mods just because of YOU asking for it!
0

#186 User is offline   DavidXanatos 

  • Neo Dev
  • PipPipPipPipPipPipPip
  • Group: Members
  • Posts: 1469
  • Joined: 23-April 04

Posted 27 March 2012 - 07:04 PM

Quote

Still, the KAD module will have to be licensed under the GPL.

Like I wrote on my first post on that topic.

Quote

The NeoKAD, TorrentDHT (MIT) and MuleKAD (GPL) modules will reside in separated processes and exe files.


Quote

Also, your second quote in your second last post says:



>If the program dynamically links plug-ins
It does not, thay are separate processes in separated address spaces.

>and they make function calls
There are no function calls (with a separated address it would be actually quite an achievement if one would do that, the memory protection in windows is supposed to make a function call form one address space into another impossible), they instead send text commands through pipes/sockets and wait for a response.

>to each other and share data structures
They don't share any internal data structures, they use bencode/jsonn/xml encoded command/response parameters.

Quote

So again, given that finding sources and storing files in a network is core functionality of any P2P tool.

That is obviously irrelevant, see the quotations from the GPL FAQ.

The processes run independently, actually they could even run on different computers, so they are separated programs, and those can be licensed independently and distributed together as a aggregate.

Just like a GPL'd torrent client can get his sources from a IIS (closed source M$ http server) tracker, or vice versa.
The Neo leaks exactly as much principle functionality without the MuleKAD module as does any typical bittorent client without a tracker.


David X.

This post has been edited by DavidXanatos: 27 March 2012 - 07:06 PM

NeoLoader is a new file sharing client, supporting ed2k/eMule, Bittorent and one click hosters,
it is the first client to be able to download form multiple networks the same file.
NL provides the first fully decentralized scalable torrent and DDL keyword search,
it implements an own novel anonymous file sharing network, providing anonymity and deniability to its users,
as well as many other new features.
It is written in C++ with Qt and is available for Windows, Linux and MacOS.
0

#187 User is offline   Stulle 

  • [Enter Mod] Dev
  • PipPipPipPipPipPipPip
  • Group: Members
  • Posts: 5804
  • Joined: 07-April 04

Posted 27 March 2012 - 09:26 PM

You are just playing the semantics game. Poorly so, unfortunately. I have strong doubts that any sane judge would consider a tool process which only exists to support another process to be independent. Also, it is of no concern where some process or other runs as long as there is a certain dependency between them. So if the desire to use the full extent of functionality you coded into your Neo-whatever requires me to use your KAD helper tool I see a definite dependency. This is, however, unrelated to any client-server-analogy because both parties are usually written to be used independently to some extent. In the case of Torrents there is even the explicit wish for torrent servers to work with any client and vice versa. Anyway, just go ahead with what ever you do. I still don't stand corrected as far as your choice of license is concerned. You have to be quite careful when choosing the license or you'll wind up violating licenses. No matter how much you try to talk yourself out of the issue.

Just one last thing to think about, a data structure is not defined by which process owns the data in the system memory. Data structure is a very generic term for any kind of meaningful information that has a defined structure. In this particular case we are talking about electronic data so logically it will be some kind of binary data that can be interpreted, for instance, as some kind of XML or whatever. Arguing otherwise means you have a total lack of understanding of the term "data" as it frequently used, at least in the field of science I hang around. Also note that the quote I used specifically does not speak of "internal" while the bit you might refer to is pretty vague and suggests that the exchange will have to remain minimal, i.e. just call the 'main' function and nothing more. Any plug-in that aims to provide KAD functionality will have more than one interface that just gives back some results after performing a 'main' function.

This post has been edited by Stulle: 27 March 2012 - 09:29 PM

I am an emule-web.de member and fan!

[Imagine there was a sarcasm meter right here!]

No, there will not be a new version of my mods. No, I do not want your PM. No, I am certain, use the board and quit sending PMs. No, I am not kidding, there will not be a new version of my mods just because of YOU asking for it!
0

#188 User is offline   DavidXanatos 

  • Neo Dev
  • PipPipPipPipPipPipPip
  • Group: Members
  • Posts: 1469
  • Joined: 23-April 04

Posted 27 March 2012 - 10:17 PM

I can only refer you back to the FSF's GPL FAQ it clearly states that when the communication is using pipes, sockets and is not exchanging internal data structures the programs are considered to be separated. And those licensed independently.

http://www.gnu.org/l...MereAggregation

Quote

By contrast, pipes, sockets and command-line arguments are communication mechanisms normally used between two separate programs. So when they are used for communication, the modules normally are separate programs. But if the semantics of the communication are intimate enough, exchanging complex internal data structures, that too could be a basis to consider the two parts as combined into a larger program.


No sane judge will argue against such a clear explanation from the authors of the license.

Quote

So if the desire to use the full extent of functionality you coded into your Neo-whatever requires me to use your KAD helper tool I see a definite dependency.

Interesting, Firefox for example also can not use its full functionality without a web server and this one can be closed source IIS from M$.
According to your logic this would be a GPL issue.

In reality GPL allows you to use client and server with arbitrary Licenses and considderes them independant programs even if thay are distributed together as an aggregate.


Quote

This is, however, unrelated to any client-server-analogy because both parties are usually written to be used independently to some extent. In the case of Torrents there is even the explicit wish for torrent servers to work with any client and vice versa.

Well, as you can see in the GPL FAQ they don't care about the intension or the subjective dependence of the programs to each other, only about the technical aspects of the communication, which are clearly met by the selected way of communication.


Quote

Just one last thing to think about, a data structure is not defined by which process owns the data in the system memory. Data structure is a very generic term for any kind of meaningful information that has a defined structure. In this particular case we are talking about electronic data so logically it will be some kind of binary data that can be interpreted, for instance, as some kind of XML or whatever.

The simple point is that there are no data structures that after the communication process is completed are structured the same way inside the two independent programs (except trivial things like strings or integers).

Inside NeoLoader you have a complex class that represents a file, with multiple hashes, part mats, etc... and inside the KAD module you have a simple SFileInfo strut that contains only the few informations KAD can understand.


Also if you would wanted you could of cause run the MuleKAD process manually and tell it through telnet what userhash to use and it would join the kad, than you could start manually a search for a file and retrieve the results in xml form.
The Module can easily be used by emule Plus or shareaza to finally get Kademial support.



Quote

Also note that the quote I used specifically does not speak of "internal" while the bit you might refer to is pretty vague and suggests that the exchange will have to remain minimal, i.e. just call the 'main' function and nothing more.


You are referring to:

Quote

If the program dynamically links plug-ins, but the communication between them is limited to invoking the 'main' function of the plug-in with some options and waiting for it to return, that is a borderline case. Using shared memory to communicate with complex data structures is pretty much equivalent to dynamic linking.

Which handles explicitly the case of dynamically links, a.k.a. shared address space.

In case of separated process however this part apples

Quote

For instance, if the program uses only simple fork and exec to invoke and communicate with plug-ins, then the plug-ins are separate programs, so the license of the plug-in makes no requirements about the main program.



Quote

Any plug-in that aims to provide KAD functionality will have more than one interface that just gives back some results after performing a 'main' function.

Well actually there is exactly one Internal function that is invoked by the Inter Process Communication with 2 parameters a command name and QVariantMap (an intermediary data structure created by the json/xml/beencode decoders) this function does its thing according to the command name it got and returns another QVariantMap for the inter process communication to encode and transmit back to the calling client.


it looks kind of like this:

void CMuleKAD::OnRequestRecived(const QString& Command, const QVariant& Parameters, QVariant& Result)
{
	QVariantMap Request = Parameters.toMap();

	QVariantMap Response;

	if(Command == "Connect")
	{
		if(!m_KadHandler)
			m_KadHandler = new CKadHandler(m_KadID, Request["ClientPort"].toUInt(), Request["UserHash"].toByteArray());

		m_KadHandler->EnableLanMode(Request["EnableLanMode"].toBool());
		m_KadHandler->EnableCryptLayer(Request["SupportsCryptLayer"].toBool(), Request["RequestsCryptLayer"].toBool(), Request["RequiresCryptLayer"].toBool());

		Response["Result"] = "ok";
	}
	else if(!m_KadHandler || !m_KadHandler->IsRunning())
	{
		Response["Result"] = "Stopped";
	}
	else if(Command == "AddNode")
	{	
		m_KadHandler->Bootstrap(QHostAddress(Request["Address"].toString()), Request["UDPPort"].toUInt());
	}
	else if(Command == "SyncState")
	{
		m_KadHandler->SetFirewalled(Request["Firewalled"].toBool());
		m_KadHandler->SetPublicIP(QHostAddress(Request["PublicIP"].toString()).toIPv4Address());
		m_KadHandler->SetBuddy(QHostAddress(Request["BuddyIP"].toString()).toIPv4Address(), Request["BuddyPort"].toUInt());

		Response["PublicIP"] = QHostAddress(m_KadHandler->GetKadIP()).toString();
		Response["KadPort"] = m_KadHandler->GetKadPort();
		Response["Firewalled"] = m_KadHandler->IsFirewalledTCP();
		Response["KadFirewalled"] = m_KadHandler->IsFirewalledUDP();



The IPC code will be part of a double licensed GPL + LGPL(or BSD or MIT) completly self write helper library.

So to connect using telnet you woul have to type:
Connect json:{ClientPort:12345,UserHash:"0123456789ABCDEF0123456789ABCDEF"} \r\n
to add a node
AddNode json:{Address:123.456.789.000,UDPPort:123} \r\n

etc....

So you see you can use the MuleKAD Module completely independent if you choose so.


David X.

This post has been edited by DavidXanatos: 27 March 2012 - 10:19 PM

NeoLoader is a new file sharing client, supporting ed2k/eMule, Bittorent and one click hosters,
it is the first client to be able to download form multiple networks the same file.
NL provides the first fully decentralized scalable torrent and DDL keyword search,
it implements an own novel anonymous file sharing network, providing anonymity and deniability to its users,
as well as many other new features.
It is written in C++ with Qt and is available for Windows, Linux and MacOS.
0

#189 User is offline   technician23 

  • Splendid Member
  • PipPipPipPip
  • Group: Members
  • Posts: 145
  • Joined: 21-January 07

Posted 31 March 2012 - 01:59 PM

so is there a mod seriously implementing the OFF system in Emule? will this mod use Emule or Amule to be compatible with Imule, which has been release in version 2.1 recently?
0

#190 User is offline   DavidXanatos 

  • Neo Dev
  • PipPipPipPipPipPipPip
  • Group: Members
  • Posts: 1469
  • Joined: 23-April 04

Posted 31 March 2012 - 02:11 PM

View Posttechnician23, on 31 March 2012 - 02:59 PM, said:

so is there a mod seriously implementing the OFF system in Emule?

no

the client in question will be writen from scratch.

And no it is not likely it will implement OFF-System anytime soon.
It is one of a many possible next gen technologies we are investigating at the moment.

View Posttechnician23, on 31 March 2012 - 02:59 PM, said:

...to be compatible with Imule, which has been release in version 2.1 recently?


Support for I2P is a different technology than OFFS and it is most likely overkill to implement a Bright Net (OFF-System) over a Dark Net (i2p)

I'm not sure about the actual user base of I2P, and unless its is a lot, its unlikely iMule compatibility will be added at all.



David X.
NeoLoader is a new file sharing client, supporting ed2k/eMule, Bittorent and one click hosters,
it is the first client to be able to download form multiple networks the same file.
NL provides the first fully decentralized scalable torrent and DDL keyword search,
it implements an own novel anonymous file sharing network, providing anonymity and deniability to its users,
as well as many other new features.
It is written in C++ with Qt and is available for Windows, Linux and MacOS.
0

  • Member Options

  • (10 Pages)
  • +
  • « First
  • 8
  • 9
  • 10

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users