Non sono un avvocato, questa è la mia comprensione della situazione ma non è un consiglio legale. Se vuoi che paghi un avvocato. Sto anche basando questo su GPLv2, i principi sono per lo più gli stessi in GPLv3 ma ci possono essere differenze nei dettagli.
I understand that my source code must be freely available.
Non esattamente, in pratica devi fornire la fonte insieme ai binari [1] o fornire un'offerta scritta valida per almeno 3 anni per fornire la fonte a chiunque su "un mezzo usato abitualmente per lo scambio di software "per" un addebito non superiore al costo di esecuzione fisica della distribuzione di fonti ". Se distribuisci la fonte insieme ai binari non è necessario renderla direttamente disponibile al pubblico (ma non c'è nulla che impedisca a chiunque la fornisca di renderla disponibile al pubblico)
If my source code is freely available can I legally charge a fee for using the version that I publish?
La GPL in generale non vieta di addebitare denaro per roba. Per quanto posso dire, non ci sarebbe nulla che ti impediva di implementare in un'applicazione GPL un blocco che richiedeva, ad esempio, codici di licenza basati su data e ID macchina. Non ci sarebbe nemmeno nulla che impedisca a qualcuno di ottenere il codice sorgente e di estrarre il codice di blocco.
My situation: I'm using data from a program in my program and have an In-App purchase for access to all the data.
I dati che possono essere caricati da un programma (ma non sono effettivamente incorporati nei file binari del programma) non sono considerati parte del programma. Quindi è perfettamente utile usare dati non liberi con un'applicazione GPL. Non penserei che rendere i dati disponibili tramite un acquisto in-app cambierebbe qualcosa a riguardo.
Se puoi controllare la distribuzione dei dati dipende dal tipo di dati, dalle leggi locali e dal fatto che tu possieda effettivamente i dati in primo luogo. In alcuni paesi alcuni tipi di dati non sono eleggibili per copyright e protezione simile.
The source code is publicly available and is mentioned in the program.
Questo potrebbe non essere sufficiente (anche se in pratica se le persone riescono a ottenere il codice sorgente in modo ragionevole è improbabile che siano troppo schizzinosi nei dettagli).
[1] "Se la distribuzione di codice eseguibile o oggetto viene effettuata offrendo l'accesso alla copia da un luogo designato, l'offerta di accesso equivalente per copiare il codice sorgente dallo stesso posto conta come la distribuzione di il codice sorgente, anche se terze parti non sono obbligate a copiare la sorgente insieme al codice dell'oggetto. "