You won’t believe what happened when these e-commerce devs got frustrated!
Or: Build your e-commerce system with the freedom of your side-project.
-co authored by David Manners
There are thousands of e-commerce systems out there in the wild, but which one should you choose as a developer? Should you pick Shopware, Magento, Demandware, Spryker, Sylius or Woocommerce? Each one has it’s own version of “The good, the bad and the ugly”. Having both worked with several of them we’re pretty sure none of them are or ever will be a silver bullet.
So let’s just pretend that we live in a dream world, dear developer. What if there was a framework specially built for e-commerce that wraps your favourite (API enabled) e-commerce system and would give you, dear developer, the freedom to implement any tech you want! It would allow you to integrate any system you need! It would even cook your dinner for you, if you integrated your microwave. Does that sound too good to be true?
Then there is the frustration of tying in any other 3rd party system like bookkeeping software, or an external pricing database… making your monolith even more monstrously complicated.
Running into Moltin, which is a completely API based e-commerce system, we got the unholy idea that building some small middleware for this between the frontend and the Moltin APIs would be fun.
Spoiler alert: This isn’t a perfect world and it wasn’t fun, but the idea itself was interesting enough to continue. Since Moltin is already fully API based it’s easier to build our Proof of Concept based on their platform but any other API driven e-commerce system is welcome.
So get to the point; WHAT are you guys trying to accomplish
Basically the KickAssCommerce project is halfway between a proof of concept to show other system what an e-commerce system could look like (yes, we’re looking at you, you big orange M) and a real attempt to create a stable system that one day could go into production. For now tho, this is highly unstable and should not be used for anything else than a proof of concept.
Some of the thoughts behind the platform are;
"The practical implementation of an ongoing philosophical debate on how e-commerce systems should be used in the real world"
“On its own it’s a collection of calls to 3rd party systems. It does little more than add some caching here and there. It’s main function is to be extended”
“Anything we offer on functionality should be extended by AOP. Virtually all methods we have are public. Anything protected should be refactored to be public and extendable”
So what is our philosophy you ask?
- Keep it simple: stuff should be practical. It does not need to fit every scenario you can think off. For that we make it extendable
- Use what is out there: we’re lazy. If there is a popular, lightweight library out there that doesn’t come with too much overhead we’ll use it instead of building it ourselves
- Limit dependencies: you should be able to choose what kind of tech you want to use. That’s why we try to limit dependencies and where ever we need to have it, we use DI (well, we’re trying to)
- Everything should be questioned: as soon as a feature or library is added tickets should raised questioning the how what and why. Anything added to the project should be up for improvement, refactoring or replacing all together.
EXCITED ABOUT THIS? WE ARE!
So get involved! If you have an idea about how an e-commerce system should work create a feature request or shoot is a PR.
Are you religious about security? Good! We suck at it so start correcting us.
Do you think every framework should be covered with tests? We’re not stopping you, do it!
Have some outrages idea about how tax could be better? Create a ticket and get people to discuss it.
Are you on the tech team of some big e-commerce platform? Start creating a bridge and help us integrate your APIs.
We’re just 2 developers with some mildly radical ideas about e-commerce (disrupting stuff seems to be so hot right now) and we need your input and guidance to make this project work.
- but not actually paying, except maybe in virtual kudos.
Working with KickAss is a labor of love, it’s a conviction. It’s the urge to join our epic quest to make a mark on open source e-commerce in the years to come. We’re a non profit group of developers that believe in change.
And since we’re a small team everybody get’s to be a lead! How cool is that. If you’re interested contact us via our team page.
You will take it upon yourself to make our system frontender friendly.
Should we be API based with our output? Implement some exotic templating engine? We need someone that advises, reviews community PRs regarding frontend and scours the internet for the best solutions to propose for this project.
But remember, even though you're not a Lead 'Something', you can still contribute a lot via PRs and feature requests / issues
Lead test engineers
We think testing is awesome. And we’ve even started writing tests. But basically we pretty much suck at them. It’ll be your job not to write all the tests but to help others write them for their code. Make suggestions, review PRs, advise others… We want it all, Scrutinizer, Travis, integrations tests… you name it but we need someone with a lot more knowledge than we have to implement this.
You're not a developer, or just not in the mood of writing code. But you do have grand visions, interesting ideas and like to moderate and lead discussions. Lead philosophers engage the community and respond the feature proposals. They review PRs on a meta level and are thought leaders in their respective domain motivating others to get involved.
Lead technical writers
So documenting stuff is hard. Like really hard. But we need it and we could use some help with it.
Where to document, what format, what tech, how can we automate it (partially) etc etc. So many questions and we have absolutely no clue what we’re doing.
So, are you some kind of documentation wizard? Or just good with it? Come and help us.
You’re a great programmer ready to make your mark on something big. Join us and help out with writing core features, creating boilerplate code, introducing new features and refactoring old stuff.