NOTE: As of February 2013 I am no longer the editor for Linux and Open Source on developerWorks. Don't worry! I didn't get fired or anything. I got rolled into a new team which draws upon all the skills I applied on developerWorks as well as exercising some of my other capabilities. It's an exciting challenge. As a result, this wish list is not necessarily the most current guide of what you should be writing. I'm going to leave it up, though, as a snapshot in time. I'll keep blogging and sharing. It actually may be easier to do now in my new role!
People ask me what kind of articles I'm looking for in the Open Source Zone on developerWorks. This is meant to be a permanent home for my thoughts on what I'm seeking in the way of articles with a little better explanation than I can offer on the basic developerWorks wish list
. Rather than just a bullet list, I'm going to try to get you inside my head so that you're working toward the idea, with your own new information and discoveries, rather than just trying to write to spec. Consider this your guide for what I'm seeking. I'll update here when I have new information. I recommend that you subscribe to the feed for this article so that you keep up to date. When you know you're ready to write, review the guidelines in the developerWorks Author Resources and then submit your content.
Right now in Open Source, I'm looking specifically for articles that cover tools and techniques that work across platforms. In particular, I'm trying to identify things that compliment the IBM product set and leave room for integration. In some cases they will simply be useful tools that people could be using. In other cases there will be specific ways to tie into the project's functionality using APIs and pull its functionality into an application.
For example, Blender (http://blender.org) is an open source 3D animation and compositing application that can do Hollywood quality rendering. I'm sure that there are some pretty creative ways to use their APIs to do things that would make for some pretty impressive functionality. There are many more projects that lend themselves to this.
A good sampling of open source projects can be found here: http://en.wikipedia.org/wiki/List_of_free_and_open_source_software_packages
Along with tools, I'm interested in development techniques for PHP and other open paradigms (Did I just use that word?). That would include Android development, C-code and anything else that is being used, or could be used to generate open-source software. I'm not really looking for opinion pieces ("Why this software/tool/technique is the best!"). There's plenty of that out there. I'm looking for things that will help a developer/IT professional wrap their head around a technology and begin to use it.
Security is becoming a hot topic. Cracking tools are on the rise and we hear about more and more break-ins each day. (Makes you wonder about the ones we don't hear!) Also, people are begining to work with data across environments in ways that they never did before. They want to work on their laptops, tablets and phones whenever they want and whereever they want. This provides a number of security challenges which have to be addressed. The open-source world has been interested in security for some time and there are some great tools and techniques available, but many people have never heard of them. Relevant topics would include encryption, authentication, malware and virus detection, tampering detection, automated defences, cracking forensics, firewalling and other ways of hardening systems and software across platforms.
Another aspect of the increasingly mobile and interconnected lifestyle is more focus on virtualization. Some of us have used these techniques for a while and are used to the idea of dealing with resources that we can't put our hands on. For many, this is a mind-blowing concept, but one that is imperitive if they are going to be successful in a world that includes mobile and cloud computing. KVM has come a long way. (Remember when KVM was about keyboards and monitors?) There are other tools for emulating hardware and virtualizing storage and other environments that people need to see. Relevant topics would include tools to virtualize environments, best development practices for working with virtualized environments, security and monitoring techniques, automation, resource management and more.
Another side effect of our growing web of data is the need to store it all. People need to store more information and access it quickly. It needs to be secured, backed up and authenticated. People need to be able to access it from any device that they choose in any environment that they choose. This is another area where Open source has been working for a while and there are a number of tools and techniques available. Relevant topics would include storage formats, tools for securing, authenticating and sharing data, backup methods, techniques for compressing and transmitting/receiving data.
Social business is becoming a big deal and there are increasing demands on developers to build social elements into applications. OpenSocial has been working for some time on tools and techniques for all of social media with an eye to compatibility across applications and platforms. The future of social business would be brighter if applications pursued an open path rather than a bunch of competing proprietary methods. Relevant topics would be an introduction to what developers need to know about social applications, the tools and APIs that are available and best practices for developing compatible applications.
When you go to Amazon, Netflix, Facebook, Google+ and any number of online stores and communities, there are engines that suggest items/people/information that you might like based on what you read, buy and rate. There are several players in this arena, including easyrec and Apache Mohout. As this sort of personalization is becoming more common, developers are going to be looking for solutions that they can experiment with and implement. Relevant articles would explain the key elements of such engines and help developers code their first examples.
Open source lifestyle
Another aspect that I want to cover is the lifestyle of using open source. There are fundamental ideas that one needs to grasp to be successful in the open source world. From the R & D side, you need to be willing to do your own installations, maybe compile some code and do some digging through forums and such to be successful. Knowledge of resources like Sourceforge (http://sourceforge.net) and basic tools like the GCC compiler (http://gcc.gnu.org/) are probably necessary. You should also have knowledge about the best ways to find what you're looking for. Skill with the query language on the search engine of your choice is probably helpful.
Once you decide to bring a piece of software into "production," you'll need a different classification of information to help the less adventuresome. Quality tutorials, books and even professional training may be necessary. You might want to connect with a professional company who provides support on open-source products. Knowing your way around this world will help you be successful.
Information which helps users make good decisions about open source and integrating projects into a commercial environment are helpful. I would like to tell the story of how particular open-source technologies successfully fit into commercial environments and make a real difference. Stories built on personal experience are a plus.
Many people freeze when moving to Open Source because they just don't know how to get from here to there. They've always done it a certain way, and the change frightens them. Showing clear migration steps between the old commercial way and the new open source way will be very helpful to get people to try it. Again, if you have saved a ton of money and time by moving to an open source tool or technique, this is a way to share that success and lead others.
Developing for OS compatibility
When your application can live in its own world you don't really need to consider standards or popular modalities. However, if you want to integrate with the open source world, those things matter. I've seen many commercial Linux projects falter in the beginning because they chose funky proprietary ways of installing their products and working with the environment rather than doing it the "Linux way." Helping developers understand the best practices for working with an open source environment will help them to save some pain and have more success in the beginning.
The bullet list
If none of that has fired up your imagination, and you are looking for a list of topics, here are some things I'm looking for. Bear in mind that this is not comprehensive and will probably change constantly.:
- case studies
- developing Eclipse plug-ins
- using Eclipse with C++/Java/XML/PHP
- Eclipse gotchas/tips
- Eclipse Mylyn - task and application lifecycle management (ALM) framework for Eclipse
- General Ruby instruction
- Ruby tips, tools, and techniques
- Integrating Ruby applications with IBM products
- Enterprise PHP applications—tutorials
- PHP tips, tools, and techniques
- Using Zend Core for IBM
- Integrating PHP applications with IBM products
- Tools - use, migration and integration
- Open Hardware
Open source technique
- Building software from source
- Navigating Open Source repositories
- Best practices for Open Source development
- Recommendation engines
- There's more... tell me what you're thinking!