Code and Theory develops simple, reusable software components for domains like native mobile apps and websites to accelerate development by offering flexibility and modularity. In a candid chat with OSFY’s Yashasvini Razdan, Indumathi Venkataraman, Director of Engineering and Sunil Kalkunte, Engineering Leader and Country Head, Code and Theory, India, revealed how the company generates revenue by utilising open source components in custom project development.
Q: What is your focus in India with respect to open source?
A: We consume and contribute to open source resources to accelerate development and extend our support to other external projects emerging in the community. This includes developing and delivering projects that leverage open source technologies. In addition to using these resources, we are committed to giving back to the community that supports them. We have established a specific vertical dedicated to open source component building and community interaction. This involves not only internal development but also contributing to external projects, such as Google’s MediaPipe. In a 360-degree view, we intend to align with our business objectives while supporting and giving back to the open source community.
Q: What components do you build?
A: We create simple, reusable software components that can be applied in specific domain contexts. For instance, if a company is building a native mobile application or a website, we develop small, modular components that can act as accelerators in these projects. These components are designed to be freely used and contributed to by anyone, improving their functionality. Another example could be a chart used in a dashboard for metrics.
In many development scenarios, developers prefer to use existing open source resources rather than writing code from scratch. This is where our components come into play. We develop them for our use initially, but they are structured to either stand alone or be bundled with others to assemble an application quickly. By offering these components, we enable developers to pick and choose what they need for their projects, whether it’s a single piece or multiple pieces that can be combined. This flexibility and modularity accelerate development processes, making it easier for startups and other entities to quickly deploy functional and practical software solutions.
Q: What are your target systems when it comes to application?
A: We target both customer-facing and backend systems. For customer-facing applications, this includes mobile and web apps, where the user directly interacts with the software. On the backend, our focus extends to cloud services and middleware, which, though not directly visible to the customer, are crucial for the smooth functioning of the front-end applications. In particular, we specialise in building components that enhance the performance and functionality of these systems. For example, in a video rendering application, we might develop a component that accelerates how the video is processed or how data is pulled from the backend system to the user interface. Our approach aligns with the open source philosophy of not building everything from scratch. We focus on developing and sourcing components to speed up the development process.
Q: Where do you generate your revenue from?
A: Our revenue model is based on professional services provided for custom project development, which may involve a mix of open source and proprietary components, depending on the client’s requirements and the nature of the project. While we build a range of software solutions, only some things are open sourced. We work on projects for clients where some components are proprietary to those clients. However, when engaging with clients, we make it clear from the outset which parts of our technology stack are open source. We emphasise that these open source components are non-negotiable and remain non-proprietary. The proprietary aspects of the solutions we develop are specific to each project and are where we generate revenue. These projects often involve building critical solutions tailored to the client’s needs, and we charge professional service fees for this development work.
Q: What are the target markets for your products?
A: We decide this based on the criticality of handling — what the product is for and how specific it is to a client’s business. It becomes proprietary if we create something that uses a client’s unique knowledge or is specific to their business. However, if we develop common parts that are useful for many clients or the whole industry, we open source them. So, things that are special secrets for a client’s business stay proprietary, but things that can be helpful to many get shared as open sourced.
Q: Who is the target market sector for your products?
A: We target anyone who needs a solution or has a problem to solve. This includes many areas, such as brand development, marketing strategies, technology solutions, mission-critical applications, cloud services, and data management.
Q: What is your objective for participating in the Open Source India (OSI) conference?
A: As a technology-first creative agency, we recognise the role of open source in the tech industry. We started this journey three years ago to benefit from open source resources and contribute back to the community. As a net contributor, we’re focused on giving back as much as we use from the open source community to develop our software and serve our customers. Our presence at the OSI conference is an opportunity to share our experiences and contributions in the industry, particularly in the open source domain. It serves as a platform to increase awareness of Code and Theory, which is the only agency with 50% engineers and 50% creatives at scale, enhancing our brand recognition in the market.
Q: Are you focusing on a specific segment at this event?
A: At Open Source India, we aren’t limiting ourselves to just one specific segment. This year marks our first attendance as Code and Theory, and our primary goal is to ensure that we are both visible and audible. We want to engage with key leaders across various sectors, including startups and enterprise segments, to understand their current challenges and problems. We aim to explore how we can collaborate effectively, not just in the realm of open source but also as strategic partners. We’re open to various opportunities for collaboration and partnership across different sectors, looking to understand and address the diverse needs present in the tech industry today.
Q: Which industry segments do you engage with the most?
A: Our engagement isn’t limited to a specific industry. We see a diversified range of responses from various sectors. However, there’s a clear inclination towards cloud and AI-based components, aligning with the general progression of the tech industry. Since the beginning, we have worked with a broad spectrum, including data analytics and machine learning (ML), focusing on enhancing user experience.
Q: How do you manage your products’ maintenance and bug fixing?
A: Managing maintenance and bug fixing involves a cost in terms of resources and time. However, the role of community collaboration makes this process exciting and effective. We often receive input and contributions from community members who suggest improvements or offer enhancements they have already implemented. We also get requests from users to fix specific bugs or defects in our components.
Setting up a dedicated vertical for managing this process is essential. We invest time in maintaining and updating what we’ve built and released to the community, ensuring our products remain functional, efficient, and relevant.
Q: Does that compromise on profitability?
A: I don’t believe it comes at the cost of profitability. When we establish an active vertical or a specialised focus, we consciously allocate a portion of our investment towards it, but with a strategic goal in mind. This investment is not aimed at direct financial returns from the open source projects but rather at leveraging them for different revenue streams and supporting a team dedicated to building, maintaining, and expanding these open source tools.
As we grow and contribute more significantly to the open source community, we gain recognition as consumers and as creators of solid software that the world can use. This reputation helps attract clients who trust us for open source projects and building their business-critical software. Our open source involvement demonstrates our ability to write code that earns widespread trust. As more and more companies use our open source software, it builds confidence in our ability to handle complex software projects.
Q: You mentioned mission-critical systems as a target segment. Could you elaborate?
A: Consider a healthcare application where you need to display healthcare information to an end user. To construct such an interface, multiple components are required. These could range from user interface elements to more complex data processing modules. In such scenarios, we could use existing open source components to develop features that display healthcare information to the end user. This speeds up the development process and ensures reliability by using tried and tested components.
Our component development isn’t limited to just user-facing elements. We also focus on backend components that might not be directly visible to the end user but are crucial for the system’s functionality. For example, in content management systems like Drupal, we contribute to the visible and underlying aspects of these systems. Our contribution spans an end-to-end spectrum, catering to critical systems’ visible and invisible components.
Q: Is it justified to use open source in critical systems with respect to reliability, security and safety?
A: Yes, using open source in critical systems can be justified, mainly due to the principles of collaboration and resilience at the heart of open source. Open source software, being contributed to and improved upon by a broad community, tends to be trustworthy and reliable. In the context of mission-critical systems, it’s common to use open source components as a foundation. These foundational elements are then built upon with proprietary systems to enhance security and address specific needs. While you might not see open source components used directly in highly specialised applications like automated braking systems, they often underpin such systems. Open source solutions, solidly tested and used by a broad community, provide a reliable base that companies can build upon. This can save significant time, cutting off months or even years of development.
Q: What is your advice to those just entering this space in the open source domain?
A: For those delving into open source, there are several important aspects to consider.
It’s crucial to have clear leadership support and alignment. This involves having a clear vision and a well-defined execution strategy. Begin with small steps. Adopt a ‘crawl, then walk, then run’ approach. Start with a pilot project to test your ideas and strategies. This helps in gaining practical experience and building confidence in your chosen path. Be prepared to realign your strategy if needed. Constantly review and refine your approach based on your experiences and outcomes. Meanwhile, recognise and celebrate your achievements, no matter how small. Building components in open source can be exciting, and showcasing your technological capabilities should be a source of pride.
Open source is a continuous learning journey. Not every component you develop will be widely adopted or successful, and that’s okay. Learn from these experiences to understand what the industry needs and how you can provide value. Use a component as a learning opportunity if it doesn’t gain traction. Analyse why it wasn’t as successful and apply those learnings to future projects. Use open source as an opportunity to experiment and improve your skills. Even if a component isn’t immediately successful, the experience you gain in developing it is invaluable. It helps you understand how to create better software that meets the community’s and your clients’ needs.
Q: How do you handle situations where a similar product already exists in open source?
A: In the open source domain, the concept of competition is quite different. It’s not about competing against each other but more about meritocracy. The focus is on who has written the best code and which product works well and is preferred by users. That’s the beauty of open source – it’s based on the quality and utility of the software. When you have multiple options for a similar kind of product in open source, it becomes a matter of evaluating and choosing the best solution, based on factors like stability, the number of adopters, and the level of active contribution.
If another product has better features or greater adoptability, we take it as a learning opportunity. We analyse why the other product is more popular and apply those insights to our future projects. We don’t see it as a competition to be won but as an opportunity to learn and improve.
If another product is better suited for a particular purpose, we are open to using it ourselves. The open source community thrives on this collaborative approach, emphasising using the best available tools, whether developed by us or someone else. We also integrate other open source components into our software, embracing the collective strength of the community.