LinuxQuestions.org
Review your favorite Linux distribution.
Home Forums Tutorials Articles Register
Go Back   LinuxQuestions.org > Forums > Linux Forums > Linux - Distributions > Slackware
User Name
Password
Slackware This Forum is for the discussion of Slackware Linux.

Notices


Reply
  Search this Thread
Old 11-23-2020, 09:57 PM   #1
Pithium
Member
 
Registered: Jul 2014
Location: Far side of the Oregon Trail
Distribution: Slackware64 15.0
Posts: 501

Rep: Reputation: 583Reputation: 583Reputation: 583Reputation: 583Reputation: 583Reputation: 583
slackware activity By The Numbers


Hi All,

I've been working on a fun project that I'd like to share with the class. Something I've run into issues with as a slackware user is an effective way to communicate the "aliveness" of the project. For users new to Slackware or Linux in general it can be difficult to simply refer them to the changelog. You also need to aggregate all active changelogs, not just -current.

So...I decided to write some python scripts to parse and analyze the data contained in all slackware changelogs (-current and older versions) in order to provide myself with numerical talking points. The scripts are still fragile, however I have reached the point where I'm semi confident in the numbers I've got and would like to share that info with everyone. If you got this far and are interested in slackware package statistics, read on!


I'm counting the number of changes PV makes to slackware on a per package basis. Every time Pat adds, removes, upgrades, or otherwise changes a package he notes this in the changelog and datestamps it. I parse this into an sqlite file and then query that on the basis of version, timeframe, etc. As an example, here is a raw count of all changes made to a given slackware version from 12.0 onwards..
Code:
12	  1783
12.1      1410
12.2      964
13	  3909
13.1      3451
13.37     4134
14	  5237
14.1      7395
14.2      8867
-current  26514
( this is based on the changelogs as of November 23, 2020 )

For those of you who are more visual, I've attached a graph of the same data made in libreoffice. You could say that these numbers represent Pat's workload in totality, since all of these updates go through him at some point in slackware's process. I plan to release a more comprehensive analysis of slackware dev activity once I'm more confident in my parsing scripts. The general idea is to have a way to "advertise" the work being done in a simple and factual way.

If anyone has any thoughts let me know. In particular if there are any specific trends you guys would like to look at I'm looking for ideas.
Attached Thumbnails
Click image for larger version

Name:	slackware-changes-version.png
Views:	179
Size:	20.9 KB
ID:	34651  
 
Old 11-24-2020, 12:25 AM   #2
upnort
Senior Member
 
Registered: Oct 2014
Distribution: Slackware
Posts: 1,893

Rep: Reputation: 1161Reputation: 1161Reputation: 1161Reputation: 1161Reputation: 1161Reputation: 1161Reputation: 1161Reputation: 1161Reputation: 1161
Interesting! I think somehow the time between releases should be considered too.
 
1 members found this post helpful.
Old 11-24-2020, 01:00 AM   #3
chrisretusn
Senior Member
 
Registered: Dec 2005
Location: Philippines
Distribution: Slackware64-current
Posts: 2,971

Rep: Reputation: 1548Reputation: 1548Reputation: 1548Reputation: 1548Reputation: 1548Reputation: 1548Reputation: 1548Reputation: 1548Reputation: 1548Reputation: 1548Reputation: 1548
Quote:
Originally Posted by upnort View Post
Interesting! I think somehow the time between releases should be considered too.
Agree and the graph should be normalized.
 
Old 11-24-2020, 03:22 AM   #4
igadoter
Senior Member
 
Registered: Sep 2006
Location: wroclaw, poland
Distribution: many, primary Slackware
Posts: 2,717
Blog Entries: 1

Rep: Reputation: 625Reputation: 625Reputation: 625Reputation: 625Reputation: 625Reputation: 625
For me -current has not much sense. I mean -current is always -current from beginning of time. How old is -current? These numbers as well may reflect changes in upstream. 12.2 was last Slackware with KDE 3.5. I think more interesting would be follow lifetime of package. I mean those which are beyond a/ and required. Say in upstream software is long dead - but still exists in Slackware. Numbers may reflect maintainer activity or peak in stability - I always considered 12.2 as one of most solid release. But 13.0 was first with KDE 4.0. Just thinking about is painful.
 
