For those uninitiated to open source, working in an open source company can be perplexing. Most companies work on a command-and-control model where work and direction is given from a top-down manner. But Frappé works a bit differently. It is both a company and a community, so how does a new engineer blend in? Here is a Primer for new developers working at Frappe.
Why are we here?
The goal of this project is to build the best quality open source software for small businesses. Small businesses today are constrained with the cost and quality of software available. There are very few credible tools available that are available as open source or at an affordable cost. This is a big opportunity for a community of developers to make themselves useful to achieve this goal.
Why small?
Small business are at the heart of the economic system and the largest employers in the world. If small businesses have better tools, they can do a much better job of offering better quality products and services to their customers, hence empowering them against large corporations. Large corporations don't care for affordable software or good quality open source, as their size allows them to buy whatever best tool is available at any given price.
Why open?
We believe that source offers a great model to build software collaboratively as a community. A lot of software in the world used today has its foundations in open source software and this has led to software companies building tools at a much faster pace than any industry. Ultimately the cost of reproducing a software (bits) tends to be zero, so all copy protection is about extracting rent by creating artificial constraints. We believe that in an open world, everyone wins ultimately and not just a few people who publish software and those who have resources to buy it.
Also open source offers a sense of direct participation and satisfaction to those who contribute towards the project. Unlike closed projects, all your work will be up for scrutiny from many other people, and you will also be publicly acknowledged as the author of your work.
How do we work?
Frappe offers a unique work environment which is similar to working on a large open source project, and also getting paid for it. This means that as a team member you directly interface with the community of users and developers around the product. If you are developer, your output is considered on par with any community developer. This being community based development, you should ultimately find your own niche and build your reputation too.
This also means that you will not be evaluated based on the number of hours or days you worked, but the the quality and quantity of your output.
How to select projects?
There are two ways to find ideas to contribute. One is to go through the open issues list and the forum and identify problems that seem important or are requested by multiple users. Then you can assign it to yourself and start working on it. If you have ideas of your own, you can put up a proposal by starting a new GitHub Issue and a corresponding discussion on the forum. Try and be as clear and descriptive as you can about your proposal and if you find there are enough takers, you can start working on it.
How to make contributions?
If you are a new developer, start with small contributions so that you become familiar with the style and quality requirements of the project. If you are working on a larger feature, try and break up the project into smaller parts. Once you become a regular contributor, you can send in large contributions.
How does evaluation happen?
As a developer, you must consult with a senior developer and setup your monthly targets, this must be updated on GitHub and linked to the monthly milestone. This will be the first source of evaluation. Other ways of contributing, like helping users on the forum, replying to issues on GitHub and tagging them, writing documentation and blogs etc will be the other source of evaluation. Every month you will be given an evaluation of how you have performed in the previous month.
At the end of each quarter, you will be evaluated based on your quarterly performance. If you are under-performing, either by taking on too few issues or not being able complete, then you will be given a warning. After two warnings in six months, you will be told that this will be the last chance for you to step up to the standards expected as a full-time supported developer of the project. If you do not perform in that month, then your contract will be cancelled.
How do I get mentored?
You have access to core developers of the project who have been around for many years. You can either initiate a discussion about problems you may be facing or direction you may be needed, or you can do that during your monthly evaluation. It is very important to note that you take responsibility for your development, and make use of the resources that are available to you. Also it is important to participate in any open forums regarding the direction of your project or the project overall.
What are important things to be remembered while contributing?
Consistency and quality are the most important things to consider while contributing. Consistency matters right from the way you name your variables to label the user interface. Re-using existing patterns in code and user interaction is also very important so that new developers and users easily understand how your contribution works. Quality should be self-enforced by doing manual testing of your contribution and also writing automated test cases where applicable.
How do I become a good community citizen?
The ERPNext community is at the core, a knowledge sharing community. You can be a good citizen by taking some time to share your knowledge either by helping new users or developers, updating the documentation as you see gaps, volunteering to test new contributions and writing blogs and articles about the open source way of life.
You should try to bring in new ideas and share prototypes of new designs or technologies that you find are interesting and relevant to the community.
How do I share my feedback?
You have ample opportunity to share feedback to the community or core developers. You can initiate new discussions on the forum or send one-on-one feedback by email to any core team member. You are also free to start new initiatives and lead new projects whenever you think you are ready.