Is Param not the most powerful python library in existence?

Hey all, I’m a financial data scientist, and I have been aggressively adopting the holoviz stack over the past two years for my development, visualization, and dashboarding workflow.

It has recently clicked that Param is the foundation that enables many of these powerful tools. I feel like Param makes python a strongly typed, object friendly, scalable systems architecture programming language. I feel like this is a game changing development, and I am really surprised that Param is not more widely known, used, and discussed. I find there are extremely few articles/stack overflow posts about Param, and I think this should change over time.

My question to the community: Do you guys see how profound Param is as a simple foundation for hierarchical object development in python? Or am I getting a little too hyped about all of this?

3 Likes

Param is definitely the foundation that makes it possible for a small group like ours to maintain tools this powerful without going crazy. It lets us set up interfaces that are well defended, ensuring that each specific part of the code (and each member of the team) doesn’t have to reason about all the other parts of the code. The richly declared Parameterized interfaces let us state clearly what each class or function does, and then we can just leave it, secure knowing that we’ll be alerted when we or users do anything not allowed by that contract. Whenever I hear people complaining about Python’s lax typing or Python not being appropriate for large codebases or anything like that, mentally I always say “well, of course, unless you use Param”. Of course, as the main person who made Param come into existence (not by coding it, but by noisily demanding it of my employees and students), the fact that I think that shouldn’t be surprising. But it’s nice to hear it from someone else who really “gets it”. :slight_smile:

As for why it’s not widely known or used for that purpose, that’s partly from history, in that for the first 10 years of its life we didn’t make it a separate package from our neuroscience-focused academic research simulator, and even when we did make it a proper standalone package we didn’t document or promote it very well. It still isn’t really documented, but we’ve now gotten funding to document it properly sometime in the next few months, so that’s finally going to happen. You can blame academic research for not rewarding anything but an impactful publication in your own narrow subfield; Param is definitely something that’s never going to get any Journal of Neuroscience citations! Or you can blame me having young children while trying to establish an academic career. Or you can blame Param never quite being what anyone intentionally sets out to look for; instead they want a web toolkit or machine learning library or something with more tangible immediate applications. Probably it’s all these things and more! But I’d love to hear ideas how it could be more widely known and appreciated; I cringe every time I see other large Python codebases fully of dozens of assert statements and other error checking code that still makes things only 1/10th as robust as even the most basic Parameterized objects are.

4 Likes

Glad there is going to be documentation soon! Myself I don’t think I really appreciated param before getting into panel and way after I started digging around in the holoviews codebase. But in hindsight it all makes sense: Just like holoviews is about annotating data and letting the library figure it out from there, param lets you annotate the code and let param do the piecing together.

So yes, lack of documentation has definitely been a hurdle for me, but it also has an approach quite different from most other python (data science) libraries I’ve seen.

2 Likes

Param is amazing.

But there are things I think hinder adoption.

  • low quality documentation
  • competiting frameworks like traits and traitlets (i think)
  • not working well in editors and IDEs
  • competing concepts like static typing and data classes
  • not communicated anywhere

Wow jbednar, thanks for this awesome answer! It’s nice to get a glimpse into the lore behind holoviz. Really interesting stuff, and I am glad to hear that you have secured funding to improve the documentation.

It’s kind of cool ‘being on the inside’ of this circle of people who see the potential of the holoviz stack and are wielding it at early stages. At the same time, I am happy to know that it is starting to get the attention it deserves and will spread to the masses over time.

The way you cringe at code full of assert statements is exactly how I cringe at my own code that I wrote before introducing param into my workflow.

Thank you very much to you and your team for such great contributions. I think you will secure the credit you deserve far beyond what a simple impactful publication would do in the long run. I’ll do my best to start contributing where I can since I gain so much value from these libraries. Cheers

2 Likes