This post has been in the works for quite some time, and I am finally glad I had a chance to put it in writing. I have seen engineers wage war over their preferred IDE, and two prominent tools when developing are Zeppelin and Jupyter Notebooks. Both have their advantages, and their use case depends on what you are looking for.
Jupyter has a larger and more active community, with a wide range of extensions, plugins, and libraries available for users. Zeppelin may have a more limited ecosystem in comparison. I do know that the Zeppelin ecosystem is growing but it hasn’t come close to eclipsing that of Jupyter’s.
Although I have never used any of the collaboration features, I do know that Zeppelin offers built-in collaboration features, allowing multiple users to work on the same notebook simultaneously. Jupyter does supports collaboration through external tools like JupyterHub but does not have any native collaboration features that I know of.
Zeppelin provides built-in support for a wide range of visualizations, making it easier for users to create and customize charts, graphs, and dashboards. In contrast, Jupyter relies on external libraries such as Matplotlib and Plotly for data visualization. This will always be a dependency that you will have to rely on to visualize results.
Jupyter requires the use of separate kernels for different languages. Zeppelin supports multiple programming languages in a single notebook, allowing users to seamlessly switch between different languages.
I personally prefer Zeppelin’s more structured and organized user interface, with notebooks divided into paragraphs and cells. Jupyter does has a more flexible interface, allowing users to rearrange and customize cells as needed. However, based on my personal experience when I am coding ad-hoc and experimenting, I tend to to shuffle around cells making my code disorganized and lacking of a logic flow causing problems with incorrectly imported modules and improperly initialized variables.