Ninja IDE: Un IDE Pensat per Python

Per fi algú es va dignar a escriure un IDE com la gent per Python que qualsevol ciutadà del carrer pugui usar sense problemes en Linux. Sí, hi ha diversos IDEs per programar en diferents llenguatges, fins i tot Python, però aquest té alguns petits trucs sota la màniga...

Com va començar NINJA-IDE?

NINJA-IDE va néixer per uns mails enviats a PyAr, la temàtica sol escoltar-se amb força freqüència: «Quin bon IDE per Python puc utilitzar?», «Per què no hi ha un IDE per Python que tingui una o altra funció?", I les respostes a aquests mails sempre acaben sent mes o menys les mateixes, ja que els IDEs actuals que trobem disponibles, en la seva gran majoria, no estaven dissenyats per Python, sinó que brindaven l'opció d'incorporar-mitjançant algun Plugin i d'aquesta manera se solia estar utilitzant IDEs molt pesats dissenyats per a altres fins, on el suport per Python en realitat era mínim, i aquells que si eren per a Python acabaven sent molt orientats a un Framework específic o no eren Lliures. Llavors, motivats pel desafiament que representava, i per idees interessants que es van plantejar a la llista de correu, vam decidir encarar aquest projecte enfocant-nos en «Quines característiques hauria de tenir un bon IDE per a un programador Python».

Amb això en ment vam començar el desenvolupament de NINJA-IDE, el nom és un derivat de l'acrònim recursiu: Ninja Is Not Just Another IDE. L'IDE té amb prou feines poc més de dos mesos de desenvolupament, però gràcies a les ganes i les hores de programació que li estem dedicant, ja podem comptar amb un IDE amb moltes funcionalitats implementades, fins al punt de poder continuar amb el desenvolupament de NINJA- IDE utilitzant NINJA-IDE, la qual cosa al seu torn ens ajuda per trobar bugs i millorar la usabilitat i practicitat de l'aplicació, a través de l'experiència i ús continu de la mateixa.

El projecte està desenvolupat sota llicència lliure GPL i pot aconseguir-se el codi a través de:

