Această pagină a fost actualizată ultima dată în Iulie 2018 .

Deci vrei să începi să lucrezi la I2P? Grozav! Iată un ghid rapid pentru a începe la a contribui la site-ul sau software-ul, la realizarea sau crearea de traduceri.

Nu ești destul de pregătit pentru codificare? Încercați să vă implicați mai întâi.

Studiu de bază

Dezvoltarea de bază pe routerul I2P sau aplicațiile încorporate utilizează Java ca limbaj principal de dezvoltare. Dacă nu aveți experiență cu Java, puteți avea întotdeauna o privire asupra gândirii în Java.

Studiați modul de introducere, celelalte documente „cum”, introducerea tehnologică, și documente asociate. Acestea vă vor oferi o imagine de ansamblu bună despre modul în care I2P este structurat și despre ce lucruri diferite face.

Obținerea codului I2P

Pentru dezvoltare pe routerul I2P sau aplicațiile încorporate, Există două modalități de a obține codul sursă:

Calea ușoară: Git

  • Instalați Git.
  • Obțineți codul din oglinda GitHub:
    git clone https://github.com/i2p/i2p.i2p.git

Comentarii

Depozitul Git este în prezent o oglindă numai în citire. Dacă doriți să-l utilizați pentru dezvoltare, va trebui să trimiteți corecții la issue tracker. Putem accepta solicitările de tragere GitHub, dar acestea trebuie procesate manual, transformându-le în patch-uri oricum.

