Vandaag ronden we iteratie #81 af. Met deze sprint hebben we ons gericht op het verwerken van feedback op het Vraag en Antwoord-project.
Vraag en Antwoord
In de afgelopen iteraties hadden we de focus gelegd op het neerzetten van een basisversie van Vraag en Antwoord. Nu we de eerste gebruikersfeedback hebben gekregen, zijn we verdergegaan en hebben we ons in deze sprint gericht op het verder uitbouwen van dit nieuwe Tweakers-onderdeel.
Tot op heden kon je nieuwe vragen alleen stellen via het reguliere topicformulier in het forum. Vanaf deze release kun je op het tabblad 'Discussies en Vragen' in de onderwerpomgeving ook direct een vraag stellen, als je 'm niet ziet staan bij de al gestelde vragen.
Om de lijst op datzelfde tabblad overzichtelijker te maken hebben we daarbij een aantal verbeteringen aan de beschikbare filters doorgevoerd. Je kunt nu bijvoorbeeld filteren op Vragen of Discussies om zo gemakkelijk alle vragen over een onderwerp te kunnen bekijken of ze juist weg te halen. Ook hebben we ervoor gezorgd dat de topicstart en het eventuele beste antwoord van een vraagtopic in hun originele opmaak worden weergeven, zodat je ze in hun volle glorie kunt bewonderen, inclusief afbeeldingen en andere opsmuk. De mogelijkheid om de topicstart en het beste antwoord op de discussies & vragen-tab uit te klappen werd in de vorige iteratie geïntroduceerd, alleen stripten we toen de opmaaktags uit de post, waardoor de weergave niet optimaal was. Verder hebben we de feedback op dit nieuwe onderdeel ter harte genomen door de prefix [Vraag] weg te halen uit de titels van vraagtopics.
Thumbs-up
Het is al een tijdje mogelijk om andere gebruikers een blijk van waardering te geven met een thumbs-up. Deze functionaliteit is natuurlijk niet alleen leuk voor de gebruiker die veel 'opgestoken duimpjes' krijgt, het geeft ook andere gebruikers een goed beeld van relevante posts. Daarom zorgen we er nu voor dat een met opgestoken duimpjes beloonde post meer karma oplevert dan een gewone post. De bonus is afhankelijk van het aantal gegeven duimpjes en de relatie tussen beide heeft de vorm van een Gompertz-curve. Dat wil zeggen dat de toename van de karma het laagst is aan het begin en einde van de curve. Zo zorgen we ervoor dat enkele opgestoken duimpjes niet zoveel invloed hebben op het karma, maar dat er wel een sterke stijging is tussen vijf en twintig duimpjes, als bevestigd wordt dat de post door een beperkt of juist groot aantal gebruikers wordt gewaardeerd.
PHP 7
In de vorige update meldden we dat we waren begonnen met uitzoeken wat er allemaal komt kijken bij een upgrade naar PHP 7. Het antwoord is: behoorlijk wat. Nadat we een virtual machine met werkende testomgeving hadden opgezet, viel direct al op dat de door ons gebruikte mongo-driver niet meer beschikbaar is voor PHP 7. Aangezien de nieuwe driver significant veranderd was, waren we erg blij toen we ontdekten dat iemand al een 'adapter' had ontwikkeld, zodat we onze bestaande code kunnen blijven gebruiken. Verder blijkt dat PHP 7 net iets anders omgaat met serialized gegevens dan oudere PHP-versies, waardoor de communicatie met onze Java back-end niet altijd lekker loopt.
Kortom, er zijn nog genoeg punten om op te lossen en we hebben dan ook nog geen concrete datum waarop we kunnen overstappen of benchmarks kunnen tonen. Zodra dat kan, zullen we bovendien nog wachten tot (een tijdje na) Ubuntu 16.04 LTS, zodat we onze webservers eenvoudiger naar PHP 7 kunnen upgraden.
Symfony 3
Behalve naar PHP 7 kijken we naar een upgrade van het door ons gebruikte Symfony. We draaien nu versie 2.8, maar 3.0 is alweer een tijdje uit en we willen natuurlijk bijblijven. Ook dat is een forse klus, omdat er veel is aangepast in de api's. De belangrijkste wijziging daarbij is de forse verandering van het Form-systeem. We moeten daardoor al onze Forms veranderen voordat ze werken in versie 3. Gelukkig zijn de meeste van die wijzigingen vrij klein, maar met meer dan honderd Forms tikt dat toch behoorlijk aan.
Gradle
Naast het doorvoeren van wijzigingen aan ons PHP-project, hebben we ook ons grootste Java-project aangepakt. Dit is, net als onze PHP-code, een paar maanden geleden omgezet naar Git. Hoewel we dat destijds bij onze PHP-code meteen gecombineerd hebben met het het implementeren van Composer en Satis voor het beheren van externe dependencies (zoals Symfony), was dat bij de Java-code nog niet het geval.
In Java hadden we alle jar-files van externe dependencies nog simpelweg in de repository staan. Dat werkte wel, maar was uiteraard niet praktisch. Dat hebben we nu aangepast door alle dependencies af te laten handelen door Gradle. Daarmee hebben we overigens niet alleen de dependencies opgelost, we hebben ook het 'build proces' ernaartoe verhuisd. Dat gebeurde daarvoor nog met Ant, maar Gradle kon dat praktisch combineren met het bijhouden van de dependencies. Bovendien is Gradle eenvoudig op Windows te gebruiken, waardoor ook ons 'build proces' eventueel daarop kan worden uitgevoerd.
Een van de weinige dingen die we nog zelf moesten toevoegen was een manier om simultaan naar verschillende, maar niet alle, Tomcat-servers te deployen. Aangezien we dat al met Ant deden en dat nou net een van de dingen is die Gradle niet kon, hebben we dankbaar gebruikgemaakt van de ondersteuning in Gradle om Ant-taken uit te voeren.