QGIS 3.0 - Ինչպես, երբ և ինչ; դա ենթադրում է
Շատերն են մեզ հարցնում.
Երբ QGIS 3.0- ը կթողարկվի:
Անցյալ տարի (2015) ծրագրի թիմը սկսեց ուսումնասիրել, թե երբ եւ ինչպես պետք է ազատ արձակվի QGIS 3.0- ը: Նրանք խոստացել են, ըստ պաշտոնի Անիտա Գրասեր, որ նրանք պատրաստվում էին հստակ փոխանցել իրենց ծրագրերը օգտվողներին և մշակողներին մինչ QGIS 3.0 գործարկելը: Նրանք վերջերս փորձեցին բացահայտել որոշ նկատառումներ QGIS 3.0 թողարկման համար, և գրառման վերջում հնարավորություն կա մեզ ներկայացնել մեր գաղափարները:
Ինչու 3.0?
Սովորաբար հիմնական տարբերակը վերապահվում է այն ժամանակների, երբ ձեր ծրագրաշարի API- ում մեծ փոփոխություն է կատարվում: Այս դադարը աննշան որոշում չէ QGIS նախագծի համար, քանի որ մենք հարյուր հազարավոր օգտվողներ ենք, ովքեր կախված են QGIS- ից ՝ ինչպես մեր սեփական օգտագործման, այնպես էլ երրորդ կողմերին մատուցվող ծառայությունների համար:
Երբեմն API- ը կոտրելու համար անհրաժեշտ է ճարտարապետության բարելավումը հարմարեցված մոտեցումներով, նոր գրադարաններով եւ անցյալում կատարված որոշումների ուղղումներով:
Որոնք են API- ի խախտման հետեւանքները:
Պատճառներից մեկը, թե ինչու է այս խախտում է ԱԴԲ-ի QGIS 3.0 է, որ այն կունենա մեծ ազդեցություն, որը կարող է կոտրել հարյուրավոր զարգացած կոնտակտները, որ այլեւս լինել համատեղելի է նոր API- ի եւ հեղինակներին սրանք պետք է անել վերանայում իր զարգացումների ապահովելու համար համատեղելիությունը նոր API- ի:
Անհրաժեշտ փոփոխությունների ծավալը մեծապես կախված է հետեւյալի վրա.
- API- ի քանի փոփոխություն ազդում է ընթացիկ գործառույթների վրա:
Քանի միավորով plugin հեղինակները API- ի մասեր են օգտագործել, որոնք կփոխվեն: -
Որն է 3.0- ի հիմնական փոփոխությունները:
3.0- ում փոխելու համար կան չորս հիմնական ոլորտներ.
Qt4 թարմացումը դեպի QT5: Սա գրադարանների հիմնական հավաքածուն է, որը QGIS-ը կառուցված է բարձր մակարդակի վրա, մենք խոսում ենք հարթակի CORE-ֆունկցիոնալ մակարդակի մասին: QT-ն նաև տրամադրում է գրադարաններ՝ հիշողության կառավարում, կապի գործառնություններ և գրաֆիկական կառավարում կատարելու համար: Qt4-ը (որի վրա ներկայումս հիմնված է QGIS-ը) ներկայումս չի մշակվում Qt գրադարանի սպասարկողների կողմից և կարող է ֆունկցիոնալ խնդիրներ ունենալ որոշ հարթակների հետ (օրինակ՝ OS X) և նույնիսկ հեշտացնել երկուական տարբերակների կառավարումը (օրինակ՝ Debian Testing և Debian-ի հաջորդ թողարկումը։ «Ձգում»): QGIS-ը QT5-ին հասցնելու գործընթացն արդեն ունի կարևոր առաջընթաց (հիմնականում այն, ինչ արել է Մաթիաս Կունը), որը Մարկո Բեռնասոկչիի հետ միասին ծխում է Android «QField»-ի վրա՝ հիմնված ամբողջությամբ QT5-ի վրա: Այնուամենայնիվ, կան որոշ սահմանափակումներ նոր QT5-ը գործարկելու և գործարկելու համար՝ QGIS-ի վրա դրա ազդեցության պատճառով, մասնավորապես՝ վեբ բրաուզերի վիդջեթների հետ կապված (հիմնականում օգտագործվում են Composer-ում և մի քանի այլ վայրերում՝ QGIS-ում):
Թարմացնել PyQt4- ը PyQt5- ին: Այս փոփոխությունները, որոնք կապված են Python լեզվի Qt է QGIS Python ԱԴԲ-հիմնված. Է առաջանում փոխել QT5 C ++ գրադարան, ակնկալվում է նաեւ փոխանցել է, PyQt5 python գրադարանում, որպեսզի նրանք կարող են օգտվել այն օգուտներին նոր ԱԴԲ-ի Python QT5:
Python 2.7- ը թարմացվում է Python 3- ում. Ներկայումս ամեն ինչ աշխատում է Python 2.7-ի վրա: Python 3-ը python- ի վերջին տարբերակն է և առաջարկվում է այդ նախագծի ղեկավարների կողմից: Python 2-ը մի փոքր անհամատեղելի է Python 3-ի հետ (գրեթե համամասնական է QGIS 2-ի և Qgis 3-ի անհամատեղելիությանը): Շատ ծրագրավորողներ Python Python 3-ը հիմնականում հետընթաց են դարձրել Python 2-ի հետ համատեղելի, բայց հետամնաց համատեղելիությունն այդքան էլ մեծ չէ:
QGIS- ի API- ի բարելավում. Տարբերակների միջև API-ի համատեղելիությունը պահպանելու խնդիրներից մեկն այն է, որ դուք պետք է երկար ժամանակ ապրեք ձեր դիզայնի ընտրությամբ: QGIS-ում ամեն ջանք է գործադրվում API-ն չխախտելու մի շարք աննշան թողարկումներում: 3.0-ի համար QGIS տարբերակի թողարկումը API-ով, որը ներկայումս չի աջակցվում, մեզ հնարավորություն կտա «մաքրել տունը»՝ շտկելով այն բաները API-ում, որոնց հետ մենք չենք համապատասխանում: Դուք կարող եք տեսնել ժամանակավոր ցանկը 3.0 API- ի համար առաջարկվող փոփոխությունները.
Ինչպես աջակցել 3.0 API- ի փոփոխմանը
Ինչպես արդեն նշվեց, 3.0 տարբերակը կկոտրվի QGIS 2.x տարբերակի հետ, և կա հնարավորություն, որ շատ ներդիրներ, առկա ծրագրեր և այլ ծածկագրեր կոտրվեն, որոնք հիմնված են ընթացիկ API- ի վրա: Այսպիսով, ի՞նչ կարելի է անել փոփոխությունները մեղմելու համար: Մաթիաս Կյուն, Յուրգեն Ֆիշերը, Նյալ Դոուսոնը, Մարտին Դոբիասը և այլ բարձրակարգ ծրագրավորողներ փնտրում էին միջոցներ մեղմելու API- ի ընդմիջումների փոփոխությունները `շարունակելով առաջ տանել QGIS ծածկագրերի բազան` հիմնվելով հաջորդ սերնդի գրադարանների և իր ներքին API- ի վրա: QGIS ծրագրի eringեկավար կոմիտեի մեր վերջին նիստի ընթացքում այն geofump ստացվեց տարբեր հնարավորությունների միջոցով: Հաջորդ աղյուսակում ամփոփված է այն, ինչ շնորհալիորեն ամփոփեց Մաթիաս Կյունը, և որ մենք մասամբ փորձել ենք այս հոդվածում տառադարձել ըստ դրա Տեղադրված է ձեր բլոգում:
QGIS 2.14 LTR |
QGIS 2.16 ??? | QGIS 3.0 | |
Թողարկման ամսաթիվը | Փետրվարի վերջը | 4 ամիս անց 2.14 | Cycle 8 ամիսները: |
նոտաներ | Թարմացում միջուկը QGIS python մասին code Python 3 է համապատասխանեն եւ աջակցում է PyQt5 (մասնակի իրականացման համար հիմնական գործառույթն օրինակ, մխիթարել, python հիմնական կոնտակտները եւ այլն) | ||
Qt4- ը | Si
Դեբյան ձգվող ջոկատում (մեկ տարվա ընթացքում) (Webkit հեռացվել) |
այո | Ոչ |
Qt5- ը | Ոչ
Misss QWebView- նոր փոխարինումը ոչ բոլոր հարթակներում: Նաեւ կարոտում է QPainter Engine: |
Si | Si |
PyQt4 | Si | Si | Ոչ |
PyQt5 | Ոչ | Si | Si |
Python 2 | Si | Si | Ոչ |
Python 3 | Ոչ | Si | Si |
API մաքրում | Ոչ | Ոչ | Si |
Փաթեթավորիչներ PyQt5 -> PyQt4 Ապահովում է ~ 90% հետընթաց համատեղելիություն |
Ոչ | Si | Si |
Հիմնական երկուական | Qt4- ի վրա հիմնված | Qt4- ի վրա հիմնված | Qt5- ի վրա հիմնված |
Ֆինանսավորման առաջնահերթություն | Python փաթաթիչներ |
Երկու կարեւոր բան կա, որ հիշենք Մաթիասի առաջարկը.
Առաջին փուլումՈր աշխատանքը կատարվում է շարքի ավարտելու 2.x աջակցության QT5, PyQt5 օգտագործելով Python 3.0, աջակցելով Qt4, PyQt4 եւ Python 2.7. Սա նշանակում է, որ առաջին փուլում կատարված բոլոր փոփոխությունները կհամապատասխանեն ավելի վաղ 2.x տարբերակներին: Python հատկանիշները կընդգրկվեն կներդրվի այնպես, որ հին API PyQt4 դեռ կարող են օգտագործվել հատկապես այն ժամանակ, երբ կազմվում դեմ QT5, PyQt5, Python 3.0. Qt4- ի դեմ QGIS- ի օգտագործման ժամանակ, PyQt4- ը եւ Python 2.7- ը ոչ մի ընդմիջման համատեղելիություն չեն ունենա:
Երկրորդ փուլում, Դուք կաշխատեք QGIS 3.0- ի արտադրման համար, ներկայացնելով նոր API, այն ամբողջովին վերացնելու է Python 2.7, ներառյալ Qt4- ի եւ PyQt4- ի աջակցությունը: Առաջին փուլի մեջ ներկայացված նոր python առանձնահատկությունները կպահպանվեն, հաշվի առնելով, որ բոլոր python կոդերը եւ 2.x- ի QGIS- ի տարբերակների համար զարգացումները կշարունակեն աշխատել QGIS- ի 3.x տարբերակներում: Այս փուլում դուք նույնպես ակնկալում եք փոփոխություններ մտցնել QGIS API- ում, որը կարող է կոտրել որոշ կոնտակտներ: Այս խնդիրը լուծելու համար մենք տրամադրում ենք միգրացիայի ուղեցույց, որը թույլ կտա հեշտացնել միգրացիոն գործընթացը 2.x QGIS տարբերակներից մինչեւ 3.x QGIS տարբերակները:
Caveat emptor
Կան մի քանի հնարքներ, որոնք պետք է տեղադրվեն, որպեսզի QGIS 3.0- ին միգրացիան ավելի ցավոտ լինի:
- 1. ՍՊետք է նշել, որ չնայած վերը նշված մոտեցումը փորձում է նվազագույնի հասցնել plugin- ներում python- ի սցենարների համար առկա աշխատանքի քանակը, դա պարտադիր չէ, որ լինի 100%: Ամենայն հավանականությամբ, կլինեն դեպքեր, երբ ծածկագիրը պետք է շտկվի, և առնվազն բոլոր դեպքերում այն պետք է վերանայվի, որպեսզի համոզվի, որ այն շարունակում է պատշաճ գործել:
2. Պաշտոնապես հաստատված ֆինանսական ռեսուրս գոյություն չունի այն մշակողներին վճարելու համար, որոնք կամավոր իրենց ժամանակը ներդնում են այս միգրացիոն գործընթացի համար: Այդ պատճառով շատ դժվար կլինի ճշգրիտ ժամկետներ ներկայացնել, թե որքան կտևի գործընթացի յուրաքանչյուր մասը: Այս անորոշությունը պետք է հաշվի առնել պլանավորման ժամանակ: Իհարկե, նվիրատվությունները ողջունելի են, որպեսզի դա օգնի:
3. Հնարավոր է այնտեղ լինեն մշակողներ և հաստատություններ, որոնք ֆինանսավորում են QGIS 2.x սերիայի նոր առանձնահատկություններ, և դա կարող է ազդել ձեր աշխատանքի վրա: Անհրաժեշտ է այդ նախագծերի պլաններում և բյուջեներում ներառել որոշակի հատկացում `QGIS 3.x հարթակ միգրացիային դիմակայելու համար:
4. Եթե QGIS թիմը աշխատի «ընդհանուր փոփոխության» վրա, ապա կլինի համեմատաբար կարճ ժամանակ, որի ընթացքում QGIS-ը կլինի անկայուն և անընդհատ փոփոխվում է QGIS 3.0-ի շարունակական թարմացումների պատճառով:
4. Եթե դուք զարգացնում եք «էվոլյուցիոն» ձևով, դուք ռիսկի եք դիմում, որ 3.0-ի մշակումը կարող է ավելի երկար տևել, քանի դեռ դուք չունեք մշակողների հավատարիմ խումբ, որն աշխատում է դրա վրա և չի պատրաստվում այն տեղափոխել:Առաջարկություններ
Բոլոր վերոնշյալ տեղեկատվության լույսի ներքո առաջարկվում է գործողության երկու գծերից մեկը.
1 առաջարկ.
Թողարկեք միջանկյալ 2.16 տարբերակը և այնուհետև սկսեք աշխատել 3.0 տարբերակի վրա ՝ որպես առաջնահերթություն, 8 ամսվա զարգացման պատուհանով: 2.16 տարբերակում կատարված փոփոխությունները կփորձեն համատեղելի լինել 3.0 տարբերակի հետ (տես python3 / pytq5):
2 առաջարկ.
Սկսեք 3.0- ը մեկ անգամ ավելի երկար տեւողությամբ պատուհանի վրա QT5, Python 3.0 եւ PyQt5- ում եւ խնդրեք մշակողներին իրենց աշխատանքը կատարել 3.0- ում: Շարունակեք 2.x տարբերակներով պարբերաբար, մինչեւ 3.0 պատրաստ լինի:
Այլընտրանքային առաջարկներ
Ունե՞ք այլընտրանքային առաջարկ: QGIS- ը հետաքրքրված է իմանալ հնարավոր այլընտրանքների մասին: Եթե ցանկանում եք առաջարկ ներկայացնել, ուղարկեք Tim@qgis.org «QGIS 3.0 առաջարկ» թեմայով:
The QGIS բլոգը, որտեղ հրապարակվեց այս հրատարակությունը: