2009-11-09 17 views
35

Nota: Non sono completamente sicuro che questa domanda appartenga veramente a StackOverflow, quindi non esitare a votare per la chiusura se non ci credi.Suggerimenti per un progetto di livello finale open source

In Spagna dobbiamo intraprendere un progetto definitivo al termine della laurea in informatica. Il progetto non deve essere banale e può riguardare qualsiasi campo informatico dall'ingegneria del software all'architettura del computer, includere il codice o meno o altro.

Il fatto è che sono abbastanza bravo a risolvere i problemi ma sono completamente pessimo a trovarli, cioè se qualcuno mi dice "risolvi questo problema", ma non riesco a immaginare un problema da solo.

Io lavoro facendo software proprietario utilizzando strumenti di sviluppo proprietari con scarso utilizzo di componenti open source quindi ho pensato "ok, cosa sarebbe utile alla comunità open source che non è già lì" ... e io semplicemente non ho idea.

Qualche suggerimento? Tutto sarebbe benvenuto. Anche se preferisco C# o php non sarò riluttante a imparare qualcosa di nuovo, se devo.

causa il commento, l'università è: Facultad de Informática. Universidad Politécnica de Madrid.

Grazie a tutti per le risposte. Anche se non sono completamente deciso (non voglio precipitarmi in nessun progetto) mi è davvero piaciuta l'idea del progetto ROBOCODE, anche se non sarebbe stato molto utile in modo tradizionale, sembra un LOOOT divertente. Apprezzo comunque tutti i suggerimenti.

+5

Nota: poco prima che qualcuno lo suggerisse NON FARE questo wiki della comunità. Le persone sono più riluttanti a rispondere se non riescono a ottenere la reputazione, non mi interessa affatto la reputazione per questa domanda, quindi vota e chiudi se non ti piace o non voti tutti, ma voglio che le persone che rispondono per guadagnare la reputazione –

+2

Sei sicuro che la tua università ti permetterà di pubblicare il tuo lavoro come open source? Alcune università amano rivendicare il lavoro svolto dagli studenti mentre stanno studiando lì. – adrianbanks

+0

Completamente, in realtà incoraggiano gli studenti a prendere progetti open source e i diversi dipartimenti hanno una storia di progetti open source stessi. –

risposta

5

perché non progettare e implementare un algoritmo di intelligenza artificiale per Robocode (ricerca di Google). Potresti usare reti neurali, clustering, ottimizzazione degli sciami di particelle ... o altri algoritmi più avanzati. molti di questi sono davvero facili ed efficienti, solo il nome sembra essere preso da Star Trek.

altro suggerimento, che è di moda in questo momento, sarebbe quello di utilizzare mashup: prendere più servizi web e combinarli facendo qualcosa di bello. come http://globelogger.com/2008/05/timetube-awesom.html, questo è quello che sto parlando di

+0

Non sono sicuro che andrò con questo, ma definitivamente venduto !! Mi ricordava così tanto delle vecchie guerre di base. –

+0

Sembra fantastico. –

+0

purtroppo il collegamento è rotto –

8

Aiutare a trasferire Silverlight 3 su Mono? Sono sicuro che potresti trovare una caratteristica particolare da implementare come progetto autonomo. Sarebbe un contributo molto utile per la comunità open source e implicherebbe lo scavare in profondità nel modo in cui il framework Silverlight è stato progettato.

+1

Bello, non avevo mai pensato di eseguire il porting di QUALSIASI parte del framework .NET ... come ho detto ... completamente pessimo ... –

4

Probabilmente vorrai fare qualcosa che è già stato fatto prima, così puoi avere un'idea dell'ottica. Non devi fare qualcosa che sarà riutilizzato/open source poiché questo è solo un progetto finale.

  • creare un sistema di elaborazione distribuita come seti linea
  • Fare un gioco.
  • Crea un sito di social networking.
  • Creare un luogo fresco visualization per la scena demo
+0

Non proprio, mi piacerebbe contribuire se posso alla comunità open source, facendo qualcosa di utile che verrà utilizzato (a volte se è abbastanza buono) –

+1

+1 comunque ... Mi piace la scena demo thingy ... non che utile ma ... cooooool :) –

+0

