Every repository on SrcLog displays two financial estimates: the cost to build it and its market value. Here is exactly how we calculate them.
These are estimates for educational and illustrative purposes only. They are not financial advice, not a formal appraisal, and should not be used for investment or acquisition decisions.
We compute two metrics for each repository:
Both are computed entirely from publicly available GitHub metadata: repository size, primary language, creation date, stars, forks, watchers, and last push date.
Based on a modified COCOMO II (COnstructive COst MOdel) approach, adapted for open-source repositories where only aggregate metadata is available.
GitHub reports repository size in kilobytes (all files combined). We apply two factors to isolate source code:
| Language group | Code density | Lines / KB |
|---|---|---|
| C, C++, Go, Rust, Swift | 55 % | 22 |
| Java, Kotlin, Scala, C# | 55 % | 20 |
| JavaScript, TypeScript | 55 % | 28 |
| Python, Ruby, Elixir | 55 % | 35 |
| PHP, Perl, Lua | 55 % | 30 |
| HTML, CSS, SCSS | 45 % | 40 |
| Jupyter Notebook, R Markdown | 20 % | 12 |
| Shell, Bash | 55 % | 25 |
| Other / unknown | 55 % | 28 |
Each language has a characteristic productivity rate (hours per 1 000 lines), reflecting tooling maturity, verbosity, and cognitive load. A non-linear complexity overhead is then applied — larger codebases require disproportionately more effort (Brooks' Law).
| Language | Hours / KLOC |
|---|---|
| Assembly | 320 |
| C | 260 |
| C++ | 230 |
| Rust | 210 |
| Java / Kotlin / Scala | 160 |
| C# / Swift | 150 |
| Go | 140 |
| JavaScript / TypeScript | 105 |
| Python | 85 |
| Ruby / Elixir / Clojure | 75 |
| PHP / Perl / Lua | 80 |
| Shell / Bash | 90 |
| HTML / CSS / SCSS | 55 |
| Jupyter Notebook / R | 70 |
| Other | 120 |
| Codebase size | Complexity × |
|---|---|
| < 10 K LOC | 1.00 |
| 10 K – 100 K LOC | 1.12 |
| 100 K – 500 K LOC | 1.28 |
| 500 K – 2 M LOC | 1.48 |
| > 2 M LOC | 1.70 |
We use $75 / hour as the blended global rate for a mid-level software developer (a reasonable average across North America, Western Europe, and remote workers).
The 0.15 factor represents a 15 % annual maintenance overhead — the industry-standard estimate for keeping software alive (bug fixes, dependency updates, documentation, security patches). This accumulates each year the project has existed.
Market value reflects what the community actually thinks of a project, not just how much it cost to write. A small but universally-loved tool may be worth far more than a sprawling unmaintained codebase.
We use logarithmic scaling because the difference in value between 100 and 1 000 stars is not linear. The weights reflect that stars are a primary signal, forks indicate active adoption, and watchers indicate passive interest.
| Stars | Approx. multiplier |
|---|---|
| 0 – 10 | ~1× |
| 100 | ~7× |
| 1 000 | ~10× |
| 10 000 | ~13× |
| 100 000+ | ~16× |
A project that has not been touched in years carries more risk — a discount is applied. Actively maintained projects receive a premium.
| Last push | Multiplier |
|---|---|
| ≤ 7 days ago | 1.3× |
| ≤ 30 days | 1.2× |
| ≤ 90 days | 1.1× |
| ≤ 180 days | 1.0× |
| ≤ 1 year | 0.9× |
| ≤ 2 years | 0.75× |
| > 2 years | 0.6× |
Imagine a TypeScript project with:
Methodology v1.0 · Published by SrcLog.com