Proposta di una nuova funzionalità¶
Siamo sempre aperti a suggerimenti e idee per nuove funzionalità o documentazione per {{ nome_formale }}. Ma come si fa a sottoporre la propria idea?
Prima di iniziare¶
Abbiamo già un elenco molto lungo di funzionalità che vorremmo implementare e risorse molto limitate. Se hai un'idea che pensi possa migliorare {{ nome_formale }}, ci piacerebbe sentirla. Se un numero sufficiente di persone richiede la stessa cosa, il team centrale potrebbe implementare l'idea. Tuttavia, di per sé, è improbabile che la richiesta di una funzionalità venga implementata nel prossimo futuro.
BeeWare è una comunità Open Source. Il modo più efficace per garantire l'implementazione di una funzionalità è implementarla da soli. Faremo tutto il possibile per aiutare i collaboratori a implementare le funzionalità che desiderano vedere aggiunte. È improbabile che le richieste al team centrale di implementare una funzionalità per voi, gratuitamente, siano ben accolte.
Se non siete in grado di implementare una funzionalità da soli, l'altro modo per accelerare lo sviluppo della vostra funzionalità è pagare qualcuno che la implementi per voi. Se desiderate discutere di pagare per avere la priorità dello sviluppo di una specifica funzionalità, vi preghiamo di contattare il team BeeWare.
Suggerimento di nuove funzionalità¶
La cosa più ovvia da proporre è una nuova API o funzionalità. Se si ha un caso d'uso che {{ nome_formale }} non supporta attualmente, o c'è una funzionalità della piattaforma nativa che {{ nome_formale }} non può attualmente utilizzare, si potrebbe proporre una modifica per colmare questa lacuna.
Quando si propone una nuova funzionalità, bisogna tenere presente che la suite di strumenti BeeWare supporta più piattaforme. Ciò significa che ogni nuova funzionalità deve:
- Essere adatto e implementabile su tutte le piattaforme (ad esempio, ogni toolkit GUI ha il concetto di "pulsante"); oppure
- essere adatto a piattaforme dello stesso "tipo" e appropriato da ignorare su altre piattaforme (ad esempio, tutti i telefoni cellulari hanno un accelerometro; non molti desktop lo hanno, e quindi ha senso che esista un'API per l'accelerometro per iOS e Android, ma non per le piattaforme desktop o web); oppure
- Consentire l'accesso a una funzione interna della piattaforma senza alterare l'API pubblica (ad esempio, non è possibile aggiungere una funzione chiaramente specifica di Android, ma si può rendere più facile per gli utenti finali l'accesso a una funzione specifica di Android dal proprio codice).
Questo non significa che dobbiate essere responsabili dell'implementazione di una funzione su ogni piattaforma. Se non avete accesso all'hardware Apple, non è ragionevole aspettarsi che forniate un'implementazione macOS o iOS di una funzione. Tuttavia, come parte del processo di progettazione, dobbiamo stabilire che sarebbe possibile implementare una funzionalità nel modo descritto.
Suggerimento di nuova documentazione¶
Un'altra cosa che si potrebbe suggerire è un miglioramento della documentazione. Se si ha un'idea per migliorare la documentazione di {{ nome_formale }}, le considerazioni includono:
- Il vostro suggerimento si sovrappone alla documentazione esistente? State proponendo una nuova guida o un'aggiunta a una guida esistente?
- Come si inserisce nel resto dell'ecosistema BeeWare? Questo progetto è il posto giusto per documentare l'idea? O dovremmo documentare una funzionalità in un altro progetto e collegarci a quella documentazione?
- C'è un concetto di alto livello che deve essere spiegato prima che le istruzioni specifiche abbiano senso?
- L'argomento ha senso che lo spieghiamo noi, o qualcun altro l'ha già trattato da qualche parte a cui possiamo fare riferimento?
Se non siete sicuri di tutto questo, non preoccupatevi! Inviate la vostra idea e fateci sapere nella discussione iniziale quali sono le vostre incertezze, e noi potremo aiutarvi a dare forma alle vostre idee in una forma che si adatti alla documentazione di BeeWare.
Contribuire a una proposta di funzionalità¶
Proposta di una nuova funzionalità
Hai un'idea su un miglioramento per {{ nome_formale }} - come si fa a sottoporre l'idea alla vostra attenzione?
Fate la vostra ricerca¶
Il primo passo consiste nel cercare nell'issue tracker {{ nome_formale }} i problemi di funzionalità (problemi etichettati come "miglioramento"), documentation issues (problemi con tag "documentation"), o Discussioni per vedere se l'idea è già stata proposta in precedenza. In caso affermativo, se avete un nuovo contesto o nuove idee da aggiungere, inseritele nella discussione esistente. Se si desidera assistenza per la ricerca, è possibile chiedere nel canale #dev su BeeWare Discord. Potremmo essere in grado di indirizzarvi verso le discussioni esistenti, di fornirvi un contesto di cui potreste non essere a conoscenza o di collegare la vostra idea a un'altra che potrebbe non sembrare immediatamente collegata.
Discutere l'idea¶
Se non si trovano riferimenti esistenti alla propria idea, avviare una Discussione. Fornire una descrizione di alto livello dello scopo e del caso d'uso della propria idea. Includere qualsiasi idea sull'aspetto della funzionalità, se implementata, come la forma generale di un'API, l'aspetto visivo di una funzionalità o il documento che verrebbe aggiunto. Se applicabile, è necessario includere anche qualsiasi ricerca effettuata su come la vostra idea si manifesterebbe su piattaforme diverse.
Una volta aperto il thread di discussione, il team BeeWare e il resto della comunità risponderanno. Il team centrale cercherà di fornire almeno un'impressione iniziale della vostra idea entro due giorni lavorativi. Se un'idea è particolarmente complessa, un'analisi più dettagliata potrebbe richiedere fino a una settimana. Eventi come vacanze e conferenze potrebbero allungare leggermente i tempi.
Questa è l'occasione per partecipare a una conversazione sulla vostra idea. Potremmo chiedervi ulteriori dettagli o un contesto. Anche altri membri della comunità possono partecipare alla discussione, fornendo altre prospettive, suggerimenti o controproposte. L'esito della discussione determinerà i passi successivi.
È importante capire che non tutte le idee saranno accettate. Il motivo per cui questo processo inizia con una proposta è che si evita di fare tutto il lavoro per poi scoprire che la modifica non sarà accettata.
Questo non significa che non fosse una buona idea! Ci possono essere ragioni tecniche per cui non può essere implementata. Ad esempio, potremmo rifiutare un'idea se:
- Sarebbe difficile o impossibile da implementare in modo affidabile su tutte le piattaforme supportate; oppure
- Sarebbe difficile da mantenere o la manutenzione richiederebbe l'accesso a tecnologie o software non ampiamente disponibili; oppure
- Serve un pubblico di nicchia, ma impone un notevole sovraccarico agli altri utenti.
Se decidiamo che la vostra idea non è adatta, non significa necessariamente che dobbiate rinunciarvi. Se da un lato possiamo rifiutare un'idea specifica, dall'altro potremmo essere molto più disponibili ad aggiungere un'interfaccia per i plugin o altri punti di estensione che permettano di mantenere la stessa funzionalità come libreria esterna. In questo modo si può avere la funzione, ma senza che i problemi specifici di manutenzione o le limitazioni della funzione diventino un vincolo per il progetto stesso.
Convertite in una richiesta formale di funzionalità¶
Una volta che la discussione ha raggiunto un consenso sulla forma di una caratteristica, si può creare un nuovo [issue di richiesta di caratteristica] (https://github.com/beeware/{{ nome_progetto }}/issues/new/choose), nell'issue tracker {{ nome_formale }}, che riassume la discussione, collegandosi alla discussione per il contesto.
Non è necessario implementare da soli la propria proposta di funzionalità; è possibile aprire un problema con i dettagli di ciò che si sta proponendo. Tuttavia, la semplice pubblicazione del problema non significa che verrà implementato per voi. Dovrete aspettare che la proposta venga presa in considerazione da qualcun altro interessato alla stessa funzionalità, che si tratti di un altro membro della comunità o del team centrale; tuttavia non è garantito che ciò accada. Se si desidera un'implementazione garantita, è necessario implementarla da soli o pagare qualcun altro per farlo.