+1 Il SETI -come il sistema di elaborazione distribuito sembra interessante e avvincente. –

2

+1 da me. Penso che questa sia una grande domanda.

Non ho una risposta specifica per te, ma perché non indirizzare la tua attenzione alla ricerca di qualcosa che potrebbe essere utile per enti di beneficenza o paesi in via di sviluppo?

Le organizzazioni di beneficenza stanno diventando sempre più dipendenti dalla tecnologia per raccogliere fondi, gestire la logistica, ecc. Inoltre, in Africa i telefoni cellulari sono utilizzati molto per fornire semplici prodotti finanziari che consentono alle persone che non hanno accesso a servizi finanziari più tradizionali di acquistare e vendere cose.

Se avete il tempo e la voglia, di fare qualcosa che i benefici realmente il mondo così come si ottenendo un grande grado sarebbe molto soddisfacente ..

Daniel.

2

Che dire di una soluzione mobile distribuita open-source? Ora che i dispositivi mobili hanno guadagnato un po 'di potenza di elaborazione, sarebbe bello se si legasse questo potere con l'idea del sistema distribuito SETI di Byron. Potrebbe essere utilizzato anche per scopi pratici, come la raccolta di dati GPS in una grossa griglia per individuare ed essere in grado di evitare strade e incroci affollati.

18

Perché non dare un'occhiata attraverso il Google Summer of Code website per i progetti precedenti che non sono stati intrapresi. Questi sono progettati per un paio di mesi per finire, e sono con progetti Open Source, e sono cose che qualcun altro ha deciso sarebbe utile.

7

Vorrei raccomandare l'adesione a un progetto open source esistente. Iniziare da solo potrebbe essere divertente, ma probabilmente avrà poca utilità per la comunità open source. È improbabile che le persone partecipino a un progetto che inizi a scuola perché è probabile che lo abbandonerai una volta laureato. Aiutare con un progetto esistente ti permetterà di fare una differenza a lungo termine senza un impegno a lungo termine.

Ci sono molti progetti open source adatti alle tue competenze PHP: Drupal, Wordpress o uno qualsiasi dei progetti Sunlight Labs. Personalmente, mi piacciono i Sunlight Labs perché hanno uno scopo che va oltre la semplice creazione di software (per rendere i governi più aperti e trasparenti) e l'organizzazione sembra essere sana e in crescita. Indipendentemente dal progetto scelto, non puoi sbagliare contribuendo a un progetto open source attivo.

3

