Obsoleted parts and fritzing updates

In a discussion of schematic exports in another thread I became aware that a part I use in almost all my sketches is ‘obsolete’. The ‘small’ variant of the rotary pot. Now, I’d dearly like to use the new variant, but only for the schematic. The footprint varies enough that I’d have to redo all my sketches

I am now in a position that I don’t know if I can continue using fritzing! If this part is obsolete it’s likely to disappear. To get an improvement I’d have to spend many hours redoing sketches.

If I was ‘only’ using this for hobby work, I probably wouldn’t care. But I actually do commercial work. I only use fritzing since I want to share all my projects (all gplv3) in a way that makes it possible for others to use. Which means a bread board view is really helpful.

This looks like an intractable problem.

Just a note about the actual ‘new’ footprint. The silkscreen, though closer to depicting the body of a small pot like an rv09 or rk series alpha is still not correct. The ‘body’ of none of the pots that might qualify is directly over the pads. There is always space between the edge of the pads and the body of the pot. It also has silkscreen over pads which is not good since pads with printing on them are harder to solder.

EDIT: here a photo of a common rv09 ( RK097N from alpha are almost identical in the overhang).

No, it is obsolete but will likely stay as obsolete to not break existing parts.

No, only a difficult one. The obvious (if not particularly easy) answer is to create a new custom part that does what you want. Pcb footprints are relatively (at least for me!) easy to modify. The pot parts are less so because they are mostly bendable leg parts which are more difficult to change but they are changeable if you spend the time to know learn how to change them. There is nothing magic (or at least not much magic) about changing them.

Peter

Ok, well, that deprecation doesn’t mean removal is at least a path forward for now.

Well, that doesn’t get me around the obvious labor of changing a lot of layouts. Every single view in every sketch would have to be reworked. And I have 3 new ones on the bench. It will cost me weeks changing every pot, moving and rewiring. All of these projects regularly have PCBs produced, so that means test runs. All of which I can ill afford.

It might make more sense for me to fork the code and pack a modified part in place for the old part in the obsolete directory. I do QT application development for Sailfish OS and have compiled fritzing before so, hmmmm.

I’m willing to take a crack (again) at editing parts, but my last efforts failed even though they were trivial. I’ll read through your guide (again).

The pots are particularly difficult (and not covered in my tutorial) because they are using internal code triggered by undocumented parts of the moduleId to trigger internal code.

Peter

We use obsoletion to hide parts, and offer a way to migrate existing sketches. Migrating the obsolete parts is optional, you can still load the sketch with the old part. It will not be removed from Fritzing. Even if it was, it would still be possible to export it from the old version and continue using it in later Fritzing versions. If a part is not contained in the core parts, it will be bundled into your sketch when saving the sketch. However, since we use obsoletion to fix bugs on parts, it is likely that the part contains some more or less subtle problem, and you probably welcome the new version.

The obsoletion mechanism in Fritzing is more intended as a help to migrate existing sketches to new versions of parts. If a part is simply not available or recommended anymore, we would just unlist it from the bins, and it would only be shown in the Parts Search from then on.

Improvements to this mechanism that we are thinking about:

  • Fritzing version check for parts: Future versions of Fritzing will warn when loading a part that was made for an even more distant future version. Eg. Loading a part that uses Fritzing 2.0 features (whatever that will be) in Fritzing 1.0.5 will give a warning. This way we will be able to improve the Fritzing part format.

  • Fritzing version check for sketches: This is even more important. Loading a Fritzing 1.0.4 sketch in older version (e.g. 0.9.6) will probably work, but results will get more unreliable as we are adding features. Therefore, we plan to show a warning here, too.

  • Obsoleting: Right now, Fritzing will pester you about obsolete parts each time you load the sketch. Probably users would want to silence this after deciding to continue with the old parts. We haven’t yet heard this complaint yet, however.

Well, if a sketch contains 9 or 10 pots and a number of 16 pin ics and supporting hardware, migrating is tantamount to rebuilding from scratch.

In any case, the only way I can see forward that won’t break my budget is to either hack correct parts into a build (IF I can even make the parts) OR implement a search and replace for parts that have the same number of pins. That latter option is probably a great deal of work :slight_smile:

If your only concern is the obsolete parts message you can export the existing part change its moduleId and reload it. You do then have to do a delete minus on the obsolete parts and replace them in each sketch with the new one though (which is still a lot of work.)

Peter

If only it were possible to do a select and replace for pin number identical parts. I’m just trying to imagine it, but will have to look at the object model in the code. In theory, if you simply retain, say, rotation, loc x/y and pin connections in a replace operation, what could go wrong … :wink:

I’ll have a look at source tomorrow. Maybe I’ll have an idea.

Is that not just a delete? or is that a special operation?

A standard part delete also deletes the attached traces. Delete minus leaves the traces, so you can insert a new part, then (manually) reattach the traces without needing to route again.

1 Like

delete minus deletes the part but leaves the wires.

Here it has deleted the part but left the wires. You can now load a new part and drag the wires to remake the connections (which can be a pain in the ass!) You need to do that in all three views though.

Peter

1 Like

Ok, I see it. I think I might be better off looking at the source code :slight_smile: never drag and drop a problem if you can fix the code :slight_smile:

I was just up on the repo on github and don’t see CI or a build system in the background. I use github actions and obs (opensuse multi-platform build system). I saw that suse has File fritzing.spec of Package fritzing - openSUSE Build Service so I could do my builds on an obs instance instead of just doing a local hacky build. But before I go there, I wonder if the maintainers have some other CI?

I’m not sure whyb the source code of the app is relevant to change some pots in a sketch.

As they said, obsolete means that the part had been improved in Fritzing and it is not recommended for new designs. You can replace the pots to the new one or leave them as they are. Obsolete parts will stay there forever and it does not mean that the manufacturers will stop producing them.

If you want to create a new version of the pot with the new schematic and the old footprint, it should be possible without too much effort. You could download the part repository and replace the footprint with the old one. After that go to Fritzing and recompile the database.

Another solution could be to create a new part: copy the icon, BB, sch and pcb svgs and the fpz file in a folder, modify the part id in the fpz file and compress all of them with zip and change the extension to fzpz. You should be able to import that file in your sketches

1 Like

Because changing the pots in multiple views in multiple sketches (12 sketches * 3 views) is a large number of hours. That’s not including making the part. Do you actually use fritzing? I use it a lot.

I’m looking at that variant after unpacking some files yesterday. I’m going to test it later today.

On the other hand, having a swap part function for like number of pin parts in fritzing is not a bad idea.

EDIT: Pleasant surprise. I just replaced all the <instance elements with the old /tmp/ mount points keeping only the modelIndex and it ‘just worked’

Just using this one line replacement swapped to the new part more or less as you would hope with minimal adjustments needed to the layouts.

<instance moduleIdRef="potentiometer_rotary_9mm_6_PotentiometerModuleID" modelIndex="86703022" path="/tmp/.mount_fritzioSuFj6/fritzing-parts/core/potentiometer_rotary_9mm_6.fzp">

Thank you all for discussing!