1 members found this post helpful.
Old 11-24-2020, 04:57 AM   #5
FTIO
Member
 
Registered: Mar 2015
Location: Las Vegas, NV
Distribution: Slackware 15.0 x64, Slackware Live 15.0 x64
Posts: 618

Rep: Reputation: 361Reputation: 361Reputation: 361Reputation: 361
I would imagine any big jumps in differences of numbers would mean some kind of huge change in a piece of software somewhere...such as KDE4 to KDE5 would be *huge* (and I think that shows in the numbers somehow there), or Python 2 to Python 3, use ALSA again or continue with <shudder> pulseaudio or figure out a way to offer either as a choice, X or Wayland, etc, etc. Would things like this skew anything anyhow with the numbers?
 
Old 11-24-2020, 05:05 AM   #6
FTIO
Member
 
Registered: Mar 2015
Location: Las Vegas, NV
Distribution: Slackware 15.0 x64, Slackware Live 15.0 x64
Posts: 618

Rep: Reputation: 361Reputation: 361Reputation: 361Reputation: 361
Quote:
Originally Posted by igadoter View Post
For me -current has not much sense. I mean -current is always -current from beginning of time. How old is -current? These numbers as well may reflect changes in upstream. 12.2 was last Slackware with KDE 3.5. I think more interesting would be follow lifetime of package. I mean those which are beyond a/ and required. Say in upstream software is long dead - but still exists in Slackware. Numbers may reflect maintainer activity or peak in stability - I always considered 12.2 as one of most solid release. But 13.0 was first with KDE 4.0. Just thinking about is painful.
I still have the CD's I burned after downloading - via a nice, speedy landline (took forever!! lol) - of one of the 12's. I sure do miss KDE3. It was fast and 'just worked', and looked better too IMHO. I can't honestly say though if it ran better/longer/more trouble free than KDE4 on the 13's or my 14.1 x86 or 14.2 x86_64. I *am* currently starting to have freeze-ups the last week or so on the 14.2, but I'm betting on it being the SSD starting to take a dive.
 
Old 11-24-2020, 08:39 AM   #7
drumz
Member
 
Registered: Apr 2005
Location: Oklahoma, USA
Distribution: Slackware
Posts: 905

Rep: Reputation: 694Reputation: 694Reputation: 694Reputation: 694Reputation: 694Reputation: 694
I think separate tallies for "Added", "Removed", "Upgraded", and "Rebuilt" would be interesting, as well as what you already have (changed = added + removed + upgraded + rebuilt).

Also I like the idea of normalizing the data with respect to time. Maybe changes/week would give "nice" numbers? I think changes/day would give numbers too small and abstract.
 
Old 11-24-2020, 11:03 AM   #8
bassmadrigal
LQ Guru
 
Registered: Nov 2003
Location: West Jordan, UT, USA
Distribution: Slackware
Posts: 8,792

Rep: Reputation: 6656Reputation: 6656Reputation: 6656Reputation: 6656Reputation: 6656Reputation: 6656Reputation: 6656Reputation: 6656Reputation: 6656Reputation: 6656Reputation: 6656
What terms were you searching for to get your numbers? Because I used grep and wc to count all the entries of "Upgraded. Added. Removed. Rebuilt." against -current's changelog and I got 13132 changes.

