Atsikratyti Wasabi -Dalis 1

Išversta iš anglų kalbos – https://blog.fogcreek.com/killing-off-wasabi-part-1/

FogBugz v8.13.104 buvo išleistas pabaigoje Gegužės 2015, su šiek tiek nervintis ir jokių fanfarų. Ir kodėl gi ji? Laidos sąrašą tik pora klaidų pataisymai ir nedideli pokyčiai. Bet po gaubtu, tai buvo didžiulis spaudai. Pirmą kartą nuo FogBugz kuriant kai prieš 15 metų, jame 0 linijų VBScript arba Wasabi kodą. “Pabaigos” era.

Tiems iš jūsų, kurie nežino, Wasabi buvo mūsų pačių vidaus .NET sudarytojas. Į šį postą, Aš ruošiuosi suteikti jums fone Wasabi, įskaitant kodėl mes ją sukūrė ir tai, ką ji leido daryti, prieš suteikiant jums viduje scoop apie tai, kodėl mes dabar nužudyti jį išjungti. Kontrolinį postą, mes kalbame apie tam tikras Wasabi, kad mes būsiu atviras-pirkimu.

Laiko Taupymo Pradžia

FogBugz buvo sukurta kaip vidinį įrankį, kuris padės stebėti klaidas mūsų pirmasis produktas, CityDesk ir paremti mūsų konsultavimo veiklą. Ji buvo parašyta ir VBScript buvo tik Windows. Bet nuo jo pirmojo visuomenės spaudai, vartotojai paprašė Linux versija. Mes nenorėjome, išmesti tai, kas jau buvo didelė kodas ir pradėti nuo nulio, apie naują kryžminio platformos versija. Taigi, mes samdyti mūsų pirmasis vasaros vidinis sukurti Thistle. Thistle buvo kompiliatorių, parašyta Java, kad išversti ribotą pogrupyje VBScript į PHP. Jį sudarė tokenizer, paprastas analizatorius, ir baigtinis-valstybės mašina pagrįstas PHP generatorius. Nieko, kad negalėjo būti išreikšta Thistle, ten buvo specialią sintaksę įterpti PHP kodą tiesiogiai ASP. Tai buvo ne gana, bet, nereikalaujant iš viso perrašyti FogBugz, tai reiškė, kad mes galėtų remti Windows ir Unix.

Thistle gavo pora smulkių atnaujinimų, per artimiausius kelerius metus, pavyzdžiui, pridedant gebėjimas generuoti ASP, kad mes galėtume įterpti kodo aprėpties registravimo informaciją į sukurtą kodą.

FogBasic: Toliau Down the Rabbit Hole

Tada apie 2005, mes šoktelėjo nuoširdžiai down the rabbit hole. Thistle tapo FogBasic ir mes turėjo vizijas kurti naują kalbą, kuri įveikė daugelis problemų, su raštu ASP. Šis sprendimas buvo ne be kritikų, bet mes tikrai norėjo padaryti taip, kad kuo daugiau programuotojas klaidų, kaip galima buvo rasti kompiliavimo metu, o ne aplinką. Taigi, mes pridėta daug funkcijų ir papildymai, kalba, kaip atnaujinti lexer, kad labiau atitiktų kalbos, sintaksės visiškai abstrakčios sintaksės medis, ir pridūrė, tipas išvada.

Vasarą 2006, FogBasic tapo žinomas kaip Wasabi, ir mes toliau tobulinti. Iki šio punkto, beveik visos naujos kodas FogBugz 6.0 naudojamas vienas arba daugiau Wasabi funkcijų. Wasabi galėtų generuoti ASP, PHP, ir kliento pusės JavaScript. Jis pritarė Nuotrauką Funkcijas, sumažino sumą pasikartojančių kodą reikia rašyti kuriančio, kliento kodą ir turėjo remti dalykų, pavyzdžiui, Fragmentas Talpinimo ir Memoization leido per kompiliavimo laikas kodas generatoriai. Wasabi 3, viešai kartu FogBugz 7 į 2009, buvo moderni .NET- stiliaus funkcijų, pavyzdžiui, Interfaces, Enums, Try/Catch, ir bazinės klasės. FogBugz 7 bėgo ant Mono arba Microsoft.NET vietoj PHP ar Classic ASP, sukurtas Wasabi 3 naujas CodeDOM pagrindu kodas generatorius.

Išlaikymo Problemas

Kaip laiką nešiojo ant, mūsų techninių skolos pagaliau pradėjo ateiti laiku. Kompiliatoriai kaip Wasabi ir jų trukmė bibliotekos yra labai sudėtingas gabalai programinė įranga. Nebuvom atviro kodo, taigi tai reiškė, kad bet kokia investicija, turėjo būti daroma mūsų sąskaita, mūsų pagrindinis pajamų generavimo produktus. Nors mes buvo užimtas darbo dėl naujų įdomių dalykų, Wasabi nekito. Tai buvo didžiulis priklausomybė, kad reikia visą laiką kūrėjas — ne pigus bendrovė, mūsų dydžio. Tai kartais barfed dėl kodo fragmentą, kuris buvo visiškai pagrįstas žmonėms. Jis buvo lėtas sudaryti. Visual Studio negalėjo lengvai redaguoti arba pridėti derintuvas, kad FogBugz. Tik dokumentuoti jis buvo nuobodus: FogBugz Pagrindinis Kūrėjas metu, Aaron Maenpaa, rašė “Wasabi–??? parts”, knyga išleista viduje, 2011, kurie bandė dokumentas Wasabi funkcijas ir daug keistenybių.

