How GitHub changed open source
Recently, I saw someone on LinkedIn sharing their first commit. It was from 2009. I was curious about mine, so I visited myfirstcommit.com. Although I joined GitHub in 2011, my first commit was from 2014. I was surprised that it was that late.
That reminded me of my early days. Around the end of the 90s, I was using Linux. I jumped from Slackware to Mandrake, tinkering with some projects. I was amazed by the amount of information available on the internet. Although programming was not my number one passion, it was a way to make things happen. I have been coding since I was a kid. It started with copying code from magazines into my uncle's Commodore 64.
I wasn't so collaborative back then. I was just a consumer of open source. I was surprised to find out I could contribute. However, the groups I found could have been more welcoming. It felt like a closed club. My excitement faded fast. For many, even the purpose of the contribution was to have control over the project, and as an outsider, you don't have a say in it when you don't pay for something. That was the mentality.
It changed a lot when GitHub came along. It became easy to contribute and find projects to contribute to. The community also became more welcoming. Main contributors became more pragmatic rather than protective.
I was on a Discord channel recently, helping people with their questions. Recently, it struck me that developers are spending so much effort on things that are not the primary concern of their projects. I noticed that even the experienced developers need help setting up a new project. Dotnet has a lot of boilerplate code. It gives you much freedom, but it takes work to make the right choices. I wanted to build something that would make the challenging parts easy.
I plan to create an opinionated dotnet framework that provides things most projects need. So that beginners could focus on the fun part: making their ideas come to life. I am planning to add the following features:
- Authentication
- Role-based authorization
- Feature flags
- User management
- Audit logging
- Error logging
- Health checks
- Metrics
- API Documentation
- API versioning
- Caching
- Background jobs
- Scheduling
- Message Queues
- File storage
- Email sending
- Push notifications
- Search
- Database migrations
- Database seeding
- Transactions
- Concurrency handling
- Enforcing TDD
- Deployment
- Monitoring
It will be open-source, and I'll share my progress on this blog.