Modul corect: Monoton

  • Instalați monoton. Monoton este un sistem de control al versiunii. O folosim pentru că ne permite să urmărim cine face ceea ce se schimbă la codul sursă (și pentru o mulțime de lucruri complicate, dar „urmărirea modificărilor” este ideea de bază).
  • Treceți peste tutorialul monoton, pentru a vă asigura că înțelegeți conceptele.
  • Dacă doriți să rămâneți anonimi, trebuie să faceți un pas suplimentar pentru a configura o conexiune la un server monoton prin I2P:

    Activează tunelul client i2ptunnel de pe portul 8998 îndreptat către mtn.i2p-projekt.i2p.

  • Alegeți un director în care doriți să puneți toate fișierele dvs. I2P și creați o bază de date monotonă: mtn -d i2p.mtn db init
  • Definiți lista de încredere creând ~/.monotone/monotonerc (sau _MTN/monotonerc în spațiul de lucru i2p.i2p) cu următorul conținut:
    -- This implements a list of trusted signers.
    -- It is used on checkout and update.
    -- It is not used for repo sync/push/pull.
    -- If you do not include this function in ~/.monotone/monotonerc, the
    -- default is to trust everybody, which is probably a bad thing
    -- in an anonymous network.
    -- Update the list below to reflect the signers YOU trust.
    --
    -- ref: http://www.monotone.ca/docs/Trust-Evaluation-Hooks.html
    -- Modified to use key identities instead of key names, since
    -- monotone allows duplicate key names, so any key-name-based
    -- trust system is insecure.
    
    --
    --  Modified from intersection() to use key identities instead of key names, since
    --  monotone allows duplicate key names.
    --
    --  a: table of ID structures (see above)
    --  b: table of hex IDs
    --
    function keyintersection(a,b)
        local s={}
        local t={}
        for k,v in pairs(a) do s[v.id] = 1 end
        for k,v in pairs(b) do if s[v] ~= nil then table.insert(t,v) end end
        return t
    end
    
    --
    -- from mtn source project.hh and lua_hooks.cc:
    -- signers is a table of integers (starting with 1) to the following ID structure:
    -- struct ID
    -- {
    --   id: (key_id in key_identity_info) hex of revision id hash;
    --   given_name: (given_name in key_identity_info) // name given when creating the key
    --   name: (official_name in key_identity_info) // name returned by hooks or (once implented) policy
    -- };
    -- id: hex of revision id hash;
    -- name: cert_name
    -- val: cert_value
    --
    function get_revision_cert_trust(signers, id, name, val)
       local trusted_signers = {
    		"5bc185cfd680eb512fdb9626b9fb4298e136215e",	--  [email protected]
    		"f6706ac205e6b5d7a7e3ea4244ab0ef497f0a099",	--  [email protected]
    		"690f278ff6c6157cbaf23b0d602b6d6dcf368313",	--  [email protected]
    		"eb4ac08d5ddbb2bd73889f86c1211424025a6f07",	--  [email protected]
    		"aae785027c240ebbb0a883fd8ebcf8d6ecee4104",	--  [email protected]
    		"86478595288d1b96b58f0c8cd8a8971bc430f8fd",	--  [email protected]
    		-- completed dev agreement 2013-07 but never checked in anything
    		--"5f75b8f0769770edc3267c21ddc9a00ddae31394",	--  [email protected]
    		"4ebaace9973913416af92ee8d0fb93d64753df4c",	--  [email protected]
    		"7e498ae94c9c322404adfc61b16bed388095906b",	--  [email protected]
    		"6c728b0ffed3c2bf7fb0f3c583b30f966d9bacd5",	--  [email protected]
    		"0e4e7ebebafbdf4cdacc45a47ba155b1215d8e8b",	--  [email protected]
    		"f332b3d3b11b2efdae220cea75b9d5ba9ec3b52d",	--  [email protected]
    		"d681db14fd98da1efd6f8ceb2be6b91d784bdf5c",	--  [email protected]
    		"e246444b4fe69ba599e13403c4ab931066de902f",	--  [email protected]
    		"a61146ee69ddb9fcf3b82b19a62b8114b60d367e",	--  [email protected]
    		"4844b1fd45f5a68744fa28d2f3e3b61a3cf83b95",	--  [email protected]
    		"6b2acfc9fe2f69b796631a514660fd7bdd237e2d",	--  [email protected]
    		"c9b970f5e8917eada663d4c6b22096617021c95c",	--  [email protected]
    		"3be64909d6ab7c3d7afe16f20f24e672708b576b",	--  [email protected]
    		"2977a6f4e11819a3f928783175caadc0071fc4de",	--  [email protected]
    		"de9d196e8057e1629178edbfa1ed754c648d7340",	--  [email protected]
    		"2a0bba98558d7a9d7e4b1bd807789601252c0024",	--  [email protected]
    		"6ade4b7a9a6425194f482ab351950e4230dbbc85",	--  [email protected]
    		"bc74b49fd8a20513b2745a3d13414b7e9818dd18",	--  [email protected]
    		"3fb8d1ee1e82981a8076ddbcbf4d18f372b8bba7",	--  [email protected]
    		"e3815f0c985663182534fbd7d6a2bf93204a0bd0",	--  [email protected]
    		"2ef1ae1e73a30e1afc0b4a7af89b4380b3dd46b7",	--  [email protected]
    		"1092773c40f5813b9179d52a8ab7b499b9554da3",	--  [email protected]
    		"01265f0c817b24548478341fb75e672720a78b21",	--  [email protected]
    		"38fe2aa37e1eb9a300a2061ef153265c48031c6b",	--  [email protected]
    		"a0eb78d437efad120dd9edcd776a327ec2c2adde",	--  [email protected]
    		"2158706490e62a17c8140b6e9eabca965b681bc7",	--  [email protected]
    		"56810cd6434ab33593260e188b32bb83e4e9a139",	--  [email protected]
    		"896e399990704373125f782ae2ee19b6611ac612"	--  [email protected]
       }
       local t = keyintersection(signers, trusted_signers)
       if t == nil then return false end
       if #t>= 1 then return true end
       return false
    end
    
  • Copiați și lipiți cheile de angajare ale dezvoltatorului într-un nou fișier (de exemplu, keys.txt) din același director   că i2p.mtn este. Importați cheile în baza de date cu
    mtn -d i2p.mtn read < keys.txt
  • Trageți sursele I2P la mașina dvs. Acest lucru poate dura mult, mai ales dacă faceți acest lucru peste I2P!
    • În mod anonim: mtn -d i2p.mtn -k "" pull "mtn://127.0.0.1:8998?i2p.i2p"
    • Non-anonim: mtn -d i2p.mtn -k "" pull "mtn://mtn.i2p-projekt.de?i2p.i2p"

  • Toate sursele sunt acum prezente pe mașina dvs., în fișierul bazei de date. Pentru a le face disponibile într-un director, trebuie să le verificați: mtn -d i2p.mtn co --branch=i2p.i2p

    Comanda de mai sus creează un director i2p.i2p, care conține toate sursele I2P.