Gyvenime taip pat pateko į kelią. Žmonės, kurie rašė, kad originalus Japoniškos sudarytojas persikėlė dėl vienos ar kitos priežasties. Kai kurie susituokę partneriai, kurie gyveno kitur, kiti išvyko daugiau nei darbo ir kitų produktų iš Fog Creek. Žinoma, mes negalėjome tiesiog samdyti ką nors su išankstinio žinių apie tai. Na, išskyrus mane, nes dirbau apie jį atgal į 2008, tada į kairę, bet vėl buvo pasamdytas keturių metų! Bet kitaip, visos naujos samdo turėjo ilgų mokymosi Wasabi, nepriklausomai nuo jų ankstesnės patirties.

Kas daugiau, mes nebuvome gyvena vakuume. Programavimo kalbų buvo, žinoma, pagerinti už Fog Creek. Iš tiesų, daug funkcijų, Japoniškos pridėti dalykų, kad C# 2.0 pristatyti į lauką, ir ten buvo trys pagrindinės versijos C#, nes tada. Kūrėjai pradėjo jaustis kaip savo puikių idėjų buvo varžo apribojimai, mūsų mažai Wasabi visata.

Taip, kartu su darbo FogBugz Ocelot, naujausia versija FogBugz, mes nusprendėme pradėti pašalinti Wasabi iš FogBugz. Buvo kitų pasiūlymų, tai padaryti anksčiau. Kai Wasabi 3 buvo pradėtas, vienas iš pasiūlymų buvo padaryti vienas kaupti į Python, tačiau šis buvo atmestas naudai .NET posistemė. 2011, Ted Unangst siūlomo “Projekto Sojos Padažas”, derinys .NET Reflektorius ir Perl skriptus, kad savo ruožtu Wasabi dvejetainis išėjimas į beveik elektroninis C# kodo. Šį kartą, mes pagaliau pavyko, nes Roslyn, naujai atviro kodo .NET Sudarytojas Platforma.

Traukdami Kištuką

Taigi su sprendimu, dirbti pradėjo, kuriame dalyvavo:

  • Žingsnis 1: pakeiskite išėjimo Wasabi iš .NET asamblėjos C#. Senas .NET kodas generatorius buvo pagrįsta System.CodeDom, anksčiau Microsoft technologija, kuri generuoja galioja C# ir VB.NET kodas nuo mažiausio bendro vardiklio abstrakčios sintaksės medis. Mes pridėti savo C# išėjimo į naują projektą FogBugz tirpalas su precompilation žingsnis, kad remtis Wasabi su pakankamai komandų eilutės argumentai.
  • Žingsnis 2: Pereiti nuo CodeDOM į Roslyn. Tai truko 2 savaites, kad pasiektų funkcinės paritetas tarp CodeDomGenerator ir RoslynGenerator, tuo metu mes, pašalintų buvusių iš Wasabi.
  • Žingsnis 3: Gerinti produkcijos RoslynGenerator. Taigi, daugelis mažai krašto atvejais buvo pagerintas čia, įskaitant‘!=’, daryti/o, hex literals, loginis ir aritmetinis neigimą, gebėjimą, konstantos, jungiklis ataskaitos, dėl kilpos su paprasta ribų, else if, lambdas, initializers, pašaliniai verčia ir skliaustų, styginių literals, Wasabi Sąjungos rūšių, ir pasirinktinius parametrus.
  • Žingsnis 4: Nužudyti Wasabi. Įsipareigojame C# failai, kad Japoniškos produkcijos, ir pašalinti Wasabi ir .buvo failus iš patarimas FogBugz saugykla. Mes taip pat turėjo perrašyti šiek tiek kalbos failą generatorius, kuris buvo kuriančio Wasabi vietoj generuoti C#.

Pamokų Sužinojau

Turėjimas savo programavimo kalbos, padėjo mums augti FogBugz, multi-dešimtmečio projekte, iš VBScript prie PHP ir JavaScript ir galiausiai pereiti per drąsus naujas pasaulis .NET. Wasabi padarė daug prasmės, prieš dešimt metų, kai mes turėjome žydi kodas bazę, mes norime persodinti į naujas ekosistemas. Tai buvo prasmingas 2008 perjungti posistemė .NET, kurie buvo lengviau išlaikyti ir greičiau platforma, ant kurios skaičiuoti FogBugz. Kadangi mes buvo konsoliduotos į vieną posistemė, ji gali turėti prasmės metu daryti vieną kartą surinkti naudojant ranka, C#, generatorius. Kai Roslyn buvo išleistas, jis padarė net daugiau prasmės apdaila perjungimo visiškai nei prie C#.

Pastato vidaus sudarytojas retai prasminga. Jis yra daug labiau ekonomiškas liesos labai priklausomi nuo kitų žmonių darbą ir naudokite standartinę, atviros technologijos. Jūs turite būti pasiruošę ne tik sukurti savo visatą, bet tada puoselėti tai ilgalaikis. Mes nebuvome nežino apie tai, kai projektas prasidėjo, bet tai daug lengviau perjungti kalbas pradžioje projektą, kaip pusiaukelėje. A atpažinimo kompiliatorius gali prasmės, kai bando uosto į naują platformą, kuri Wasabi padėjo mums daryti kelis kartus.

Į kitą postą, mes neria į naują Roslyn pagrindu kodas generatorius Wasabi, kad mes atviri-pirkimu. Tikimės, jog tai padaryti, visiems, kurie svarsto, kuriančio C# kodas programiškai turės guideposts naudojant Roslyn kaip savo kodą generatorius.

 

 

Grįžti į pagrindinį puslapį

Leave a Reply

Your email address will not be published. Required fields are marked *