Skip to content

Instantly share code, notes, and snippets.

@pswu11
Last active May 15, 2020 15:54
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save pswu11/2ce293e2caad138e61290f9b23a5b6fa to your computer and use it in GitHub Desktop.
Save pswu11/2ce293e2caad138e61290f9b23a5b6fa to your computer and use it in GitHub Desktop.
# Jina Product Analysis
## 1. Jina Overview
### 1-1. Understand the project (UX Testing)
First of all, I started with getting an overview about Jina.
There are two main sources:
- the official website: https://jina.ai
- the github repositories: https://github.com/jina-ai
### 1-2. Website Go-trough First Impression (Self)
**Slogan: The cloud-native neural search framework for all kinds of data.**
From this sentence I could see that it's not about AI search algorithms, rather a framework that suits different deep-learning search algorithms. So it's like a modular framework to build a neural search engine.
I immediately wanted to look for documentation, but the "get started" button led me to Github repository already, great, there are all the links about this project already. So I followed the README.md to install jina first.
After that, the intro stated it's important to go through Jina 101 first. So I jumped to Jina 101 page. I started directly reading the content of Jina 101 (for the 1st time) but I don't understand all the terms here.
At this point, I only read the slogan on the main page. I asked myself, what's next?
SOOO, to get other opinions, I decided to talk to developers (most likely the target group of Jina).
### 1-3. Website Go-trough First Impression (Talked to 5 different Developers)
#### a. ML & Python Developer (PhD in Physics) in Germany
- First question: "what is **neural search**, I know neural architecture search, is that what neural search here means?"
- "The terms on the website are a bit fuzzy. Also, I cannot find **technical details** and **methods** in their documentation. I expect Neural Search is at least defined in the documentation / at best on the website."
- In 101, they define some terms, the focus is on "HOW" to run their software. But not "WHAT" it is about. It's assuming that people already have universal understanding of "Neural Search", which is not true.
#### b. Site Reliability Engineer (10+ years) in Germany
- First impression: Didn't bother to check website but went directly into the Github page and was very impressive
- After went through all the repos under jina-ai, he found the examples very loving, especially the flower search. Beautiful!
#### c. Software Developer (Junior, experienced in open-source project, Kubeflow contributer) in Taiwan
- Very technical but well-done documentation
- Since it's open-source, I would first look into their community activities and interactions with developers
- Checked through github PRs and issues
- It's important to know who leads the project, how the team decides the development direction (new features, new products etc.)
- Also, sure I would like to know more about their future plans to work with other open-source projects
#### d. Backend Engineer (5+ years of exp. Python + Security) in Germany
- First impression also don't understand what the project is doing. But went directly into codes and documentation to get a general feeling.
- Positive feedback
- Python formatting and documentation (for the code) can be further improved
- For this kind of project, user experience, how easy for it to be "ready for production" is important
#### e. Backend Engineer (Go + Python focused, 10+ years of exp. for enterprise) in Germany
- README.md is very written well.
- First impression: "I think they should go for module like Elasticsearch, it will be very probable" **This is the only person who reacts with Elastic Search immediately.** Then he said that he has quite some experience with Elastic Search already and can certainly see the value preposition.
## 2. Testing Jina
### 2-1. Installing Jina and testing hello-world
1. `pip install jina --user`
2. `jina hello-world`
3. HTML is generated automatically, great.
4. `jina hello-world --logserver` to test dashboard (failed --> issue to be created)
### 2-2. Testing Jina Examples
1. Went through the newbie tutorials until Dashboard. Still have no way to make Dashbaord work just immediately.
2. Since I haven't tried docker before. I skipped "From BERT-as-service to X-as-Service" at the moment.
3. I continued to Southpark-search example, however the indexing progress seemed to get stuck. **--> Already created an issue**
4. After checking around back and forth, I went back to read through 101 again (The 2nd time), now I feel like I understand more what these terms mean.
5. Watched the Jina webinar, to pick up more information that might be missing during my previous research.
6. The initial testing round is for now done and I have a good picture of the product and company.
## 3. Features / Suggestions from a PM + Business Perspective after this quick round
Things I like about Jina:
- hello-world demo case - a quick impression with demonstration! neat!
- Examples: different use cases with different data type, very concrete impression to use south-park subtitles and flowers as input data.
- Very detailed and visualized documentation, with nice graphs and gifs.
- When running hello-world demo, you can see the logs and some "hint" messages about what jina is doing now.
- Jina Dashboard: it's very good to visualize the pods in flow, especially for those who prefer GUI.
### 3-1. Jina
When proposing features, as PM, there will be personal feedback plus community feedback. There are some ideas I have thought of so far:
- Jina: Windows Compatibility (Community Slack, one example, should be discussed with the team depending on priority)
Regarding the developer-focused features: I cannot comment too deep on developer related features at this moment, however, I could already imagine some short-term improvements:
- Step 1: Jina - hello-world demo: (1) After the file is generate, give more step by step guides on the generated html file so people know where to explore further. (aka better on-boarding exp.) (2) app.py adding documentation in the codes and type-hints for first-time user or those who are not familiar with python language
- Step 2: Jina - dashboard integration: (1) To also smooth the developer on-boarding journey from jina-cli to dashboard (2) Some small UI/UX improvements. i.e. clicking settings save, with a message showing that it's saved successfully.
- Step 3: Jina: Built in cli command to initiate 3-4 standard search engine use cases (with pre-designed YAML files for indexing, querying, dashboard etc., as well as pre-written app.py. In this case, developers have very **short initial built time** but have a lot of **space to customize** at later stage.
**WHY?** When evaluating different development options (as PMs or developers), sometimes people have limited time and effort to invest in building search for their produt, and many developers don't necessarily have deep knowledge about deep learning. Also, performance and user experience are both very important, but sometimes the latter is the key to first acquire new users. In many projects, developers just want a fast and working solution, and then later they would improve and optimize it over time.
In general, it's important to have a structured way for the whole team - to decide the features / roadmaps (community requests? VS. matching existing and long-term roadmap?)
#### 3-2. Documentation Coherence
- Instruction on Github (README) and on documentation are not always coherent.-> A structured way to manage documentation
- Jina 101, adding some basic definition and project info-graphic of different elements into Jina 101, before getting started directly with how jina works.
**WHY?** I talked to five developers, only one with already more experience in elastic search directly see the purpose of Jina. Some people responded that they still don't know WHAT Jina is trying to do after browsing Jina 101.
#### 3-3. Website communication
- Adding the definition of "neural search" and basic architecture of Jina stack on the website
- Some small UI details
#### 3-5. Commercialized Product Lines (mid-term to long-term stage)
- Example: Transform the hello-world demo into simple & standard plug-in for Shopify / Wordpress etc. for the "end users", they might not be developers, rather just web designers or e-commerce shop owners. This is a way to collect more real-world feedback. Later on, Jina could add "paid version" with better customization capability for those who need more advanced search plug-in.
- One-stop solution would be the next stage of commercialization! The standard AI search products for 3-5 search use cases, focusing on how fast / easy for developers to get Jina's search solution into production and the peripherals & tools for enterprises.
--------------------------
## Interview Notes
with Han.
### Points
- Open-source believer
- Good understanding of AI Search Product
- Executor, **get it done** mindset
- Long-term mission: Managing the balance between open-source community and business goals (profits of commercial products)
- Ability to prioritize tasks, be pushy to make things happen, and adapt to fast changing market in AI related areas
### Small Task
1. Task: improvement of user on-boarding exp.
2. Time **(!!This is the point of improvement!!)**
3. Budget
3. Milestones
4. Evaluation -> How to validate the improvement (Quantitative metrics as primary approach)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment