Why build a module in the first place?I was always bought into the idea that the Marketplace was an area where other developers could show off their amazing development talent by creating some fantastic module that would help someone or some business with some every day problem. This could simply be a diagnostic tool or even a development tool like Sitecore Rocks.
In your everyday life as a Sitecore developer, you tend to create small modules to help with a problem but you would never do anything with it. It’s more of a throw away piece of software, until now!
Why create something that helped you and not share this out to someone else that may have the same issue as well? You simply wouldn't, but we essentially do it either subconsciously or simply there is no time for anything else.
That is why when writing this blog, I would’ve released a Workflow Manager module to the marketplace which you can download here and install and hopefully it will help you as much as it has helped me with some of my projects.
The problems I faced
When you start to think about uploading a module to the Marketplace, there are certain things that you can sometimes forget about because we feel that our fellow developers will be able to download this module, install it and it will work like a charm!
The answer is NO!
I'm a great believer of usability of a system and that also covers development as well. How can I build something for someone else to use and make it as easy to install, develop, use, extend, etc.?
Below are some of the things I found useful to think about before uploading my module and trust me, I'm no expert at this, but thought it would be useful for someone else:
Think about which Sitecore versions your module will work on. Will it go back as far as version 5? I think 6.6 is a good start but essentially 7.2 is where most people will probably be at, but covering as much range is always good.
Installation issues with existing folders
I created a Modules folder for one of my configuration settings item which may also exist for other modules so think about how you will package this so that it doesn’t simply overwrite someone else’s folder on their solution.
How many installations before it is perfect?
I found myself installing, re-installing, deleting, and removing for long periods of time. Don’t feel that this is a complete waste of time, it isn’t! Trust me, every time you install and re-install, you always find issues so make sure the installation is perfect before pushing this out.
Do I include the code in Github?
Well, this is for the more advanced users. I always think that if I want others to contribute or extend my module, then throw it up onto Github or some other collaborative revision control.
Christ! My code doesn’t look that nice!
This is more of a POC concern than anything else. If someone was really bothered about coding design patterns or code standards, then they should be looking for the source code and redesign it to fit into their architecture. For this purpose, this is a module that helps others but everyone’s coding style is different.
Test against other modules
I always install another module alongside my one and see if it breaks when installing my module against theirs. It helps iron out the simplest of issues which could arise with others trying to install your module in their solution.
Be there to help!
Finally, I’ve sometimes found that when I download someone else’s module and I have an issue, I don’t get a response when I ask for help or leave a comment. I’m always supportive with others just as Sitecore is with you. So always support where possible because you could be getting some good constructive feedback for your module, so I hope that I do as well!