Code:
jbhansen@craven-moorhead:~$ head -n1 /share/gothrough/slackware-mirrors/slackware64-current/ChangeLog.txt        
Mon Nov 23 21:29:14 UTC 2020
jbhansen@craven-moorhead:~$ grep -e Upgraded\\. -e Added\\. -e Removed\\. -e Rebuilt\\. /share/gothrough/slackware-mirrors/slackware64-current/ChangeLog.txt | wc -l
13132
jbhansen@craven-moorhead:~$ grep Upgraded\\. /share/gothrough/slackware-mirrors/slackware64-current/ChangeLog.txt | wc -l
8063
jbhansen@craven-moorhead:~$ grep Added\\. /share/gothrough/slackware-mirrors/slackware64-current/ChangeLog.txt | wc -l
557
jbhansen@craven-moorhead:~$ grep Removed\\. /share/gothrough/slackware-mirrors/slackware64-current/ChangeLog.txt | wc -l
111
jbhansen@craven-moorhead:~$ grep Rebuilt\\. /share/gothrough/slackware-mirrors/slackware64-current/ChangeLog.txt | wc -l
4401
If my number is accurate and you want to figure out how many packages per day were accomplished on average, you can do that with the following command (replacing the two locations to the changelog to where it is on your system). I imagine this can probably be simplified, but it takes the count from the changelog I used above, and then divides that by the total number of days since the changelog was started (takes today in epoch form (number of seconds), and then takes the date of the first changelog entry in epoch form and subtracts the latter from the former, and then divides the resultant number of seconds by 60 seconds in a minute, 60 minutes in an hour, and 24 hours in a day to get the total number of days).

Code:
jbhansen@craven-moorhead:~$ echo $(grep -e Upgraded\\. -e Added\\. -e Removed\\. -e Rebuilt\\. /share/gothrough/slackware-mirrors/slackware64-current/ChangeLog.txt | wc -l) / $(( (($(date '+%s') - $(date -d "$(grep -a1 "+--" /share/gothrough/slackware-mirrors/slackware64-current/ChangeLog.txt | tail -n1)" '+%s') ) / (60*60*24)) )) | bc -l | xargs printf "%.2f packages per day\n"
8.17 packages per day
We have to do a slight change for 14.2's calculation due to it being in maintenance mode and we don't want to count patches after it was released, just the development timeline.

Code:
jbhansen@craven-moorhead:~$ echo $(grep -e Upgraded\\. -e Added\\. -e Removed\\. -e Rebuilt\\. /share/gothrough/slackware-mirrors/slackware64-14.2/ChangeLog.txt | wc -l) / $(( (($(date -d "$(grep -B1 "14.2 x86_64" /share/gothrough/slackware-mirrors/slackware64-14.2/ChangeLog.txt | head -n1)" '+%s') - $(date -d "$(grep -A1 "+--" /share/gothrough/slackware-mirrors/slackware64-14.2/ChangeLog.txt | tail -n1)" '+%s') ) / (60*60*24)) )) | bc -l | xargs printf "%.2f packages per day\n"
4.50 packages per day
Keep in mind, -current has had a mass rebuild, and "Rebuilt." comprises of about 1/3 of the entries. If we remove "Rebuilt." entries, then the number of packages per day goes down to 5.43 (which is still higher than 14.2).

Last edited by bassmadrigal; 11-24-2020 at 11:05 AM.
 
1 members found this post helpful.
Old 11-24-2020, 12:03 PM   #9
0XBF
Member
 
Registered: Nov 2018
Distribution: Slackware
Posts: 765

Rep: Reputation: 864Reputation: 864Reputation: 864Reputation: 864Reputation: 864Reputation: 864Reputation: 864
I think the information may be more meaningful if its averaged over some time, like bass was doing with per day. If the x axis of the graph was months or years, since releases are different amounts of time between them. You could still overlay the releases over that to get some context.

Neat idea, too bad it can't predict the release of 15
 
Old 11-24-2020, 12:41 PM   #10
Pithium
Member
 
Registered: Jul 2014
Location: Far side of the Oregon Trail
Distribution: Slackware64 15.0
Posts: 501

Original Poster
Rep: Reputation: 583Reputation: 583Reputation: 583Reputation: 583Reputation: 583Reputation: 583
Quote:
Originally Posted by drumz View Post
I think separate tallies for "Added", "Removed", "Upgraded", and "Rebuilt" would be interesting, as well as what you already have (changed = added + removed + upgraded + rebuilt).

Also I like the idea of normalizing the data with respect to time. Maybe changes/week would give "nice" numbers? I think changes/day would give numbers too small and abstract.