Comentarii

Pentru a descărca fișierele site-ului web în loc de fișierele sursă I2P, utilizați „i2p.www” în loc de „i2p.i2p”.

Tragerea inițială poate dura câteva ore folosind tunelul. Dacă nu reușește după o tragere parțială, pur și simplu reporniți-l, va începe acolo unde a plecat. Dacă vă grăbiți, utilizați accesul non-anonim.

O listă completă de ramuri, inclusiv i2p.i2p și i2p.www poate fi găsită pe viewmtn.

O lungă explicație despre utilizarea monotonului este disponibilă pe pagina monotonului.

Building I2P

Pentru a compila codul, aveți nevoie de Sun Java Development Kit 6 sau superior, sau JDK echivalent (Sun JDK 6 recomandat puternic) și Apache ant versiunea 1.7.0 sau mai mare. Dacă mergeți lucrați la codul principal I2P, puteți merge în directorul i2p.i2p și puteți rula 'ant' pentru a vedea opțiunile de construire.

Pentru a construi sau a lucra la traduceri de consolă, aveți nevoie instrumentele xgettext, msgfmt și msgmerge de la Pachetul GNU gettext.

Pentru dezvoltarea aplicațiilor noi, consultați ghidul de dezvoltare a aplicației.

Idei de dezvoltare

Vezi listele TODO ale lui zzz, lista TODO a acestui site web sau Trac pentru idei.

Punerea la dispoziție a rezultatelor

Consultați partea de jos a paginii de licențe pentru să comiți cerințe de privilegiu. Aveți nevoie de acestea pentru a introduce codul în i2p.i2p (nu este necesar pentru site-ul web!).

Versiune scurtă a modului de generare și utilizare a cheilor dacă intenționați să comiteți:

  • mtn genkey [email protected] (utilizați o parolă goală)
  • mtn genkey [email protected] (introduceți o parolă)
  • mtn pubkey [email protected] (trimiteți acest lucru către un operator repo mtn pentru a obține privilegii push)
  • mtn pubkey [email protected] (trimiteți-l unui manager de versiuni pentru a obține privilegii de angajare - care nu sunt necesare pentru site-ul web)
  • mtn ci -k [email protected] (verificați cu această cheie)
  • mtn sync -k [email protected] (apasa cu aceasta tasta)
Versiune lungă: vezi pagina monoton.

Cunoaște-ne!

Dezvoltatorii se agăță de IRC. Pot fi accesate în rețeaua Freenode, OFTC și în rețelele interne I2P. Locul obișnuit de a arăta este # i2p-dev. Intră pe canal și spune salut! De asemenea, avem ghiduri suplimentare pentru dezvoltatorii obișnuiți.

Traduceri

Traducători ai consolei de site-uri și router: consultați Ghidul traducătorului nou pentru următorii pași.

Unelte

I2P este un software open source care este dezvoltat în cea mai mare parte folosind sursa deschisă toolkit-uri. Proiectul I2P a achiziționat recent o licență pentru Java YourKit Profiler. Proiectele open source sunt eligibile pentru a primi o licență gratuită furnizată că YourKit este trimis pe site-ul web al proiectului. Vă rugăm să luați legătura dacă sunt interesați să profileze baza de coduri I2P.

YourKit sprijină cu drag amănuntele proiecte open source cu ajutorul profilului său Java complet. YourKit, LLC este creatorul de instrumente inovatoare și inteligente pentru profilare Aplicații Java și .NET Uitați-vă la principalele produse software ale YourKit: Profiler Java YourKit și Profiler YourKit .NET