The cat is already out of the bag – since a few days, people already discovered it .. but the plan was to “launch” the initiative today .. so .. here we go .. ;-).
As you can see on one of my previous posts – I initially was planning to share a bunch of guidelines with you, starting with a first: a reference to the existing “NAV Design Patterns Wiki“. I did this simply because that is a kick start for you: it has a bunch of patterns that’s awesomely interesting still today, both to write code, and to understand the BaseApp as it is today.
Since then .. the plans have changed – in a good way! And to explain this fully, I need to go back a bit further in time.
Last year, I did a session for DynamicsCon titled “AL Development Design Patterns for the Future“. By preparing that session, I realized I really missed the NAV Design Patterns Wiki. The creativity, the conversations, the discussions, .. . I missed it so much that – without having one single plan in my head – I announced that “I might be reviving this initiative”. Henrik Helgesen was the first to notice it, and offer me his help.
Since then, I thought about it a lot. A LOT. How can I revive this project, let people co-work on patterns, describe it, discuss it .. and so on. I did not have a decent solution – so I decided to just blog and share whatever I have on guidelines and patterns .. and that’s it. Hence, my blogpost “AL Development guideline 1: the “NAV Design Patterns Wiki“. The number “1” indicated: there are many more to come. I in fact already listed about 6 more posts – topics I wanted to talk about.
Well .. since that blogpost, another person came with an interesting idea: Jeremy Vyska told me he would be capable of “scraping” the content of the Wiki, and put it in md-format, so that we could put it on GitHub and use that as a collaborative platform.
I already considered GitHub to be a perfect choice of platform for managing this project as it gives us pullrequests, branching, versioning, github pages .. simply perfect. And .. if Jeremy would be able to convert the existing patterns, everything would be on one platform – which would be THE perfect kick-/re-start of the project: the entire content of the Wiki as a starting point of all these patterns/guidelines that we could set up for BC (AL).
So, I contacted Henrik and AJ (who also had shown interest in the project earlier and during many talks through the year), and it seemed that Henrik also got some experience with what we were about to embark. Henrik introduced Jeremy to “Hugo” – a framework that can build websites, based on md-files, which is perfect for github and the combo with github pages!
So Jeremy got to work .. and …
ALGuidelines.Dev is born
If you go to https://alguidelines.dev/, you see the result. All the content, the NAV patterns, the NAV coding guidelines, the anti patterns .. EVERYTHING has been converted to md-files – which is transferred to flat html-files by Hugo’s GitHub Actions. I’ll leave the details to Jeremy to explain ;-). He actually already did that in a livestream with Henrik.
In any case – back the the ALGuidelines.Dev site … . Left, you see a menu, and under “NAV patterns Archive”, you’ll find all the patterns and guidelines from the Wiki.
As I mentioned, this site is actually “github pages” at work. That means, the original content, is simply from a github repository (branch), which you can find here: https://github.com/microsoft/alguidelines .
Read.That.URL
Exactly, the content is published on the organization of …
Microsoft
Microsoft is on board! Since I was asking Microsoft’s permission to scrape the content, they actually surprised me in showing much interest in the project. So much that they joined the project as well ;-). They will join the review-team, and they will contribute as well ;-). This tells me a lot, of course. Me personally, I value Microsoft’s opinion a lot. How they have done the latest additions to the product, the system app, the interfaces, .. I mean: they are innovative when it comes to new design patterns on AL. So if they join the team, I welcome them with open arms! ;-).
Coming back to my intention to revive the “NAV Design Patterns” initiative from back in the days – well – here we go – there is a platform, there is a project, and even Microsoft is on board again! That’s more than I could ever have wished for ;-). Thanks everyone that is involved! Really!
So, is this it?
Well, the platform will evolve – we have some ideas on discussion forums, discussing or giving feedback to patterns or guidelines, rating them, … and so on. So indeed .. the platform will evolve, and hopefully the content as well ;-).
You can simply use all the content internally for your own reference. What I will do in my company, is refer to the patterns, and make sure that the ones we apply in our company, are “mandatory knowledge”. (you can already predict: the ones we apply in our company will be added to “ALGuidelines.Dev” for sure by me ;-)).
On top of that, you can expect some other announcements as well – but more about that later this (and next) year ;-).
Do you have ideas? Well, it’s github. Just file a descriptive issue, and we have a follow-up on that!
But all-in-all – this project is obviously also quite dependent on your …
Contribution
This initiative is a community project. The intention is that we – as a community – work on documenting design patterns and best practices: new patterns, old patterns, anti patterns, best practices, worst practices, … whatever is interesting to document. So in stead of me adding patterns on my blog, I will add patterns to this github (and then probably blog about them 😜). I hope you will too.
Since this is a github repository, it lends itself very easily to contributing to it. Do you have a pattern or a guideline that you want to share, get over to our “contribution page” and get going! We have a template for both a pattern and a guideline, so it’s pretty easy to write your own ;-). It’s just a matter of:
- Fork the github repo
- Do your changes or add the pattern
- And pullrequest back to our repo
Then, the team will review it, give remarks, make sure it corresponds with the right format, add info, question it, play devil’s advocate, 🤪 … – in short: the team will help to get your pattern or guideline to the list.
Since I mentioned it – let’s talk about …
The Team
Well, it’s not the original team from back in the days. If you want to see who was on the original team, here is a page with the pattern authors – with a special shout out to Bogdana Botez, our “NAV Design Patterns leader” from back in the days ;-)). Don’t know who that is? Well … not only was she the “NAV Design Patterns leading lady” – since yesterday, she’s also one of the NAVTechDays superheros:
Jeremy, Henrik and AJ were the first three people to reach out – they joined the team on the community side as admins – and I can already see that it makes it a very versatile team – we all have very specific and different backgrounds. That can go two ways, of course: either we’ll endlessly discuss all topics and don’t get anywhere, or the different backgrounds add up to the outcome .. who’ll say 🤪.
And as said, since Microsoft now also reached out, there is obviously also Microsoft in play ;-). Although, I don’t know who will actually join, and how that will play out, so I can’t say too much about that just yet ;-). But what I CAN say is that they will join the project, and (I quote) “contribute to the content on equal terms as the community”.
I love it ! Looking forward to your contributions! If you want to see more, later today, “the team” will be introducing this initiative on the Beerinar. C U there!
1 comment
1 ping
This calls for a celebration.
One of the best things in the Design Patterns project (apart from the amazing people), was – is! that it brings focus on the right type of conversations. What is a good practice and why? What is a bad practice? How can we make our coding, the craft that we all care about, of better quality? How can we build a shared vision of what it means to develop a great product?
I remember we all believed in some common ideas last time we made this, and the enthusiasm and energy of it all was amazing. Coding became this giant lego playground, and the community was free to participate to it. We covered it, from small tiny lego pieces like “Number series” – to bolder and more global concepts like “The Hooks”. Some patterns even made it into the built-in capabilities of the language, we have left our mark, for real.
So, in that spirit – cheers to new beginnings! 🙂 I’m grateful to see the ALGuidelines.Dev project growing wings.
[…] flurry of activity on the NAV Design Patterns Wiki—so much so, that he has been blogging about reviving the initiative for AL guidelines. Now, the ALGuidelines.Dev site, where BC developers can learn about design patterns and best […]