Algunes de les característiques actuals de l'IDE són:

  • Funcionalitats típiques de qualsevol IDE per al maneig d'arxius, d'Tabs, indentació automàtica, Zoom a Editor, etc.
  • A l'estar escrit en Python i utilitzar PyQt, és multiplataforma i va ser provat en sistemes Linux, MAC OS X i Windows.
  • Ressaltat de sintaxi per a un gran varietat de llenguatges (si bé aquesta centrat en Python, brinda el ressaltat de sintaxi per a altres llenguatges més per comoditat de l'programador).
  • Possibilitat d'usar una consola Python des del mateix IDE.
  • Permet el maneig de Projectes a l'IDE, reconeixent els mateixos com a Projectes Python ia través de l'IDE crear nous arxius i carpetes, esborrar arxius existents, creació automàtica de fitxers «__init__» amb la informació dins d'aquest mòdul, etc.
  • Permet amagar i reubicar tots els panells de la interfície d'una forma molt simple, permetent que sigui adaptat als gustos de l'usuari.
  • Permet veure més d'un Editor a el mateix temps de forma vertical o horitzontal.
  • Extensible a través de la incorporació de Plugins (els quals poden crear-se utilitzant un Plugin d'NINJA-IDE per a més simplicitat).
  • Gestiona sessions de l'IDE, per recordar que arxius i projectes es trobaven oberts quan es va tancar i els recupera a l'obrir novament una instància de la mateixa.
  • Suport per Auto-completat (sent un acte-completat específic de l'objecte a què es aquesta accedint).
  • Actualitzacions automàtiques.
  • I moltes característiques més!

Sobre desenvolupen NINJA-IDE?

NINJA-IDE començar sent desenvolupat per Santiago Bru i Diego Sarmentero, ia les 2 setmanes d'haver començat el projecte ja estava sent utilitzat per desenvolupar el mateix. Gràcies a la gent de la Llista de PyAr, Blocs, etc. en molt poc temps la difusió de el projecte va fer que poguéssim estar comptant amb Informe de Bugs per part d'Usuaris, Suggeriments a la llista de correu de NINJA i fins amb aportacions de codi per part d'usuaris i col·laboradors, dels quals alguns van passar a formar part de NINJA-IDE amb el paper de committers, com és el cas de: Martín Alderete, Juan Cabral i Matías Herranz.

Aquesta forta col·laboració i participació que estem rebent de la comunitat permet que NINJA-IDE pugui créixer cada dia més, millorant i implementant caracterísitcas que els usuaris necessiten. Al seu torn els comentaris que rebem de persones fent servir NINJA-IDE, ens motiven a seguir treballant dur en aquesta eina, amb la qual volem simplificar encara més el desenvolupament d'aplicacions Python.

Com decididieron quines característiques afegir?

A l'començar el projecte es va pensar en una estructura que li permetés el mateix créixer i incorporar funcionalitats al llarg de el temps, tenint com a guia dos factors principals: l'Editor de Codi i el Maneig de Projectes. L'aplicació va començar a construir-se tenint cura aquests dos pilars fonamentals i permetent que una bona base dels mateixos facilités després la incorporació de noves característiques. El projecte va anar passant per diferents etapes, començant per un bon editor amb ressaltat de sintaxi, seguint amb el maneig d'arxius de projecte, fins afegir característiques de connectors, auto-completat, maneig de sessió, etc. Moltes vegades es veu a Python com a llenguatge que presenta majors dificultats per brindar informació sobre el codi que s'està escrivint al no poder fer inferència dels objectes en el moment de la programació a causa de l'tipus dinàmics, etc.

En alguns casos, és cert que a l'comptar amb un tipat explícit es poden realitzar anàlisis més simples i detallats, però també és cert que actualment hi ha moltes eines i llibreries per Python que ajuden a eliminar aquest tabú que no és possible comptar amb un IDE que brindi real assistència sobre el codi que s'està generant. És per això que NINJA-IDE busca permetre que aquells programadors que utilitzen Python per desenvolupar els seus programes, comptin amb les mateixes facilitats i ajudes que s'obtenen a l'desenvolupar en Java o .NET amb algun dels IDEs més coneguts actualment per a aquests llenguatges. Prenent els resultats i experiències obtingudes de IDEs per a altres llenguatges, es pretén aconseguir un IDE pensat per Python que generi la mateixa satisfacció a l'usar-lo.

Per el suggeriment, decisió i incorporació de noves característiques en NINJA-IDE se sol utilitzar la llista de correu per a aconseguir una decisió col·lectiva per part dels membres que componen el projecte, més que res per saber quin serà l'objectiu d'aquesta característica, en que etapa hauria de incorporar-se i altres detalls. Moltes vegades aquestes característiques són motivades per alguna funcionalitat interessant vista en un altre IDE, una idea d'algun dels membres o suggeriments de el grup d'usuaris. D'aquesta manera, qualsevol persona, tant usuari com a desenvolupador, pot plantejar que coses li agradaria veure implementades en NINJA-IDE i sobre la base de l'arquitectura de el projecte es podrà definir si cal incorporar-la com a part de l'IDE mateix o com un plugin, permetent alhora conèixer que idees s'estan treballant i els que assumeixen el control de les mateixes per mantenir a el grup de treball sincronitzat.

¿Que podem esperar d'NINJA-IDE?

NINJA-IDE neix per cobrir una necessitat que ens semblava important, ia més vèiem que els enfocaments actuals dels IDEs no brindaven la cobertura necessària.

La nostra intenció a l'iniciar aquest projecte va ser crear un entorn centrat en el desenvolupament d'aplicacions Python, però sempre tenint en compte la necessitat de comptar amb una comunitat d'usuaris que ens permetés millorar l'experiència d'ús d'aquesta eina, i actualment ens posa molt contents poder estar comptant amb la comunitat de NINJA-IDE, ja que gràcies a l'experiència i coneixement col·lectiu dels usuaris és possible, que amb els seus suggeriments, el desenvolupament de el projecte pugui avançar més ràpid i es tinguin en compte molts més detalls que d'una altra manera podrien ser passats per alt.

Plans per al Futur

Actualment amb el desenvolupament continu que estem aconseguint, ens trobem propers a l'alliberament de la versió 1.0 de NINJA-IDE, la qual rebrà la denominació de 'Kunai'. En aquesta primera versió seran presents diverses de les característiques esmentades prèviament, les que permetran el desenvolupador comptar amb un IDE robust i pràctic, òbviament com en tot projecte aniran sorgint millores i noves features per implementar. Algunes de les coses que estan pensades per a ser incorporades en NINJA-IDE a futures versions són:

  • Debuguer Gràfic
  • Poder veure la navegabilitat i relació dels mòduls i classes d'un projecte de forma gràfica (basat en BlueJ)
  • Suportar eines de versionat de codi.
  • Permetre l'edició col·laborativa d'un document.
  • Dissenyador d'interfícies Qt i Gtk integrat a l'IDE.
  • Suport per Frameworks com:
  • Django
  • Google App Engine
  • I això tot just està començant!

Quines eines utilitza NINJA-IDE?

L'IDE és desenvolupat utilitzant el framework de PyQt per a tot el maneig de la interfície gràfica i algunes altres funcionalitats, encara que es va intentar abstreure el més possible certes funcions per permetre, de ser necessari el dia de demà, portar NINJA-IDE a altres frameworks com gtk. Qt va permetre comptar amb una interfície sòlida i altament configurable, el que va fer possible poder estendre de cada element necessari per modificar el seu comportament i adequar-lo a les necessitats de l'IDE.

Pel que fa a l'ressaltat de sintaxi, NINJA-IDE fa ús del seu propi sistema de ressaltat de sintaxi utilitzant funcionalitats de Qt, i permetent que aquest sistema de ressaltat sigui fàcilment extensible a NINJA-IDE amb la creació d'un simple arxiu JSON que descrigui a l' llenguatge que es vol incorporar. Aquest mètode ofereix millores en la performance, però per cobrir aquells llenguatges que no siguin reconeguts a través d'aquest sistema es va incorporar l'ús de Pygments per al ressaltat de sintaxi d'una major varietat de llenguatges. Tot i que actualment s'està plantenado la possibilitat que Pygments sigui reemplaçat per GNU Highlight per qüestions de performance.

Per a les funcionalitats d'auto-completat, refactoring, i aquelles que es refereixen a la inferència de el codi, s'utilitza Rope, la qual és una excel·lent llibreria, molt completa per a aquest tipus de situacions. Rope és una eina que permet portar a un IDE per Python característiques de IDEs de llenguatges tipats. Actualment també estem treballant en la incorporació de Revisió de codi utilitzant la llibreria de Pep8, justament per brindar informació sobre l'estat de el codi en relació a les normes de la Pep8.

Extensibilitat de NINJA-IDE

NINJA-IDE compta amb un sistema de connectors bastant complet que permet la integració d'aquests complements com un element nadiu de l'IDE. L'escriptura de Plugins és força senzilla i fins es pot utilitzar un translate NINJA-IDE per a l'escriptura de Plugins per NINJA-IDE (recursiu?). Aquest Plugin «per escriure Plugins» permet decidir amb que parts de l'IDE el nou complement es va a relacionar i crea de forma automàtica l'estructura de el projecte necessari, al costat de l'descriptor de l'extensió per perquè NINJA-IDE el pugui interpretar i la classe base de aquest Plugin amb els mètodes que seran necessari reimplementar, al seu torn, a l'acabar amb l'escriptura de l'extensió per ens permet empaquetar per després poder distribuir-lo. Actualment existeixen 3 Connectors per NINJA-IDE disponibles:

  • pastebin: el qual permet enviar codi a pastebin.com i torna el link resultant per poder compartir aquest codi.
  • PluginProject: l'encarregat de crear projectes Connectors per NINJA-IDE com esmentàvem.
  • ClassCompleter: completa de forma automàtica algunes estructures mentre s'esta escrivint codi Python, com ara: crear el constructor de forma automàtica realitzant la crida a les Classes Pare que siguin necessàries, etc.

Per consultar més informació sobre com desenvolupar un Plugin per NINJA-IDE, es pot visitar la següent Wiki: http://ninja-ide.org/plugins/

Contacte

Descàrrega

Ninja IDE ja es troba disponible en paquets DEB i RPM. La resta de l'món, és clar, sempre pot descarregar el codi font i compilar-lo. 🙂

Gràcies Diego Sarmentero per compartir aquest excel·lent IDE amb tots nosaltres!

Deixa el teu comentari

La seva adreça de correu electrònic no es publicarà. Els camps obligatoris estan marcats amb *

*

*

  1. Responsable de les dades: Miguel Ángel Gatón
  2. Finalitat de les dades: Controlar l'SPAM, gestió de comentaris.
  3. Legitimació: El teu consentiment
  4. Comunicació de les dades: No es comunicaran les dades a tercers excepte per obligació legal.
  5. Emmagatzematge de les dades: Base de dades allotjada en Occentus Networks (UE)
  6. Drets: En qualsevol moment pots limitar, recuperar i esborrar la teva informació.

  1.   Patricio Argüello va dir

    Realment m'agrada mes PyCharm. No obstant això bon treball felicitacions i Salutacions. @patoargu

  2.   Riccardo3284 va dir

    salutacions a la comunitat sóc un aficionat a programar en Python, l'IDE és molt bona però en el meu compu que tinc ubuntu 10.10 i no puc funciona les característiques que veuen a la figura 4, la imatge on es mostren les ordres o les classes o mètodes d'un objecte de python, aquesta característica és molt important a l'almenys per a mi ja que no s'aprèn tots els ordres i alhora ens permetria aprendre més als programadors, però no surt aquesta funcionalitat en el meu ubuntu.

    espero que algú de la comunitat em pugui ajudar, el meu correu és riccardo3284@gmail.com

  3.   Marcoshipe va dir

    llei malament, encara no està implementat el de suport per a git, però ja aquesta com un plugin que tenen pensat implementar 🙂

  4.   Alex va dir

    ^^, jo vaig començar com a membre de l'equip de desenvolupament :), però a la fi no disposava de temps ni de el suficient coneixement i vaig haver de deixar-ho :(. Però m'alegra enormement que a la fi Ninja IDE seguís endavant i amb tan bons resultats.

  5.   Marcoshipe va dir

    ja ho provo 😀
    esperem que aquest bo, però ja que usi python i qt em cau bé xD
    suposo que li passa el drap a eric, i em fixi i soporta git 😀 crec que ens portarem bé

  6.   Daniel va dir

    Em sembla Excel·lent l'únic negatiu és que nosaltres sent de parla hispana creen interfícies en anglès, haurien real hissar en espanyol, IDES en anglès hi ha munts per que no fer una cosa que entenguem tots els que no fem servir l'anglès, pel demas no em queda sinó felicitar-los.

    Salutacions

  7.   Eugeniu tambur va dir

    M'agrada, però de moment és una cosa verda, l'he porbado i em Daja el pc encantat, i reinicia l'explorer de windows constantment i mes errors, però així que ho arreglin i sigui alguna cosa ams estable sense dubte tindrà molt èxit.

  8.   Daniel dcs va dir

    ¡¡¡¡Excel·lent treball «made in» Argentina !!!! ¡¡¡¡Sinceres felicitacions a tot l'equip de desenvolupament !!!!

  9.   Neyer va dir

    Salutacions a tots, molt bo el treball, l'IDE és bastant còmode d'usar, seria molt interessant incloure un editor de Interfícies Gràfiques d'Usuari, a més també resultaria fascinant que et permeti generar la documentació de el projecte (Potser a l'estil dels Javadocs).

    Segueixin Endavant.