I'm actually already recording that. Initially I ran into the same problem bassmadrigal did when searching for certain keywords. What I do is look for instances of the pattern $PKG: $REASON and try to use whatever Pat put into the log rather than decide for myself what it should be. Problem was, this has slowly changed over time so I can't actually rely on $REASON to be consistent from 2007 to now. This is largely the reason why I'm not going back further than 12.0.


Every update in the changelog is broken down into these datapoints:
Code:
arch,version,timestamp,patched,upgraded,updated,moved,added,removed,fixed,rebuilt,other
So I can query this and pull the number of upgrades for -current.
Code:
9095 for x86
8040 for x86_64
17135 upgrades total

But if we look at pkgs added we get:
Code:
536 x86
528 x86_64
1064 total
But every once and a while Pat decides to throw a curve ball and use the word "Updated". I'm not entirely sure what constitutes an 'update' versus an 'upgrade' and it only came up 80 times since the start of 12.0. This is also an area where my code might be breaking so it's possible things aren't being counted as intended.
Code:
2 x86
2 x86_64
4 total

Attached another graph of the change "types". My next step is to start breaking all this down per timeframe since lifetime numbers are not the most useful. I'm thinking monthly would be good but just to poke fun at the business management types I might go for quarterly reports
Attached Thumbnails
Click image for larger version

Name:	changes-by-type.png
Views:	69
Size:	21.8 KB
ID:	34667  
 
Old 11-24-2020, 02:44 PM   #11
bassmadrigal
LQ Guru
 
Registered: Nov 2003
Location: West Jordan, UT, USA
Distribution: Slackware
Posts: 8,792

Rep: Reputation: 6656Reputation: 6656Reputation: 6656Reputation: 6656Reputation: 6656Reputation: 6656Reputation: 6656Reputation: 6656Reputation: 6656Reputation: 6656Reputation: 6656
Now I understand you're counting both 32 and 64bit development, which I didn't think about (and will skew the numbers from 12.2 and lower as those versions were only developed for 32bit). I'd be curious if your code provides the same number of changes for the 64bit version of -current as mine does (13,134 changes).

Based on your comments, I found there were 2 entries of "Updated." referring to SlackBuilds being updated without providing upgraded packages that weren't accounted for in my original command. I also wasn't sure this accounted for everything, so I revamped my test:

Code:
 grep -e ^a/ -e ^ap/ -e ^d/ -e ^e/ -e ^f/ -e ^k/ -e ^kde/ -e ^kdei/ -e ^l/ -e ^n/ -e ^t/ -e ^tcl/ -e ^x/ -e ^xap/ -e ^xfce/ -e ^y/ -e ^testing/ -e ^extra/ -e ^isolinux/ -e ^kernels/ -e ^pasture/ -e ^usb-pxe-installers/  /location/to/slackware64-current/ChangeLog.txt | cut -d' ' -f3 | sort | uniq -c
This gives:

Code:
    557 Added.
   4401 Rebuilt.
    111 Removed.
      2 Updated.
   8063 Upgraded.
This could probably be automated further to build the package sets automatically based on the folder structure of the slackware{,64} directory on the installation media to account for any changes in set names, but you'd need to have the full directory available and I'm too lazy to code it.

We can inverse this to find out how many updates each package set saw (256 kernel entries and I didn't realize there weren't any updates for f/ or kdei/ -- testing/ saw an outstanding 1300+ updates, mainly due to PAM and vtown being in there for a bit).

Code:
grep -e Added\\. -e Rebuilt\\. -e Removed\\. -e Upgraded\\. -e Updated\\.  /share/gothrough/slackware-mirrors/slackware64-current/ChangeLog.txt | cut -d/ -f1 | sort | uniq -c
Code:
   1872 a
    836 ap
   1335 d
     18 e
    195 extra
    279 isolinux
    264 k
    337 kde
    265 kernels
   2578 l
   1476 n
      5 pasture
     34 t
     23 tcl
   1306 testing
    279 usb-and-pxe-installers
   1289 x
    594 xap
    147 xfce
      2 y
 
1 members found this post helpful.
Old 11-24-2020, 05:43 PM   #12
Pithium
Member
 
Registered: Jul 2014
Location: Far side of the Oregon Trail
Distribution: Slackware64 15.0
Posts: 501

Original Poster
Rep: Reputation: 583Reputation: 583Reputation: 583Reputation: 583Reputation: 583Reputation: 583
Looks like we are getting the same results after I re-downloaded all the changelogs. Also have some of the basic groundwork down for trending changes. A running total for each month of 2020 (so far) for all changes made to the Slackware tree. Still need to automate it but that's just time on my end. You can see that there was a massive spike where vtown was added.


All I have to do now is set it up so I can specify a given timeframe, and it returns the data for that timeframe!
Attached Thumbnails
Click image for larger version

Name:	monthly-activity-trends.png
Views:	102
Size:	43.5 KB
ID:	34673  
 
Old 01-22-2021, 12:28 PM   #13
Pithium
Member
 
Registered: Jul 2014
Location: Far side of the Oregon Trail
Distribution: Slackware64 15.0
Posts: 501

Original Poster
Rep: Reputation: 583Reputation: 583Reputation: 583Reputation: 583Reputation: 583Reputation: 583
Hey all, don't mean to resurrect an old thread but if anyone was interested I've made significant progress on the charting. Moved to gnuplot for graphing and cleaned some other stuff up in how I'm looking at the data.

I'm also now comparing package changes to the overall size of the distro, over time. future updates will go on my blog since I can't embed images here. Attached is summary of all updates since 12.0 till now.
Attached Thumbnails
Click image for larger version

Name:	All_Slackware_Updates.png
Views:	115
Size:	84.1 KB
ID:	35330  
 
5 members found this post helpful.
Old 01-22-2021, 01:15 PM   #14
astrogeek
Moderator
 
Registered: Oct 2008
Distribution: Slackware [64]-X.{0|1|2|37|-current} ::12<=X<=15, FreeBSD_12{.0|.1}
Posts: 6,264
Blog Entries: 24

Rep: Reputation: 4194Reputation: 4194Reputation: 4194Reputation: 4194Reputation: 4194Reputation: 4194Reputation: 4194Reputation: 4194Reputation: 4194Reputation: 4194Reputation: 4194
Now that is more interesting that recent pandemic graphs I have seen - it has context - thanks!

The relative continuity of trend of the solid blue line since 2016 speaks volumes!

Last edited by astrogeek; 01-22-2021 at 01:19 PM.
 
Old 01-22-2021, 01:26 PM   #15
Pithium
Member
 
Registered: Jul 2014
Location: Far side of the Oregon Trail
Distribution: Slackware64 15.0
Posts: 501

Original Poster
Rep: Reputation: 583Reputation: 583Reputation: 583Reputation: 583Reputation: 583Reputation: 583
It's pretty clear that while the gap between stable releases has grown, so has the amount of monthly changelog activity.
 
  


Reply



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is Off
HTML code is Off



Similar Threads
Thread Thread Starter Forum Replies Last Post
how to find the 1 number out of 10 numbers, if I have taken 9 numbers from my brain ? rpittala Linux - Newbie 4 01-30-2012 05:40 PM
[SOLVED] find the total of numbers that are higher than x in a text file with numbers (using awk??) Mike_V Programming 12 11-24-2010 09:51 AM
manipulating 64 bit numbers using 32 bit numbers. rajesh_b Programming 3 09-15-2006 09:03 AM
sequence of numbers, how to extract which numbers are missing jonlake Programming 13 06-26-2006 03:28 AM
Adding numbers, break on non-numbers... Cruger Programming 1 03-22-2004 09:18 AM

LinuxQuestions.org > Forums > Linux Forums > Linux - Distributions > Slackware

All times are GMT -5. The time now is 05:19 AM.

Main Menu
Advertisement
My LQ
Write for LQ
LinuxQuestions.org is looking for people interested in writing Editorials, Articles, Reviews, and more. If you'd like to contribute content, let us know.
Main Menu
Syndicate
RSS1  Latest Threads
RSS1  LQ News
Twitter: @linuxquestions
Open Source Consulting | Domain Registration