Ini bukan masalah yang jelas. Pertimbangkan dua ujung ekstrem dari spektrum:
Perangkat lunak klien milik Anda adalah klien HTTP dan memberikan respons HTML. Ini dapat bekerja dengan server HTTP apa pun. Server HTTP yang Anda gunakan untuk layanan Anda kebetulan menggunakan komponen GPL.
Anda memiliki program yang menggunakan komponen berlisensi GPL. Anda memilih titik sembarang dalam operasi program itu dan memecah program menjadi dua program. Kedua program berkomunikasi melalui jaringan yang benar-benar berlebihan. Anda menempatkan semua komponen berlisensi GPL dalam program pertama dan lisensi di bawah GPL, dan Anda melisensikan program lain di bawah lisensi yang tidak kompatibel dengan GPL.
Kasus pertama jelas oke. Kasus kedua jelas tidak oke. Anda belum memberikan banyak informasi tentang kasus khusus Anda, dan bahkan jika Anda melakukannya, hanya putusan pengadilan yang dapat memutuskan secara pasti apakah Anda benar.
GPL FAQ mengatakan hal ini tentang program yang dapat dioperasikan dan dilisensikan secara terpisah :
Namun, dalam banyak kasus Anda dapat mendistribusikan perangkat lunak yang dilindungi GPL di samping sistem milik Anda. Untuk melakukan hal ini secara sah, Anda harus memastikan bahwa program yang bebas dan tidak bebas berkomunikasi dengan tangan terbuka , bahwa mereka tidak digabungkan dengan cara yang akan menjadikan mereka secara efektif satu program.
Perbedaan antara ini dan "menggabungkan" perangkat lunak yang dicakup GPL sebagian adalah masalah substansi dan sebagian bentuk. Bagian substantifnya adalah ini: jika dua program digabungkan sehingga mereka menjadi dua bagian dari satu program secara efektif, maka Anda tidak dapat memperlakukannya sebagai dua program yang terpisah. Jadi GPL harus mencakup semuanya.
Anda harus memutuskan apakah menurut Anda klien Anda adalah server yang memenuhi standar "dua bagian dari program yang sama" (dan karena itu masing-masing harus dilisensikan di bawah GPL) atau tidak. FAQ GPL memberikan penjelasan lebih lanjut tentang topik ini pada pertanyaan lain :
Di mana garis antara dua program yang terpisah, dan satu program dengan dua bagian? Ini adalah pertanyaan hukum, yang akhirnya akan diputuskan oleh hakim. Kami percaya bahwa kriteria yang tepat tergantung pada mekanisme komunikasi (eksekutif, pipa, rpc, pemanggilan fungsi dalam ruang alamat bersama, dll.) Dan semantik komunikasi (jenis informasi apa yang dipertukarkan).
...
Sebaliknya, pipa, soket dan argumen baris perintah adalah mekanisme komunikasi yang biasanya digunakan antara dua program yang terpisah. Jadi ketika mereka digunakan untuk komunikasi, modul biasanya adalah program yang terpisah. Tetapi jika semantik komunikasi cukup intim, bertukar struktur data internal yang kompleks, itu juga bisa menjadi dasar untuk mempertimbangkan dua bagian sebagai digabungkan ke dalam program yang lebih besar .
Jadi, komunikasi jaringan tentu saja lulus tes "mekanisme komunikasi" tetapi tidak jelas di mana pasangan klien / server Anda jatuh pada tes "semantik komunikasi".