Thoughts on increasing Frappe Framework adoption
See original GitHub issueCurrent State
There are 5 websites in Alexa Top 1 million which use FF(Frappe Framework). There are 1300+ sites in total which are publicly accessible.
GitHub insights show 34K+ clones in the last 2 weeks.
Most of these clones might be due to CI, dev setup etc. There might be another 5K to 10K sites which are running on top of FF.
Improving FF discovery
Most of these users discover and use FF through ERPNext.
FF is bit hard to discover in Python ecosystem and the entry barrier is too high for anyone to get started with FF quickly.
I am just writing down some thoughts on this here. We can see how this discussion goes and take actions based on it.
- Publish FF to PyPI
PyPI has “framework” trove classifier. Clean up setup file and then publish every release to PyPI. We can even setup GitHub Action to automate this. This makes it easy to discover for people who are looking for frameworks.
Currently, by default bench init
uses git clone and fetches develop
branch. Bench should pip
and fetch latest stable version of FF from PyPI.
This will also make it easier to track all the frappe apps. We can use https://libraries.io/ or other tools to track dependants.
Lowering entry barrier
- Reduce dependencies
Currently, FF has 70+ dependencies and many of them are optional dependencies.
Everyone doesn’t need dropbox or google auth or razorpay packages. So, classify the dependencies and update extras in setup file.
With this, users should be able to install “slim” or “full” dependencies as needed.
$ pip install frappeframework # installs only mandatory dependencies
$ pip install frappeframework[full] # install all dependencies
$ pip install frappeframework[payments] # install payment related dependencies. (Optional - Just to enable categories if needed)
This needs some changes at bench too.
- Make redis/cache optional
Currently, caching is tightly integrated with FF. We need to setup a flag(?) or some mechanism to make cache optional so that users can plug in when required.
- Ability to re-use existing virtual environments
Creating virtual environments using venv or virtualenv is a standard practice in managing Python projects. Users should be able to install FF in an existing environment.
- Write/Make tutorials
Currently, we have a library tutorial for users who are getting started with FF. We need to make full length tutorials on how to build a real world application. I have started a tutorial called “How to build Twitter clone with FF”. It is in draft state. Will try to finish that up.
We need to make few other tutorials so that users can “see” what FF has to offer.
If you have any ideas on how to improve FF adoption, please share it here.
Issue Analytics
- State:
- Created a year ago
- Reactions:14
- Comments:9 (8 by maintainers)
Top GitHub Comments
We’ve used Frappe for a project management system built for a World Bank agency - and here are a few things that we encountered:
I am planning on creating some tutorials and libraries (already made Frappe JS SDK - https://github.com/nikkothari22/frappe-js-sdk) to help more devs adopt Frappe. I can also help integrate JSDocs/Typescript in the codebase starting with the most used frontend tools in the framework - just need a starting point for this. This would help me and my team a lot as well - since I need to onboard them to Frappe framework and they’ll get the documentation right in VSCode.
This is something I’d written down around February 2021. Just a quick/rough note primarily for what I’ve wanted to / and am focussing on widely.
Increase Adoption of the Frappe Framework
to cultivate a strong dev community, making frappe more adaptable for all sizes of projects. making it the developer’s choice of framework for starting a new project.
what are the issues faced by existing devs?
frappe setups are very heavy
complicated dependency requirements & inital setups
too much friction to get started
too many unknowns
does this minor version update break my apps?
how simple should it be to use frappe?
just this command should be enough. it should download its assets and setup the bench CLI on your machine. You shouldn’t have to worry about database setups, if its required, could be managed by bench. If you want SQLite, use that. No extra setup needed.
^ Feedback from a community Frappe dev
dx++ for frappe
this would require
this would lead to
realised steps
the minor milestones of this project would be each sub-step in the above-mentioned steps. major would be the titled steps.