Partecipa ad un progetto open-source. Ad esempio, Qooxdoo (http://qooxdoo.org) ha una comunità molto buona e ha bisogno di abili programmatori. È un buon framework per applicazioni web. Oppure puoi contribuire ad alcuni progetti davvero grandi come Ruby on Rails.

Se ti piace il livello basso (come vicino all'hardware) potresti lavorare su Gnu Compilers Collection.

Se sei veramente bravo negli algoritmi, potresti sviluppare soluzioni a molti problemi di programmazione parallela che esistono al giorno d'oggi.

Questa è una grande domanda, e se mi dici che tipo di programmazione preferisci, elaborerò volentieri.

Che diamine, vivo a Madrid, così potremmo incontrarci in qualche bar e discuterne.

/Gleb

1

Ottenere una specifica per un linguaggio storico (ad esempio Algol60, Atlas AutoCode, Corallo 66) e realizzare un compilatore completo per per mezzo di un traduttore a C; in particolare sentitevi liberi di usare alcune estensioni GCC che rendono molto più facile tradurre quei linguaggi a blocchi con procedure annidate, dichiarazioni dinamiche di array, ecc. I tentativi precedenti sono stati piuttosto incerti a causa della difficoltà nel mappare questi linguaggi a standard C.

+0

E come sarebbe utile? –

+0

Forse non "utile" nel senso pratico di usarlo per produrre lavoro, ma certamente "prezioso" come un modo per mantenere viva una parte della storia della nostra professione. Ma posso vedere che questo non è il genere di cose che stai cercando, ho molti altri suggerimenti che posso offrire. –

+0

Non esitare, fallo! Ci sono molti suggerimenti qui ma sto ancora considerando tutti loro. So solo che passerò circa un anno con questo progetto, quindi mi piacerebbe provare a fare qualcosa di utile, qualcosa che le persone useranno (si spera) in modo che non finiscano come un semplice "altro progetto accademico senza reale usa " –

2
+0

Questo è buono ma troppo complesso, questo è un progetto personale e sembra che ci vorranno un paio di anni per una squadra completa. –

+0

In realtà ho studiato 3D Urban Modelling per 1-2 semestri in un team di 1 uomo come il mio Progetto Senior in Informatica cinque anni fa. L'App è stata scritta in Qt, parte di modellazione in OpenGL e i modelli erano basati su un formato di modello PLY open-source. Posso mandarti il ​​codice e darti un vantaggio :) –

+0

L'app è stata scritta in C++ e la GUI Framework era Qt. Dovrei dirlo. –

4

Il mio suggerimento sarebbe quello di trovare un ente di beneficenza locale che ha bisogno di aiuto di tracciamento loro Finanze/donatori/etc. Lavora con loro per identificare i loro bisogni e sviluppare un'applicazione per aiutarli a risolvere il loro problema. Ci sono due vantaggi che vedo a questo. Innanzitutto, acquisisci esperienza lavorando con clienti reali e le loro esigenze.Secondo, se ci riesci, hai aiutato alcune persone che probabilmente non hanno le risorse per fare ciò che hanno bisogno in altro modo.

4

Refactor Python Tkinter GUI per rimuovere la sua dipendenza da TCL. Ciò comporterebbe la biforcazione dell'ultima versione di TK, parte dello TCL project, quindi la sostituzione dell'uso interno dello scripting TCL con lo scripting Python. Il progetto sarà scritto in C.

Il risultato finale sarà un modulo GUI TK Python che funziona su Windows, Macintosh e UNIX. Tutta la roba della portabilità è già nel modulo TKinter, quindi non è dove sarà il lavoro. Invece, questo sarà come un intervento chirurgico al cervello, identificando tutti i collegamenti tra TK e TCL in modo che sia possibile refactoring in un'interfaccia più semplice per Python o fare una sostituzione one-to di TCL con Python.

Ciò richiederebbe l'apprendimento di TCL e Python e probabilmente anche la scrittura di alcuni strumenti che consentono di enumerare le interconnessioni tra TCL e TK. Alla fine del progetto avrai anche assorbito molte informazioni sulle interfacce grafiche multipiattaforma anche se solo una delle piattaforme funziona come parte della tua laurea.

L'obiettivo finale di questo è che questa GUI diventi la GUI Python predefinita e che l'interfaccia dello sviluppatore della GUI diventi l'interfaccia predefinita per altri front-end della GUI. Ad esempio uno sviluppatore Jython non può usare questa GUI, ma se si rende l'interfaccia pulita e non specifica per il sistema, allora qualcuno potrebbe scrivere un PythonTK in Java che usa SWING, e un altro gruppo potrebbe scrivere un PythonTK in C# che usi Windows Form.

Sebbene la maggior parte del lavoro riguardi il refactoring del codice TK biforcato, è necessario riflettere attentamente e studiare il modello oggetto esposto al programmatore Python per ridurre al minimo o eliminare aree specifiche del sistema. Questo potrebbe richiedere anche alcuni lavori di refactoring sul codice TK.

3

Avviare un sito Web wiki della comunità solo per dati tabulari: elenco dei paesi (nome, valuta ...), elenco degli alimenti (nome, vitamine, calorie ...), statistiche di inflazione per paese all'anno, ... cosa mai gli utenti creano. Consentire agli utenti di creare query e scaricare il risultato in quale formato desiderano (csv, excel, xml, ...). Successivamente creare un servizio web per consentire ai progetti open source di utilizzare i dati nei propri prodotti.

1

Hai anche un'opzione per essere coinvolto nella Linux Kernel Development Community.

0

Costruisci una solida base per un editor grafico corretto per Linux. Quindi apri la fonte e consentigli di crescere. La scelta attuale è Gimp, che è piuttosto male. Invece di fissarlo o estenderlo, sviluppa un nuovo progetto che ha un nucleo forte ed è estensibile.

2

potresti anche unirti al progetto Robocode e implementare alcune funzionalità non banali ;-) Read this e talk to us.

Problemi correlati